centos – 创建一个仅运行%post脚本以修改另一个RPM拥有的文件的RPM是否合法?

前端之家收集整理的这篇文章主要介绍了centos – 创建一个仅运行%post脚本以修改另一个RPM拥有的文件的RPM是否合法?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一些RPM,为各种内部YUM回购安装YUM repo配置文件,与EPEL repo RPM相同的结构和概念.

我们将有多个具有等效存储库的环境,因此我们使用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).

提前感谢任何建议……

如果您愿意,可以单独使用脚本或嵌入rpm的脚本.我喜欢使用空或元rpm来创建自己的虚拟组或执行某些任务.在这种情况下,我会担心后来的centos-release软件包会吹走我的变化.如果您的软件包中包含您所需的文件并使用–replacefiles选项安装它,则跟踪此操作似乎会更容易.

猜你在找的CentOS相关文章