我们将有多个具有等效存储库的环境,因此我们使用yum优先级插件来确保部署序列中早期的环境回购(即QA)优先于后来的那些(即生产).我们还复制了我们在内部镜像上使用的CentOS版本.我们已经完成了所有这些工作,包括发布这些repo配置RPM,但还有一个特殊情况,我想要一些关于处理设计问题的最佳方法的建议.
那就是:CentOS基础仓库配置文件/etc/yum.repos.d/CentOS-Base.repo由centos-release RPM拥有,所以我不能在不更换此系统RPM的情况下在我自己的RPM中覆盖它,这是我不想做的.但是,我需要对此文件进行一些更改,以便它可以与上述设计一起使用.在每个回购部分,
我需要更改这些行:
镜像列表= HTTP://mirrorlist.centos.org/释放= $releasever和放大器; ARCH = $basearch和放大器;回购= OS
#baseURL时= HTTP://mirror.centos.org/centos/$releasever/os/$basearch/
对于这些线:
镜像列表= HTTP://mirrorlist.MYCOMPANY.com/平台=的CentOS和放大器;释放= $releasever和放大器; ARCH = $basearch和放大器;回购= OS
#baseURL时= HTTP://mirror.MYCOMPANY.com/centos/$releasever/os/$basearch/
优先级= 2
我正在创建一个安装/etc/yum.repos.d/CentOS-Base-pr.repo的RPM,然后在%post中将现有的CentOS-Base.repo重命名为CentOS-Base.repo.orig,然后将新的CentOS-Base-pr.repo重命名为CentOS-Base.repo.在%postun中,它会将其反转以恢复原始文件.我觉得这很有效,但它有点像kludge.
我想做的是安装没有文件,但是运行一个sed脚本来对%post中的原始CentOS-Base.repo文件进行这些更改,并使用另一个sed脚本来反转%postun中的更改.这使我能够以相同的方式处理所有自定义存储库的安装/卸载,并为现有和新存储库提供一致的结果.
我不知道的是 – 当您尝试对其他RPM安装的现有文件执行此类配置“调整”时,这是一种有效或推荐的方法吗?
在我得到这个效果的答案之前,我们使用Chef进行类似于此的大多数RPM后配置,但是在这种情况下不想使用它,因为我们不希望在repo配置中有特殊情况只是这一个实例,我们正在尝试使用RPM来在其他地方的RPM内部封装“繁重的”安装/升级逻辑.我们希望我们自己的软件能够像其他开源软件一样运行,因为它可以安装和运行而不依赖于Chef进行基本安装,而Chef仅用于自定义(即Chef如何配置Nginx或tomcat).
提前感谢任何建议……