为什么我为两种架构安装了相同的包?

为什么我为两种架构安装了相同的包?

我安装了 1400 多个 APT 软件包,其架构指定为 amd64。大约 180 个是 i386。至少一些 i386 软件包也安装了 amd64 对应软件包。

我以为 64 位机器上只会安装 amd64 软件包。为什么我安装了一些 i386 软件包?

另外,APT 如何处理两种架构中的同一软件包?它是否有办法知道哪些确切情况需要同时安装这两种软件包?

仅供参考,我从我的 APT 状态文件中了解了有关已安装软件包的状态的所有信息。

答案1

由于程序无法使用库,因此软件包i386安装在您的amd64系统上。i386amd64

这就是amd64计算机能够运行i386程序和amd64程序的方式。如果amd64程序请求libxml2,则将调用amd64的版本。如果程序请求,并且它收到版本,则它们不兼容 - 相反,它会收到的版本。libxml2i386libxml2amd64i386libxml2

因此安装i386和包的原因是为了系统上的程序支持。amd64i386amd64

答案2

除非另有明确说明,否则安装 amd64 的 Ubuntu 系统上的所有软件包都是 amd64。

列出的软件包*-i386是体系结构的兼容软件包amd64,通常作为已安装软件包的依赖项而需要。

这样,您就可以安装适用于所编写的amd64体系结构(包amd64的版本i386)的包i386,而无需“添加”这个“ foreign-architecture”。

然而,如果某个包被列为*:i386,那么它就是一个i386包。


某些软件包仅提供 i386 版本。这似乎在专有软件包中更为常见,因此 wine 经常成为问题,因为我们都知道如果没有 x86(32 位)目录,Windows 将无法运行很多东西。


话虽如此,我相信 i386 外部架构在较新版本的 Ubuntu 上默认启用。

您可以删除系统上所有软件包的 i386 版本,但是,您应该谨慎这样做,因为这可能会导致与 Wine 等应用程序的兼容性问题。

不过请放心,Ubuntu 和 apt 总是默认安装amd64软件包的版本而不是版本i386(Wine 除外)。通常,您必须指定版本i386,如果没有指定 arch,系统几乎总是会安装和使用该amd64版本(如果有可用或已安装)。

相关内容