我有一堆工具(Nagios,munin,puppet等等),它们被安装在我所有的服务器上。 我正在build立一个当地的yum仓库。 我知道大多数人只是将所有的RPM转储到一个文件夹(分解成正确的path),然后在目录中运行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,我可以保存相应的文件。 我不知道哪个rpms属于哪个软件,如果我把它们扔进一个大文件夹。 说得通?
我相信你需要一个单独的版本库,以及由createrepo生成的数据,用于你正在支持的每个不同版本。 这是因为你有一个目录,百胜通过你的.repo文件知道。 你的第一个build议的方法会让你这个。
使用第二种方法,最终不得不为每个要维护的软件包创build存储库数据,就像每个软件包必须拥有存储库数据一样,这看起来像是一场噩梦。
另外,我不会在你的仓库里面build造(这是我能想到用软件把它分开的唯一原因)。 使用rpmdev-setuptree (可在rpmdevtools包中find)设置你的构build环境,构buildrpms并将它们从构build结构复制/移动到你的存储库结构( /<root_repo>/<release>/<arch>/<RPMS/SRPMS> ),然后通过release(5.4 / 4.6)目录中的createrepo (或createrepo --update . )生成存储库数据。
我认为把它们全部放到一个文件夹中工作正常。 当你有一个新版本的软件包时,把它扔到那里,然后使用yum-utils软件包中的“repomanage”来删除旧版本。
使用两者的混合:创build不同types的Repos,并将相关的rpms投入到这些中。
对于每个回购,我们使用一个包含最新rpms的“staging”变体。 如果这些在testing机器上testing出来,那么这些RPM就会进入现场回购。
分段rpms可以自动化。
我已经把所有东西都集中到一个目录中。 当更新出来时,我将RPM移动到目录并删除旧的。 然后我运行createrepo -v --update /PATH/TO/REPO 。