创建没有 rpm 的本地 yum 存储库

创建没有 rpm 的本地 yum 存储库

我可以使用以下命令从 Internet 安装软件包:

yum install packagex

这将下载所有依赖包并按顺序安装。对于一些无法访问互联网的客户,我们希望通过为他们提供仅创建这些包的存储库 tarball 来实现这一点。

是否可以做类似的事情:

yum install packagex  --createRepo /tmp/foo

/tmp/foo所有软件包都以 repo 格式放入,tar然后可以由 yum 使用来离线安装​​软件包?

答案1

是的,您可以通过使用 downloadonly yum 插件来做到这一点。 RedHat 文章对此进行了更详细的描述:如何使用 yum 下载包而不安装

例如,您可以运行
yum install packagex --downloadonly --downloaddir=/tmp/packagex_repo
它来下载包x并且当前系统所需的所有依赖项都只能下载到/tmp/packagex_repo.

yumdownloader包中还包含yum-utils提供相同方法的内容,尽管由于错误,它将下载 i586 和 x86_64 版本的软件包,并且该选项--archlist并不总是按照您希望的方式工作。

有关详细信息,请参阅以下内容:

为了从这里搜索创建一个存储库,因为createrepo那里有很多结果。要将其打包到 tarball 中只需要几个命令,首先下载软件包,然后在 repo 目录中运行 createrepo,最后从该文件夹加上 repo 的 yum 配置创建一个 tarball。但您也可以将所有内容放入 tarball 中,然后告诉人们提取 tarball 并yum install ./*rpm在提取的存储库文件夹中运行。使用 repo 方法的好处是,yum 历史记录和 yum 软件包列表将显示给定软件包最初是从哪个 repo 安装的。

答案2

RPM 已经可以做到这一点。所有可以通过 yum 获得的软件包,都可以获得 RPM。 RPM 也已经安装在你发现 yum 的任何地方。因此,只需将您的 RPM 舍入,将它们放入 tar 球中,然后您就可以提取它并运行一些 RPM 命令来完成工作。

当然,包管理的一个重要问题是依赖项,您需要确保为每个依赖项都包含一个包。

相关内容