我当前有一个 RPM 文件,其中包含“需要”部分中指定的 2-3 个依赖项。当使用 yum 安装此应用程序时,它可以正常工作,并且如果缺少依赖项,则会安装依赖项。
但是,我了解到可能需要在无法访问网络的计算机上安装此应用程序。因此,所有内容都需要包含在安装包中。
我最好尝试使用现成的安装程序(izPack 等)还是有办法将所有内容捆绑在一起并仍然使用 RPM/Yum。我更愿意坚持后一种解决方案。
我假设将所有 RPMS 打包在一个目录中并在它们上运行 rpm -Uhv 就可以满足目的,但这看起来相当粗糙,并且会导致卸载失败。
是否可以在我的 RPM 规范文件中创建一个临时 yum 存储库,其中包含安装时可能需要的任何内容。然后在事情完成后清理该仓库?听起来很奇怪,但谁知道呢?我还缺少其他明显的解决方案吗?
谢谢。
答案1
该yum-utils
软件包包含repoquery
,它将回答您的问题:
repoquery --requires --recursive --resolve <此处输入您的包>
请注意,这列出了全部所需的软件包,到glibc
朋友们,您需要在启动您的wget
(或yumdownloader
)之前修剪这些软件包以吸引群体。完成设置后,createrepo
将创建一个包含所有这些内容的本地存储库,您应该能够将其存储到随身碟(甚至是 CD/DVD,但请检查您是否可以使用那里的存储库!)并使用它来安装/更新你的受害者。
顺便说一句,这是 Fedora 16 yum-utils-1.1.31-2.fc16.noarch
,;以前的版本可能没有该--recursive
标志,在这种情况下,您必须编写一个执行递归位的脚本。