Bagaimana cara menginstal file .deb 64-bit pada mesin 32-bit?


17

Saya memiliki Ubuntu 14,04. Saya baru-baru ini mengunduh Viber . File .deb Viber memiliki arsitektur 64-bit. Saya ingin menginstalnya di komputer saya, tetapi komputer saya hanya mendukung 32-bit.

Output dari menjalankan lscpuadalah sebagai berikut:

Architecture: i686
CPU op-mode(s): 32-bit, 64-bit 
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1 
Core(s) per socket: 2 
Socket(s): 1 
Vendor ID: GenuineIntel 
CPU family: 6 
Model: 23 
Stepping: 10 
CPU MHz: 2800.000 
BogoMIPS: 5586.12 
Virtualization: VT-x 
L1d cache: 32K 
L1i cache: 32K 
L2 cache: 2048K

3
Bagaimana Anda bisa yakin itu tidak mendukung 64-bit? Jika Anda harus menjalankan program 64-bit, Anda harus menginstal OS 64-bit.
muru

Saya mendengar bahwa beberapa perangkat lunak melakukan pekerjaan itu ... Itulah yang saya minta
A Umar Mukthar

Anda harus menggunakan VM: askubuntu.com/questions/180761/…
muru

Apa output dari berjalan lscpudi Terminal?
αғsнιη

7
Ya, sistem anda adalah 64-bit mampu, dan Anda harus menginstal ulang pada kesempatan pertama, karena Anda akan mengalami masalah ini lagi dan itu akan lebih menyakitkan untuk menangani nanti.
Michael Hampton

Jawaban:


22

Asalkan perangkat keras Anda mendukung 64-bit, yang artinya:

Mode operasi CPU: 32-bit, 64-bit

dan paket disiapkan untuk menggunakan multiarch, yang juga benar:

 dpkg -I viber.deb
 new debian package, version 2.0. <--- here
 size 57046082 bytes: control archive=8024 bytes.
       0 bytes,     0 lines      0                    
    1210 bytes,    29 lines      control              
    9475 bytes,    33 lines   *  copyright            
    7404 bytes,    85 lines      md5sums              
      39 bytes,     2 lines   *  postinst             #!/bin/bash
     800 bytes,    35 lines   *  preinst              #!/bin/bash
     500 bytes,    24 lines   *  prerm                #!/bin/bash
 Package: viber
 Version: 4.2.2.6
 Section: non-free/net
 Priority: extra
 Architecture: amd64 <---- and here

Anda bisa menginstal pustaka dan binari 64-bit yang diperlukan yang merupakan ketergantungan paket (yang tidak ada, lebih lanjut tentang itu nanti) yang Anda perlukan untuk menjalankan aplikasi, dengan dampak kinerja virtual nol. Dalam kasus saya, saya baru saja menginstal paket dengan baik:

$ sudo dpkg --add-architecture amd64
## adding 64-bits architecture package, in my system I didn't need to
## but it's likely you have
$ sudo apt-get update # this downloads the package list for amd64 arch
$ sudo dpkg -i viber.deb
Selecting previously unselected package viber.
(Reading database ... 268703 files and directories currently installed.)
Preparing to unpack viber.deb ...
Unpacking viber (4.2.2.6) ...
Setting up viber (4.2.2.6) ...
Processing triggers for hicolor-icon-theme (0.13-1) ...
Processing triggers for gnome-menus (3.13.3-1) ...
Processing triggers for mime-support (3.56) ...
Processing triggers for desktop-file-utils (0.22-1) ...

Dan kemudian mulai mengalami masalah ...

Manajer paket memutuskan bahwa mereka tidak boleh membuat daftar ketergantungan untuk paket mereka,

 Installed-Size: 141336
 Conflicts: Viber (<< 4.2.2.6)
 Replaces: Viber (<< 4.2.2.6)
 Maintainer: Viber Media Inc <support@viber.com>

yang sebenarnya mereka butuhkan:

ldd /opt/viber/Viber | grep 'not found'
    libXcomposite.so.1 => not found
    libxslt.so.1 => not found
    libxml2.so.2 => not found
    libgstreamer-0.10.so.0 => not found
    libgstapp-0.10.so.0 => not found
    libgstbase-0.10.so.0 => not found
    libgstinterfaces-0.10.so.0 => not found
    libgstpbutils-0.10.so.0 => not found
    libgstvideo-0.10.so.0 => not found
    libsqlite3.so.0 => not found

