使用自定义 YUM 存储库

使用自定义 YUM 存储库

我在所有服务器上都安装了一堆工具(nagios、munin、puppet 等)。我正在构建本地 yum 存储库。我知道大多数人只是将所有 rpm 转储到一个文件夹中(分解到正确的路径中),然后在目录中运行 createrepo。但是,如果您必须更新 rpm,会发生什么?

我问这个问题是因为我打算将每个软件放入它自己的文件夹中。

示例一,将所有包放在一个文件夹中 (custom_software)

/admin/software/custom_software/5.4/i386
/admin/software/custom_software/5.4/x86_64
/admin/software/custom_software/4.6/i386
/admin/software/custom_software/4.6/x86_64

我在想什么……

/admin/software/custom_software/nagios/5.4/i386
/admin/software/custom_software/nagios/5.4/x86_64
/admin/software/custom_software/nagios/4.6/i386
/admin/software/custom_software/nagios/4.6/x86_64
/admin/software/custom_software/puppet/5.4/i386
/admin/software/custom_software/puppet/5.4/x86_64
/admin/software/custom_software/puppet/4.6/i386
/admin/software/custom_software/puppet/4.6/x86_64

这样,如果我必须更新到最新版本的 puppet,我可以相应地保存管理文件。如果我将它们放入一个大文件夹中,我将不知道哪些 rpm 属于哪个软件。有道理吗?

答案1

我相信您需要一个单独的存储库,其中包含由 生成的数据createrepo,用于您支持的每个不同版本。这样您就可以通过 .repo 文件获得 yum 知道的目录。您提出的第一个方法可以实现这一点。

使用第二种方法,您最终必须为维护的每个包创建存储库数据,这似乎是一场噩梦,因为您必须为每个包都拥有存储库数据。

此外,我不会在您的存储库内进行构建(这是我能想到的按软件分离的唯一原因)。使用rpmdev-setuptree(在包中可用rpmdevtools)设置您的构建环境,构建 rpm 并将它们从构建结构复制/移动到您的存储库结构( ),然后通过(或)在发布(5.4 / 4.6)目录中/<root_repo>/<release>/<arch>/<RPMS/SRPMS>生成您的存储库数据。createrepocreaterepo --update .

答案2

我认为将它们全部放入一个文件夹就好了。当您有软件包的新版本时,将其放入其中,然后使用 yum-utils 软件包中的“repomanage”删除旧版本。

答案3

混合使用:创建不同类型的 Repos,并将相关的 rpm 放入其中。

对于每个 repo,我们都使用包含最新 rpm 的“staging”变体。如果这些 rpm 在测试机器上测试良好,则这些 rpm 将进入实时 repo。

暂存转速 (rpm) 可以实现自动化。

答案4

我把所有东西都放到一个目录中。当有更新发布时,我会将 RPM 移到该目录中并删除旧版本。然后我运行createrepo -v --update /PATH/TO/REPO

相关内容