如何在32位计算机上安装64位.deb文件?

我有Ubuntu 14.04。 我最近下载了Viber 。 Viber .deb文件具有64位体系结构。 我想在我的电脑上安装它,但我的电脑只支持32位。

运行lscpu的输出如下:

 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 

如果您的硬件支持64位,它可以:

CPU操作模式:32位, 64位

并且包准备使用multiarch,这也是正确的:

  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 

你可以安装必要的64位库和二进制文件,这些库和二进制文件是运行应用程序所需的软件包的依赖关系(之后是更多关于此的信息),虚拟零性能影响。 就我而言,我刚安装好包装:

 $ 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) ... 

然后开始遇到问题......

包管理器决定不应列出其包的任何依赖,

  Installed-Size: 141336 Conflicts: Viber (<< 4.2.2.6) Replaces: Viber (<< 4.2.2.6) Maintainer: Viber Media Inc  

他们实际需要的是:

 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 

所以你必须手动找到并安装库缺失 如果您知道正确的工具,这很容易。 apt-file在这里很方便, http://packages.ubuntu.comfunction“搜索包的内容”也很好。 但是我继续搜索它们:

这些文件已经安装在我的系统中,您只需要复制包名称,即以amd64结尾的冒号之前的名称。 您应该按原样复制包名:

 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 

这些我没有安装它们,我使用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:/' 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是一个给我64位软件包的挑逗,所以我不得不做sudo apt-file -a amd64 update来强制它拥有64位文件列表。

现在,让我解释一下上面的内容:

  • ldd /path/to/binary :读取二进制文件并告诉您所需的库,符号等。
  • dpkg -S :搜索哪些包提供特定的已安装文件。
  • awksedgrep :正在修改文本流以仅处理有趣的部分或显示所需的输出。
  • |$(...) :第一个允许我将命令的输出传递给另一个,后者允许我在执行主命令之前执行/评估命令。

TL; dr只需安装这些软件包:

 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 

您还需要安装64位内核。

在32位操作系统上安装仅支持64位arch的软件是不可能的,反之亦然。 为了安装64位软件,您需要一个支持64位的硬件和一个运行在它顶部的64位操作系统。

另外我想提一下,在仅支持32位架构的硬件上安装64位操作系统作为虚拟机是不可能的。 您的硬件应支持64位体系结构以及虚拟化支持,以便创建64位虚拟机。

我不得不说你不是真的

我的电脑支持32位

根据运行lscpu的输出你安装的Ubuntu版本是32位而你的系统可以支持64位应用程序如果要安装64位应用程序你必须安装64位的Ubuntu OS。 看到以下这一行:

 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 

下载并安装 64位Ubuntu 14.04.1,然后安装Viber 。

您可以在使用32位硬件构建的计算机上安装64位软件,就像使用动态转换在x86目标上运行ARM软件一样。

基本上,诸如qemu之类的软件位于程序和计算机之间,执行从AMD64指令集到x86(可能是i686)的转换(确实有非常严重的性能损失,在您的情况下可能是完全可以避免)。

鉴于您使用的是ubuntu,您可以获得有关如何设置它的优秀文档 。 基本上你有两种选择之一,你可以在一个完整的64位VM环境中使用自己的内核运行程序,或者我认为你想要的是用户空间可视化,这使用了thunking(我认为它不常见)这些天称为thunking但忘记了新单词)将系统调用从64位转换为32位,以便您可以使用自己的内核。

现在指南对我的解释比我好,但简而言之,你需要安装qemu和qemu-kvm-extras-static软件包,然后使用qemu-debootstrap为你的64位程序设置环境和库。 然后你需要使用binfmt_misc和静态qemu解释器(qemu-arch-static,在你的情况下可能是x86_64,x64或AMF64)来在你的环境中运行你的程序。

但请注意,您的CPU似乎支持64位指令,因此您可以安装64位ubuntu,无需任何仿真即可在AMD64计算机上运行x86代码,如果能够执行此操作,则可能更容易,另一方面,如果你想发现qemu和架构仿真的世界(如果你得到一个为…而建的程序……可能会出现在手机之类的内容)我建议你继续前进但要注意事情有时需要一些小小的调整或调试才能很好地运作。

阅读有关32位(x86)和64位应用程序:
http://www.techsupportalert.com/content/32-bit-and-64-bit-explained.htm

有时,应用程序或单个程序包[one .deb文件]可能在安装后同时充当。
即, x86 app on x86 OS x64 app on x64 OS

如果您正在运行32位系统使用

sudo dpkg –force-architecture -i viber.deb

链接: 如何在Ubuntu 13.10,32bit上安装Viber