jadi Anda harus menemukan dan menginstal perpustakaan yang hilang secara manual! Ini mudah jika Anda tahu alat yang benar. apt-fileberguna di sini, juga fungsi http://packages.ubuntu.com "Cari isi paket" juga baik-baik saja. Tetapi saya pergi ke depan dan mencari mereka:

File-file ini sudah diinstal di sistem saya, Anda hanya perlu menyalin nama paket, yang sebelum tanda titik dua yang berakhir dengan amd64. Anda harus menyalin nama paket sebagaimana adanya:

dpkg -S $(ldd /opt/viber/Viber | awk '{print $3}' | grep -vP 'not|viber')
libc6:amd64: /lib/x86_64-linux-gnu/libpthread.so.0
libc6:amd64: /lib/x86_64-linux-gnu/libdl.so.2
libc6:amd64: /lib/x86_64-linux-gnu/librt.so.1
libstdc++6:amd64: /usr/lib/x86_64-linux-gnu/libstdc++.so.6
libc6:amd64: /lib/x86_64-linux-gnu/libm.so.6
libgcc1:amd64: /lib/x86_64-linux-gnu/libgcc_s.so.1
libc6:amd64: /lib/x86_64-linux-gnu/libc.so.6
libx11-6:amd64: /usr/lib/x86_64-linux-gnu/libX11.so.6
libxext6:amd64: /usr/lib/x86_64-linux-gnu/libXext.so.6
zlib1g:amd64: /lib/x86_64-linux-gnu/libz.so.1
libgl1-mesa-glx:amd64: /usr/lib/x86_64-linux-gnu/libGL.so.1
libxrender1:amd64: /usr/lib/x86_64-linux-gnu/libXrender.so.1
libglib2.0-0:amd64: /lib/x86_64-linux-gnu/libglib-2.0.so.0
libglib2.0-0:amd64: /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
libxcb1:amd64: /usr/lib/x86_64-linux-gnu/libxcb.so.1
libglapi-mesa:amd64: /usr/lib/x86_64-linux-gnu/libglapi.so.0
libxdamage1:amd64: /usr/lib/x86_64-linux-gnu/libXdamage.so.1
libxfixes3:amd64: /usr/lib/x86_64-linux-gnu/libXfixes.so.3
libx11-xcb1:amd64: /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1
libxcb-glx0:amd64: /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0
libxcb-dri2-0:amd64: /usr/lib/x86_64-linux-gnu/libxcb-dri2.so.0
libxcb-dri3-0:amd64: /usr/lib/x86_64-linux-gnu/libxcb-dri3.so.0
libxcb-present0:amd64: /usr/lib/x86_64-linux-gnu/libxcb-present.so.0
libxcb-sync1:amd64: /usr/lib/x86_64-linux-gnu/libxcb-sync.so.1
libxshmfence1:amd64: /usr/lib/x86_64-linux-gnu/libxshmfence.so.1
libxxf86vm1:amd64: /usr/lib/x86_64-linux-gnu/libXxf86vm.so.1
libdrm2:amd64: /usr/lib/x86_64-linux-gnu/libdrm.so.2
libpcre3:amd64: /lib/x86_64-linux-gnu/libpcre.so.3
libffi6:amd64: /usr/lib/x86_64-linux-gnu/libffi.so.6
libxau6:amd64: /usr/lib/x86_64-linux-gnu/libXau.so.6
libxdmcp6:amd64: /usr/lib/x86_64-linux-gnu/libXdmcp.so.6

Ini saya tidak menginstalnya, yang saya peroleh dengan menggunakan ldd /opt/viber/Viber | grep 'not found' | awk '{printf "%s$\n", $1}' | apt-file search -x -a amd64 -f - | sed 's/\:/:amd64:/':

$ ldd /opt/viber/Viber | grep 'not found' | awk '{printf "%s$\n", $1}' | apt-file search -x -a amd64 -f - | sed 's/\:/:amd64:/'
libgstreamer-plugins-base0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstapp-0.10.so.0
libgstreamer-plugins-base0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstinterfaces-0.10.so.0
libgstreamer-plugins-base0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstpbutils-0.10.so.0
libgstreamer-plugins-base0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstvideo-0.10.so.0
libgstreamer0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstbase-0.10.so.0
libgstreamer0.10-0:amd64: /usr/lib/x86_64-linux-gnu/libgstreamer-0.10.so.0
libsqlite3-0:amd64: /usr/lib/x86_64-linux-gnu/libsqlite3.so.0
libxcomposite1:amd64: /usr/lib/x86_64-linux-gnu/libXcomposite.so.1
libxml2:amd64: /usr/lib/x86_64-linux-gnu/libxml2.so.2
libxslt1.1:amd64: /usr/lib/x86_64-linux-gnu/libxslt.so.1

