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-file
berguna 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-file
adalah penggoda untuk memberi saya paket 64-bit jadi saya harus lakukan sudo apt-file -a amd64 update
untuk 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
, sed
dan 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.