我有一个通过 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”选项对您没有任何作用。相反,我认为您
lftp-cleanup = no
在镜像 HTTP 源时需要。此外,您可以通过请求特定版本来更加精确,而不是发布
yum update
or 。yum install package
这可能是您想要为生产环境做的。
客户端,你也可以使用 Yum 插件,versionlock,如果有特定的包你需要版本控制,但你想自由地更新其他包。
编辑:
出于好奇,我花了一些时间在我们的 mrepo 服务器上查看它。的默认行为
lftp
是镜像远程主机。您能否提供显示软件包在 期间被删除的输出mrepo -ug
?示例文档中的注释显示这
lftp-cleanup
是为了:所以,我的直觉似乎是正确的(尽管原因不对)。我敢打赌,上游源代码没有归档包,您的默认 lftp-cleanup 值为 yes。您还应该确认这些包在源头上仍然可用。
即使您让 mrepo 保留旧的软件包版本,更新也将始终使用可用的最新版本。您正在寻找的解决方案涉及按不同时间表更新的多个本地存储库。