apt-fileadalah penggoda untuk memberi saya paket 64-bit jadi saya harus lakukan sudo apt-file -a amd64 updateuntuk memaksanya agar memiliki daftar file 64-bit.

Sekarang, izinkan saya menjelaskan apa yang ada di atas:

  • ldd /path/to/binary: membaca biner dan memberi tahu Anda apa perpustakaan, simbol, dll yang diperlukan
  • dpkg -S: cari paket mana yang menyediakan file yang diinstal khusus.
  • awk, seddan grep: memodifikasi aliran teks untuk hanya memproses bagian-bagian yang menarik atau menampilkan hasil yang diinginkan.
  • |, $(...): yang pertama memungkinkan saya untuk mem-pipe output dari suatu perintah ke perintah yang lain, dan yang berikutnya memungkinkan saya untuk mengeksekusi / mengevaluasi suatu perintah sebelum perintah utama dijalankan.

TL; dr cukup instal paket-paket ini:

sudo dpkg --add-architecture amd64 ## adding 64-bits architecture package
sudo apt-get update
sudo apt-get install libgstreamer-plugins-base0.10-0:amd64 libgstreamer-plugins-base0.10-0:amd64 libgstreamer-plugins-base0.10-0:amd64 libgstreamer-plugins-base0.10-0:amd64 libgstreamer0.10-0:amd64 libgstreamer0.10-0:amd64 libsqlite3-0:amd64 libxcomposite1:amd64 libxml2:amd64 libxslt1.1:amd64 libc6:amd64 libdrm2:amd64 libffi6:amd64 libgcc1:amd64 libgl1-mesa-glx:amd64 libglapi-mesa:amd64 libglib2.0-0:amd64 libpcre3:amd64 libstdc++6:amd64 libx11-6:amd64 libx11-xcb1:amd64 libxau6:amd64 libxcb1:amd64 libxcb-dri2-0:amd64 libxcb-dri3-0:amd64 libxcb-glx0:amd64 libxcb-present0:amd64 libxcb-sync1:amd64 libxdamage1:amd64 libxdmcp6:amd64 libxext6:amd64 libxfixes3:amd64 libxrender1:amd64 libxshmfence1:amd64 libxxf86vm1:amd64 zlib1g:amd64

Anda juga perlu menginstal kernel 64-bit.


root @ umar: / home / umar / Desktop # sudo dpkg -i viber.deb dpkg: kesalahan pemrosesan arsip viber.deb (--install): arsitektur paket (amd64) tidak cocok dengan sistem (i386) Kesalahan terjadi saat memproses: viber.deb
A Umar Mukthar

@AUmarMukthar sudo dpkg --add-architecture amd64.
Braiam

Saya mencoba perintah Anda. Tidak ada kemajuan lebih lanjut
A Umar Mukthar

2
"Mungkin Anda perlu menginstal kernel 64-bit juga." - itu tidak mungkin, 100% pasti. Kernel 32bit tidak memiliki apa yang diperlukan untuk mengatur lingkungan proses 64.
Mat


11

Tidak mungkin untuk menginstal perangkat lunak yang hanya mendukung lengkungan 64 bit pada OS 32 bit sedangkan yang sebaliknya adalah benar. Untuk menginstal perangkat lunak 64 bit, Anda akan memerlukan perangkat keras yang mendukung 64 bit dan OS 64 bit yang berjalan di atasnya.

Juga saya ingin menyebutkan bahwa tidak mungkin untuk menginstal OS 64 Bit sebagai mesin Virtual pada perangkat keras yang hanya mendukung arsitektur 32 bit. Perangkat keras Anda harus mendukung arsitektur 64 Bit bersama dengan dukungan virtualisasi untuk membuat mesin virtual 64 Bit.


1
Anda dapat menginstal 64 bit vm pada mesin 32 bit seperti halnya Anda dapat menginstal salah satu arsitektur apa pun, lihat qemu misalnya. Namun perlu dicatat bahwa ini akan sangat lambat.
Vality

@ Vality Jawaban Anda sepertinya bagus. Bisakah Anda lebih meningkatkan jawabannya.
A Umar Mukthar

@AUmarMukthar saya yang berguna sama sekali? Jika masih kurang tolong beri komentar dan saya akan melihat apakah saya dapat memperbaikinya.
Vality

10

Saya harus mengatakan Anda tidak benar tentang itu

komputer saya hanya mendukung 32-bit

