我安装了 1400 多个 APT 软件包,其架构指定为 amd64。大约 180 个是 i386。至少一些 i386 软件包也安装了 amd64 对应软件包。
我以为 64 位机器上只会安装 amd64 软件包。为什么我安装了一些 i386 软件包?
另外,APT 如何处理两种架构中的同一软件包?它是否有办法知道哪些确切情况需要同时安装这两种软件包?
仅供参考,我从我的 APT 状态文件中了解了有关已安装软件包的状态的所有信息。
答案1
由于程序无法使用库,因此软件包i386
安装在您的amd64
系统上。i386
amd64
这就是amd64
计算机能够运行i386
程序和amd64
程序的方式。如果amd64
程序请求libxml2
,则将调用amd64
的版本。如果程序请求,并且它收到版本,则它们不兼容 - 相反,它会收到的版本。libxml2
i386
libxml2
amd64
i386
libxml2
因此安装i386
和包的原因是为了系统上的程序支持。amd64
i386
amd64
答案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
版本(如果有可用或已安装)。