我有一个通过 mrepo / createrepo 更新的本地 yum 存储库,我的所有服务器都以这个本地存储库为目标进行更新,但它始终安装最新版本,这对于生产环境来说并不好。
我想实现一个程序来控制哪些版本的软件包被授权供客户端使用。所以我需要有多个版本的软件包。
我在 /etc/mrepo.conf 中尝试了以下参数,但我仍然看到由于在“mrepo-uvvg‘
mirrordir-cleanup = no
reposync-cleanup = no
reposync-newest-only = no
rhnget-cleanup = no
rhnget-download-all = yes
rsync-cleanup = no
/etc/mrepo.d/centos.conf:
[centos6]
name = CentOS Repo $release ($arch)
release = 6
arch = x86_64
metadata = repomd repoview yum
### Additional repositories
centos6 = http://mirror.csclub.uwaterloo.ca/centos/$release/os/$arch/
centos6-updates=http://mirror.csclub.uwaterloo.ca/centos/$release/updates/$arch/
答案1
您没有从 RHN 同步,因此“rhnget”选项对您没有任何作用。相反,我认为您lftp-cleanup = no
在镜像 HTTP 源时需要它。
此外,您可以通过请求特定版本来更加精确,而不是发布yum update
或。yum install package
yum install httpd-2.2.15-9.el6
这可能就是您想要在生产环境中做的事情。
客户端,你也可以使用 Yum 插件,版本锁,如果您需要对特定软件包进行版本控制,但又想自由地更新其他软件包。
编辑:
出于好奇,我花了一些时间在我们的 mrepo 服务器上查看此问题。的默认行为是lftp
镜像远程主机。您能否提供显示软件包在 期间被删除的输出mrepo -ug
?
示例中的注释文档显示的lftp-cleanup
是:
## 清理不在发送方的包?
因此,我的直觉似乎是正确的(尽管理由是错误的)。我敢打赌上游源没有存档软件包,并且您的默认 lftp-cleanup 值为是。您还应该确认源上仍提供软件包。
答案2
即使您让 mrepo 保留旧软件包版本,更新也将始终使用可用的最新版本。您正在寻找的解决方案涉及按不同时间表更新的多个本地存储库。