我有 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 位,则可以:
并且该包已准备好使用 multiarch,这也是事实:
您可以只安装必要的 64 位库和二进制文件,它们是运行应用程序所需的包的依赖项(没有,稍后会详细介绍),对性能的影响几乎为零。就我而言,我只是很好地安装了软件包:
然后开始遇到问题......
包管理器决定他们不应该为他们的包列出任何依赖项,
他们实际上需要的是:
所以你必须手动找到并安装缺少的库!如果您知道正确的工具,这很容易。
apt-file
在这里很方便,http ://packages.ubuntu.com功能“搜索包的内容”也很好。但我继续寻找它们:这些文件已经安装在我的系统中,你只需要复制包名,以.结尾的冒号前的那个
amd64
。您应该按原样复制包名称:这些我没有安装,我使用获得的
ldd /opt/viber/Viber | grep 'not found' | awk '{printf "%s$\n", $1}' | apt-file search -x -a amd64 -f - | sed 's/\:/:amd64:/'
:apt-file
给我 64 位包是一种挑逗,所以我不得不sudo apt-file -a amd64 update
强制它具有 64 位文件列表。现在,让我解释一下以上内容:
ldd /path/to/binary
: 读取二进制文件并告诉您需要哪些库、符号等。dpkg -S
:搜索哪些软件包提供了特定的已安装文件。awk
,sed
和grep
: 正在修改文本流以仅处理感兴趣的部分或显示所需的输出。|
,$(...)
: 第一个允许我将一个命令的输出通过管道传递给另一个,而后者允许我在执行主要命令之前执行/评估一个命令。TL;dr 只需安装这些软件包:
您还需要安装 64 位内核。
不可能在 32 位操作系统上安装仅支持 64 位 arch 的软件,反之亦然。为了安装 64 位软件,您需要一个支持 64 位的硬件和一个在其上运行的 64 位操作系统。
另外我想提一下,无法在仅支持 32 位架构的硬件上将 64 位操作系统安装为虚拟机。您的硬件应支持 64 位架构以及虚拟化支持,以便创建 64 位虚拟机。
您可以使用动态转换在使用 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 和架构仿真的世界(如果你得到一个为 ARM 构建的程序,比如为手机构建的程序,稍后可能会出现)我建议你继续前进,但要小心,事情有时需要一点点摆弄或调试才能很好地工作。
我不得不说你不是真的
根据运行
lscpu
你安装的 Ubuntu 版本的输出是 32 位的,而你的系统可以支持 64 位应用程序,如果你想安装 64 位应用程序,你必须安装 64 位的 Ubuntu 操作系统。请参阅下面的几行:下载并安装64 位 Ubuntu 14.04.1,然后安装Viber。
阅读有关 32 位 (x86) 和 64 位应用程序的信息:
http ://www.techsupportalert.com/content/32-bit-and-64-bit-explained.htm
有时,一个应用程序或单个包 [一个 .deb 文件] 可能在安装后充当两者。
即,
x86 app on x86 OS
和x64 app on x64 OS
如果您运行的是 32 位系统,请使用
sudo dpkg --force-architecture -i viber.deb
链接:如何在 Ubuntu 13.10、32 位上安装 Viber