Menurut output menjalankan lscpuversi Ubuntu Anda yang diinstal adalah 32 bit sementara Sistem Anda dapat mendukung aplikasi 64 bit jika Anda ingin menginstal aplikasi 64 bit Anda harus menginstal 64 bit OS Ubuntu. lihat baris di bawah ini:

Architecture: i686              # <-- your kernel is 32 bit (32 bit Ubuntu)
CPU op-mode(s): 32-bit, 64-bit  # <-- your cpu can handle 32 or 64 bit instructions
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1 
Core(s) per socket: 2 
Socket(s): 1 
Vendor ID: GenuineIntel 
CPU family: 6 
Model: 23 
Stepping: 10 
CPU MHz: 2800.000 
BogoMIPS: 5586.12 
Virtualization: VT-x 
L1d cache: 32K 
L1i cache: 32K 
L2 cache: 2048K

Unduh dan instal 64 bit Ubuntu 14.04.1 dan kemudian instal Viber juga.


Itu benar jika saya melakukannya saya akan kehilangan aplikasi lain sejauh ini diinstal .. Jadi hanya saya sedang mencari solusi. Bagaimanapun terima kasih atas info Anda. +1 untuk upaya Anda
A Umar Mukthar

10

Anda dapat menginstal perangkat lunak 64 bit pada mesin yang dibangun dengan perangkat keras 32 bit dengan cara yang sama Anda dapat menjalankan katakanlah perangkat lunak ARM pada target x86, menggunakan terjemahan dinamis.

Pada dasarnya, sebuah perangkat lunak seperti qemu berada di antara program dan komputer Anda, melakukan terjemahan dari instruksi AMD64 yang diatur ke perangkat x86 (mungkin i686) (dengan kinerja yang sangat hebat diakui, yang dalam kasus Anda bisa jadi benar-benar dapat dihindari).

Karena Anda menggunakan ubuntu, Anda memiliki dokumentasi yang sangat baik tentang cara mengaturnya . Pada dasarnya Anda memiliki satu dari dua pilihan, Anda dapat menjalankan program dalam lingkungan VM 64 bit lengkap dengan kernelnya sendiri atau, apa yang saya pikir Anda inginkan di sini adalah visualisasi ruang-pengguna, ini menggunakan pemogokan (saya tidak berpikir itu adalah hal yang umum) disebut thunking hari ini tetapi lupa kata baru) untuk menerjemahkan panggilan sistem dari 64 bit ke 32 bit sehingga Anda dapat menggunakan kernel Anda sendiri.

Sekarang panduan ini menjelaskan hal ini lebih baik daripada saya, tetapi singkatnya Anda perlu menginstal paket qemu dan qemu-kvm-extras-static kemudian gunakan qemu-debootstrap untuk mengatur lingkungan dan perpustakaan untuk program 64 bit Anda. Maka Anda perlu menggunakan binfmt_misc dan interpreter qemu statis (qemu-arch-static, dalam kasus Anda mungkin x86_64, x64 atau AMF64) untuk menjalankan program Anda di dalam lingkungannya.

Perhatikan bahwa bagaimanapun, CPU Anda tampaknya mendukung instruksi 64 bit sehingga Anda dapat menginstal ubuntu 64 bit, Anda dapat tanpa emulasi menjalankan kode x86 pada mesin AMD64 dan jika Anda dapat melakukannya, mungkin lebih mudah, jika di sisi lain Anda ingin menemukan qemu dan dunia persaingan arsitektur (mungkin datang nanti jika Anda mendapatkan program yang dibangun untuk mengatakan ... ARM seperti sesuatu yang dibangun untuk telepon) Saya sarankan Anda teruskan tetapi waspadalah , kadang-kadang hal-hal yang sedikit mengutak-atik atau debugging sebelum mereka akan berfungsi dengan baik.


5
Virtualisasi "terjemahan dinamis" semacam ini akan sangat lambat . Dan karena dia memiliki sistem 64-bit di tempat pertama, akan lebih baik untuk menginstal OS 64-bit.
Michael Hampton

@MichaelHampton Saya tahu ini akan lambat dan memang mencatat bahwa, saya juga mencatat bahwa dia mungkin lebih baik dengan OS 64 bit, namun saya juga ingin memberikan jawaban yang akan menjawab pertanyaan yang diajukan.
Vality

Saya tidak berpikir "kinerja yang baik" hanya menjelaskan seberapa lambat itu akan terjadi. :)
Michael Hampton

@MichaelHampton Benar. Bahagia sekarang? ;)
Vality

Ya, sekarang aku menyukainya. :)
Michael Hampton


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.