我的笔记本电脑上安装了 64 位 12.10。运行 apt-get update 时,它会下载 32 位软件包的软件包列表(以及源代码和 64 位软件包列表)。为什么它在 64 位系统上寻找 32 位包列表?我已经包含了它试图在下面找到的项目之一。
http://us.archive.ubuntu.com/ubuntu/dists/quantal-backports/multiverse/binary-i386/Packages
Run Code Online (Sandbox Code Playgroud)
ger*_*ijk 28
令人困惑,不是吗?让我解释一下。
在 11.10 之前的 64 位版本的 Ubuntu 中,一些常见的 32 位库被打包在一个单独的ia32-libs
包中,代表 APT/Dpkg 为 64 位,并且位于存储库中的这样一个位置。如果您碰巧需要一个应用程序的单个库,它将取决于 150+ MB 的 32 位库1。显然,这不是一个好的设计。
新想法是将所谓的“Multiarch”功能引入 APT/Dpkg 及其周围的工具。这在 Launchpad 上的几个蓝图中都有介绍,这里是其中之一。Oneiric (11.10) 成为第一个支持 Multiarch 的版本。
您可以告诉 Dpkg 您的系统能够运行哪些架构。在我的 12.04 64 位安装中,这里是:
$ cat /etc/dpkg/dpkg.cfg.d/multiarch
foreign-architecture i386
Run Code Online (Sandbox Code Playgroud)
它打开了整个i386
包的世界,amd64
仍然是默认的:
$ apt-cache show libqt4-core | grep -E "^(Filename|Architecture)"
Architecture: amd64
Filename: pool/universe/q/qt4-x11/libqt4-core_4.8.1-0ubuntu4.3_amd64.deb
$ apt-cache show libqt4-core:i386 | grep -E "^(Filename|Architecture)"
Architecture: i386
Filename: pool/universe/q/qt4-x11/libqt4-core_4.8.1-0ubuntu4.3_i386.deb
Run Code Online (Sandbox Code Playgroud)
上面的例子表明,Multiarch 使包维护者能够简单地使他们的包依赖于libqt4-core:i386
例如,并且可以安装任何32 位库/包(从而安装任何依赖于任何 32 位库/包的包) ,而不是预先选择的集合。
ia32-libs
兼容性如果您习惯于将ia32-libs
软件包安装为安装一组通用的基本 32 位库的便利软件包,您现在可以使用ia32-libs-multiarch
. 这是一个简单的元包,它依赖于相同(或至少非常相似)的一组库,但它将通过 Multiarch 的强大功能进行安装。
1 对于 Lucid (10.04),ia32-libs
软件包安装大小为 155,812.0 kB。
归档时间: |
|
查看次数: |
7766 次 |
最近记录: |