我可以使用以下命令从 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
并不总是按照您希望的方式工作。
有关详细信息,请参阅以下内容:
- 即使已经安装,也要使用 yumdownloader 下载所有依赖项吗?
- 下载产品的所有 rpm
- 如何从存储库下载文件,并稍后在没有互联网连接的情况下安装它?
- yumdownloader 与 repotrack
- 如何在 Linux 上使用 yum 命令下载 RPM 包而不安装
为了从这里搜索创建一个存储库,因为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 命令来完成工作。
当然,包管理的一个重要问题是依赖项,您需要确保为每个依赖项都包含一个包。