我想问一下如何服务和更新私有 rpm 存储库(epel、centos、rhel 镜像)。
我使用reposync
和createrepo
工具下载包并生成“repodata”,通过网络服务器公开它,一切都运行正常,但是......
更新存储库的最佳方法是什么?
复杂的方式
我想在文件夹结构中拥有这样的符号链接:
/repos/7Server/x86_64/Ref -> /repos/7Server/x86_64/Ref.2016-06-22
所以每次我更新存储库时:
- 将创建副本
- 与上游同步
- 重新生成元数据
- 将符号链接指向最新版本
- 删除旧版本(文件夹)
元数据将始终与包匹配,并且存储库将保持一致。
简单的方法
但我发现,每一份文档中,人们都只是简单地reposync
删除和更新新包参数。根本不关心客户端的任何不一致状态。
所以我只是想知道哪种方法是最好的,因为简单的方法可以节省一些时间、磁盘 io、配置和自动化复杂性。
谢谢你的帮助。
答案1
这是一个合理的担忧,但客户端也是一个问题。客户端还会缓存存储库信息。这意味着当存储库发生更改时,如果客户端尝试更新,但客户端尚未更新其本地缓存信息,则仍然会遇到问题。因此,您最终还是会运行yum clean all
以强制他们更新其本地缓存。
所以实际上,担心存储库的一致性是可以的,但您还必须在客户端处理它。所以我只需更新存储库,并清理客户端上的缓存。
另外,您多久更新一次客户端上的软件包?您可以安排在几个小时后或客户端不会更新的时间进行重新同步。