有没有办法让 yum 更新到某个补丁级别?
我总是向我的开发人员保证 Dev、Test、Acc 和 Prod 之间的服务器的软件版本是相同的。但是当您通过 redhat 网络使用 yum 时,它无论如何都会更新到最新版本。
当您将服务器扩展到开发或测试之外时,问题就出现了。当然,您可以从此更新过程中排除重要的软件包。但是,如果自上次更新以来有新版本可用,则所有其他软件包仍将更新到较新的版本。这样,您的服务器就不会完全相同。
有没有办法(通过 yum)确保您获得与 DTAP 街道中的其他服务器完全相同的包配置。
答案1
这就是配置管理的美妙之处……例如使用 Puppet,我ensure => latest
甚至可以ensure => '1.2.2-7.el6'
您能否给出一个您希望控制其版本的特定软件包的示例?
我之所以问这个问题,是因为这是 Red Hat/CentOS,并且在整个服务器产品的生命周期中,我们付出了巨大的努力来保持软件包的主要版本与小修订版本之间的兼容性。实际上,无论您运行的是package-0.17-39.el6
还是 ,这都不重要package-0.17-43.el6
。更不用说不断向后移植的错误和安全修复了……
因此,在某些方面,我的开发、测试和生产服务器看起来相似,只是因为它们是 RHEL/CentOS 的相同版本,并且具有相同的软件包。但次要版本可能会发生变化,具体取决于安装日期、补丁计划、正常运行时间/可用性要求、硬件平台等情况。
我的建议:
- 固定软件包的特定版本事情给您(通过 yum、本地 repo 或配置管理)。
- 禁用自动更新。
- 制定涵盖整个环境的补丁计划。
- 修改你的构建过程。
- 当然是实施配置管理。
答案2
我们通过拥有 CentOS 存储库(+我们使用的所有其他软件)的本地镜像来实现这一点,并通过配置管理系统配置所有服务器以仅使用内部镜像存储库。
这样,我们就可以控制补丁出现在存储库中的确切时间。
新安装的服务器将具有与已安装的系统相同的软件包(在 kickstart 期间,我们已经指向了我们的内部镜像)。
我们为 QA 和生产设置了不同的存储库服务器。
这样,我们也可以先在 QA 服务器上测试补丁,然后将此存储库同步到生产存储库。
可能有更复杂的系统来管理这个问题(太空行走?)但这个简单的解决方案对我们来说已经足够了。