我在所有服务器上都安装了一堆工具(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>
生成您的存储库数据。createrepo
createrepo --update .
答案2
我认为将它们全部放入一个文件夹就好了。当您有软件包的新版本时,将其放入其中,然后使用 yum-utils 软件包中的“repomanage”删除旧版本。
答案3
混合使用:创建不同类型的 Repos,并将相关的 rpm 放入其中。
对于每个 repo,我们都使用包含最新 rpm 的“staging”变体。如果这些 rpm 在测试机器上测试良好,则这些 rpm 将进入实时 repo。
暂存转速 (rpm) 可以实现自动化。
答案4
我把所有东西都放到一个目录中。当有更新发布时,我会将 RPM 移到该目录中并删除旧版本。然后我运行createrepo -v --update /PATH/TO/REPO
。