我正在编写一些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 – 创建一个仅运行%post脚本以修改另一个RPM拥有的文件的RPM是否合法?的更多相关文章

  1. xcode – 为什么Jenkins在我的Mac上运行不会连接到本地的git repo?

    我正在尝试使用Jenkins实现自动化构建,用于我的iOS项目.我添加了Git插件,但是一旦我尝试将git的URL放在项目的git配置中,它会在下面的屏幕截图中显示错误.这里Jenkins不能从repo克隆到其工作空间.解决方法在大多数情况下,gitbarerepo有扩展名.git我的意思是(其他)/test1看起来不正确,我认为应该是(其他)/test1.git在我的mac上有同样的错误.

  2. 哪些Xcode项目文件可以从我的git repo中排除?

    我正在开发一个iOS项目,并使用git进行版本控制.我正在与另一位开发人员合作.我应该保留哪些Xcode项目文件在repo中,哪些可以排除,这样不会对其他开发者产生负面影响?这里有一些非代码文件,git告诉我已被修改或添加…

  3. Xcode 4:使用Git repo commit版本在每个构建上更新CFBundleVersion

    我正在将Xcode4与Git结合使用,并希望在每个版本的Info.plist中增加CFBundLeversion.密钥CFBundLeversion的值应更新为我对Git存储库的最后一次提交的数量.我发现thatpython脚本运行良好,但遗憾的是它没有更新我的Xcode项目中的Info.plist–它只是更新了“BUILT_PRODUCTS_DIR”中的Info.plist.有没有人知道如何让Xcode4获取最新提交的版本并将该信息放入项目的Info.plist中?

  4. 如何使用“repo”克隆最小的android源码?

    我可以使用“repo”工具克隆Android源代码.但是,我想要做的是以比没有11GB足迹的更小的方式克隆源代码.它似乎下载了与每个Android设备和每个先前版本相关的内容.我试过想通过检查这样的特定分支来减少这个:然而,最终发生的事情是,我仍然只涉及一个特定的快照(可理解).但有没有办法限制克隆的数量?

  5. android – Gradle自定义存储库和依赖项解析

    我正在开发的项目需要scribe-java和crashlytics库.这两个库都可以从自定义存储库中获得.build.gradle看起来像:使用这样的设置存储库解决方案在构建过程中变得混乱,以至于gradle尝试从不适当的存储库中解析工件:它试图从scribe存储库中检索crashlytics文件.解决方法按声明的顺序搜索存储库,直到找到依赖关系.如果在scribe存储库中搜索crashlytics库,则意味着在crashlytics存储库中找不到它.

  6. 暂停和恢复Android Repo Sync

    reposync解决方法你不能真正暂停一个repo同步,但是如果你使用Ctrl-C中止它然后再运行它,它将有效地从它停止的地方继续.虽然它将从头开始再次通过项目列表,并且可能仍然为已经处理的项目获取一些新数据,但它应该通过这些项目,因为它之前获取的所有数据仍将存在在隐藏的.repo目录中.有关repoinit和reposync工作方式的精彩描述,请参见thisanswer.请注意,您不会立即看到任何已提取的项目,因为在完成克隆.repo/projects中的所有git存储库之前,reposync不会创建并

  7. android – 从AOSP master切换到froyo

    我刚用回购检查了主人.现在我想切换到froyo.如果不再下载一堆东西我怎么能这样做?我不想再次下载一堆东西,我只是希望能够在分支之间自由移动,就像在普通的gitclone中一样.解决方法由于您使用repo下载了所有内容,因此您可以轻松地使用repo在分支之间切换而无需再次下载所有内容:repoinit-bfroyo;回购同步这将只下载切换分支所需的文件,就像使用git在分支之间移动一样.

  8. android – 如何覆盖Robolectric运行时依赖性存储库URL?

    我们试图从我们自己的内部Nexus存储库中使用org.robolectric:robolectric:3.0依赖.问题是Robolectric尝试从公共存储库(asmentionedhere)在运行时加载一些依赖项,并忽略build.gradle中的任何存储库覆盖.由于我们无法从Intranet访问该公共位置,因此在尝试加载该依赖项后,我的测试会超时:[WARNING]Unabletogetres

  9. android – 使用repo命令回滚?

    使用repocommand时如何进行回滚?我在一些文件中做了一些更改,现在我想回滚到使用reposync命令时下载的源代码.我还没有做出改变.解决方法正确的命令是:如果要还原对工作副本所做的更改,请执行以下操作:repoforall-c“gitcheckout.”如果要还原对索引所做的更改,请执行以下操作:repoforall-c“gitreset”如果要还原已提交的更改,请执行以下操作:repoforall-c“gitrevert…”

  10. 在Android Repo项目中切换Git分支

    我有一个关于使用repo切换分支的问题.我知道我可以签出这样的分支:我的理解是,这将检查清单存储库的foo分支,然后检查清单中描述的git项目.我也明白我可以像这样切换分支:我的问题是,我可以切换分支而无需执行repoinit&每次repo同步,这样做的含义是什么?让我举个例子说明一下:我之前尝试过这个,它似乎工作,但它有点奇怪,因为我现在检查了foo清单中的代码,但我当前的清单分支是吧.与清单中描述的不同,在不同的分支上有什么含义?

