mrepo – 如何保留旧版本

我有一个通过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 updateyum install package ,您可以通过请求特定的版本更加精确。

 yum install httpd-2.2.15-9.el6 

这可能是您想要为生产环境做的事情。

客户端,如果你需要版本控制的特定软件包,但是你想更新其他版本,你也可以使用Yum插件versionlock


编辑:

为了我自己的好奇,我花了一些时间在我们的mrepo服务器上看这个。 lftp的默认行为是镜像远程主机。 你能提供输出显示包在mrepo -ug期间被移除吗?

示例文档中的注释显示lftp-cleanup用于:

##清理不在发送端的软件包?

所以,似乎我的预感可能是正确的(虽然是错误的原因)。我敢打赌,上游来源不归档软件包,您的默认lftp清除值是肯定的。 你也应该确认这些软件包在源头上仍然可用。

即使你得到mrepo保留较旧的软件包版本,更新将始终使用可用的最新版本。 您正在寻找的解决scheme涉及多个本地回购更新不同的时间表。