我有一个通过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/
你不是从RHN同步的,所以“rhnget”选项对你没有任何帮助。 相反,我认为在镜像HTTP源时需要使用lftp-cleanup = no 。
此外,而不是发行yum update或yum install package ,您可以通过请求特定的版本更加精确。
yum install httpd-2.2.15-9.el6
这可能是您想要为生产环境做的事情。
客户端,如果你需要版本控制的特定软件包,但是你想更新其他版本,你也可以使用Yum插件versionlock 。
编辑:
为了我自己的好奇,我花了一些时间在我们的mrepo服务器上看这个。 lftp的默认行为是镜像远程主机。 你能提供输出显示包在mrepo -ug期间被移除吗?
示例文档中的注释显示lftp-cleanup用于:
##清理不在发送端的软件包?
所以,似乎我的预感可能是正确的(虽然是错误的原因)。我敢打赌,上游来源不归档软件包,您的默认lftp清除值是肯定的。 你也应该确认这些软件包在源头上仍然可用。
即使你得到mrepo保留较旧的软件包版本,更新将始终使用可用的最新版本。 您正在寻找的解决scheme涉及多个本地回购更新不同的时间表。