我们的软件堆栈需要某些特定版本的 RPM 包。遗憾的是,其中一些包会随着时间的推移而弃用,并从其存储库中删除,因为它们的维护者没有保留档案(EPEL、Percona 等)。
这是配置管理方面的问题。我们希望确保新机器能够使用与旧机器相同的软件(我们使用 Puppet)。
我猜标准解决方案是将这些包托管在我们自己设置的私有 YUM 存储库中。这对于我们需要从源代码编译的包也很有帮助。
我的问题是:您是否知道任何 Yum 存储库服务器的“代理工具”,以便每个代理都从那里下载软件包,而存储库服务器从外部原始来源下载软件包,然后将其缓存在本地?(以防它们从原始存储库中消失)
Java 世界的一个类比是 Archiva,它是一个 Maven repo 服务器,但也可以用于代理对公共 repo 的请求并在本地缓存它们。
操作系统:Centos 6.4
谢谢
答案1
我认为mrepo
这是一个很棒的工具。你将其指向上游存储库,它将在本地镜像。配置选项lftp-cleanup = no
、rhnget-cleanup = no
等将阻止它在从上游删除软件包时从本地镜像中删除软件包。
答案2
下载您想要的特定 RPM 版本。创建您自己的本地存储库,仅包含您想要的软件包。将您的客户端指向您的新本地存储库。停止使用那些行为不符合您要求的公共存储库。
开始:
yum -y install createrepo && man createrepo