随机推荐

  1. 在airgapped(离线)CentOS 6系统上安装yum软件包

    我有一个CentOS6系统,出于安全考虑,它已经被空气泄漏.它可能从未连接到互联网,如果有,它很长时间没有更新.我想将所有.rpm软件包放在一个驱动器上,这样它们就可以脱机安装而无需查询互联网.但是,我在测试VM上遇到的问题是,即使指定了本地路径,yum仍然会挂起并尝试从在线存储库进行更新.另外,有没有办法使用yum-utils/yumdownloader轻松获取该包的所有依赖项和所有依赖项?目前

  2. centos – 命名在日志旋转后停止记录到rsyslog

    CentOS6.2,绑定9.7.3,rsyslog4.6.2我最近设置了一个服务器,我注意到在日志轮换后,named已停止记录到/var/log/messages.我认为这很奇怪,因为所有日志记录都是通过rsyslog进行的,并且named不会直接写入日志文件.这更奇怪,因为我在更新区域文件后命名了HUPed,但它仍然没有记录.在我停止并重新启动命名后,记录恢复.这里发生了什么?

  3. centos – 显示错误的磁盘大小

    对于其中一个磁盘,Df-h在我的服务器上显示错误的空白区域:Cpanel表明它只有34GB免费,但还有更多.几分钟前,我删除了超过80GB的日志文件.所以,我确信它完全错了.fdisk-l/dev/sda2也显示错误:如果没有格式化,我该怎么做才能解决这个问题?并且打开文件描述符就是它需要使用才能做到这一点.所以…使用“lsof”并查找已删除的文件.重新启动写入日志文件的服务,你很可能会看到空间可用.

  4. 如何在centos 6.9上安装docker-ce 17?

    我目前正在尝试在centOS6.9服务器上安装docker-ce17,但是,当运行yuminstalldocker-ce时,我收到以下错误:如果我用跳过的标志运行它我仍然得到相同的消息,有没有人知道这方面的方法?

  5. centos – 闲置工作站的异常负载平均值

    我有一个新的工作站,具有不寻常的高负载平均值.机器规格是:>至强cpu>256GB的RAM>4x512GBSSD连接到LSI2108RAID控制器我从livecd安装了CentOS6.564位,配置了分区,网络,用户/组,并安装了一些软件,如开发工具和MATLAB.在启动几分钟后,工作站负载平均值的值介于0.5到0.9之间.但它没有做任何事情.因此我无法理解为什么负载平均值如此之高.你能帮我诊断一下这个问题吗?

  6. centos – Cryptsetup luks – 检查内核是否支持aes-xts-plain64密码

    我在CentOS5上使用cryptsetupluks加密加密了一堆硬盘.一切都很好,直到我将系统升级到CentOS6.现在我再也无法安装磁盘了.使用我的关键短语装载:我收到此错误:在/var/log/messages中:有关如何装载的任何想法?找到解决方案问题是驱动器使用大约512个字符长的交互式关键短语加密.出于某种原因,CentOS6中的新内核模块在由旧版本创建时无法正确读取512个字符的加密密钥.似乎只会影响内核或cryptsetup的不同版本,因为在同一系统上创建和打开时,512字符的密钥将起作用

  7. centos – 大量ssh登录尝试

    22个我今天登录CentOS盒找到以下内容这是过去3天内的11次登录尝试.WTF?请注意,这是我从我的提供商处获得的全新IP,该盒子是全新的.我还没有发布任何关于此框的内容.为什么我会进行如此大量的登录尝试?是某种IP/端口扫描?基本上有4名匪徒,其中2名来自中国,1名来自香港,1名来自Verizon.这只发生在SSH上.HTTP上没有问题.我应该将罪魁祸首子网路由吗?你们有什么建议?

  8. centos – kswap使用100%的CPU,即使有100GB的RAM也可用

    >Linux内核是否应该足够智能,只需从内存中清除旧缓存页而不是启动kswap?

  9. centos – Azure将VM从A2 / 3调整为DS2 v2

    我正在尝试调整前一段时间创建的几个AzureVM,从基本的A3和标准A3到标准的DS2v2.我似乎没有能力调整到这个大小的VM.必须从头开始重建服务器会有点痛苦.如果它有所不同我在VM中运行CentOS,每个都有一个带有应用程序和操作系统的磁盘.任何人都可以告诉我是否可以在不删除磁盘的情况下删除VM,创建新VM然后将磁盘附加到新VM?

  10. centos – 广泛使用RAM时服务器计算速度减慢

    我在非常具体的情况下遇到服务器速度下降的问题.事实是:>1)我使用计算应用WRF>2)我使用双XeonE5-2620v3和128GBRAM(NUMA架构–可能与问题有关!

返回
顶部