进一步来说...
我想要做的事情是:
- 集中式包管理。
- 无需下载整个 repos 即可保持系统更新(例如,如果系统上没有 Libreoffice,我不想下载任何 Libreoffice 软件包)。
- 在部署软件包之前运行自动化测试,并且
- 对特定的包(对任务至关重要)及其依赖项进行更详尽的测试(包括自动化组件),这需要一些人工干预才能批准。
实际上,保持所有内容都是最新的并不一定 - 最重要的是自动测试并保持非关键任务包中的安全补丁的更新(以及对关键任务补丁进行更严格的测试)。
我目前研究过的内容
我知道太空行走和纸浆,但由于一些原因(文档质量低劣,无论给定系统上有什么,都需要丑陋的黑客来避免不必要地下载整个大型存储库),我已将其排除在外。我们确实使用 Puppet,但就其本身而言,它并不是适合这项工作的工具。
yum
单独使用肯定可以满足我的一些需求,但(除非我遗漏了某些功能)它似乎也不是完成这项工作的合适工具。目前,我也在研究 foreman,但我不确定这是否是合适的选择,而且我知道它提供的大部分功能实际上并不是针对此类问题的。
答案1
使用 yum 的“排除”功能来实现这一点。若要永久保留,请将以下行添加到 yum 配置(在 /etc/yum.conf 中):
exclude=python3* php*
如果您想保持最新状态,而又不想下载整个存储库,只需应用安全勘误表。为此,请使用 yum 安全插件,然后运行
yum --security update
并yum updateinfo list bugzillas
仅下载更新并安装它们。对于自动化,有数百种选择。对于自动化企业工作负载,您可能希望使用更强大的工具,例如 Chef 或 Puppet。评论中的链接看起来是一个很好的资源。
再次,使用排除选项以及敏感包列表以确保它们不会被触碰。