在 x86_64 机器上,如果我运行命令 - yumdownloader <pkg_name>
,它会下载 i686 和 x86_64 arch 软件包,而在 i686 机器上,它只下载 i686 软件包。如何解决这个问题?除了提供 archlist 选项之外,还有其他解决方案吗?
答案1
自动排除 i686 软件包:
yumdownloader -x '*i686'
答案2
一种可能性:在 中/etc/yum.conf
,您可以更改多库策略如果默认情况下您想匹配,则从“全部”到“最佳” x86_64
。
您还可以在之后指定架构软件包名称。例如yumdownloader guile.x86_64
。
但这是正在发生的事情,表明如何“修复”。当您不使用--archlist
或不提供架构时,像“guile”、“guile”这样的包将匹配两个包“guile.x86_64”和“guile.i686”,前提是提供了每个包所需的所有依赖项。
因此,这里糟糕的反馈循环是,安装一个软件包的两个版本的次数越多,例如不提供--archlist
或在下载中指示拱门,就越有可能将来安装或下载将匹配多个包,因为这样您更有可能满足两个依赖项。
因此,处理此问题的另一种更乏味的方法是查找包的依赖关系,并且在存在i686
版本的情况下,消除那些。这将需要您删除越来越多的i686
软件包,并且您可能需要确保有x86_64
这些软件包的版本。在某些情况下,可能没有,或者没有其他包也可以。
如果您以自动化方式构建此系统,例如通过输入脚本蟒蛇x86_64
或者像 puppet 或 Chef 这样的配置管理系统,当您列出要加载的包时,您可能需要在包名称后面添加 arch (例如,guile.x86_68
而不是guile
),以减少每个包同时安装在 32 位和 32 位操作系统中的问题。或 64 位方式。
最后,我应该指出,毫无疑问,有些软件包仅以 32 位形式存在。