我一直在为我工作的公司设置一个私人仓库。一开始它运行正常,但今天,当我尝试安装我构建的新 rpm 时,出现了这个难看的错误:
http://<server_name>/centos/7/repodata/a6ecd0c880b1f5128974cd147a53cd84d7dab269b9055215b6fbe99fb98f6d7a-primary.sqlite.bz2: [Errno 14] HTTP Error 404 - Not Found-:-- ETA
我已经尝试过了:
yum clean all
rm -rf /var/cahe/yum
yum repolist
又出现同样的错误。
我已删除 repo 服务器上 repodata 下的所有内容,并使用以下命令再次重新创建 repo:
createrepo /path/to/repo/directory
重新创建仓库后我再次运行
yum clean all
rm -rf /var/cahe/yum
yum repolist
但仍然没有任何效果
我 100% 确定客户端配置没有问题,因为目前我是唯一一个使用服务器的人,而且上周它运行良好。
否则,可以通过 http 访问 repo,我可以使用 Web 浏览器查看所有包和 repodata。如果执行
curl http://<server_name>/centos/7/repodata/repomd.xml
从客户端,我得到了正确的文件。
我意识到客户端中的主数据库名称不正确(即使在运行之后也是如此yum clean all; rm-rf /var/cache/yum; yum update
)。请问我该如何修复此问题?我整个下午都在研究这个问题,但没有任何变化
repo 目录中的权限设置正确(三重检查)
我错过了什么???
预先感谢您的帮助
答案1
我认为我昨晚已经找到了答案,至少目前我没有遇到之前描述的问题。
解决方案很简单,避免客户端保留存储库的本地缓存。这可以通过在/etc/yum.conf
客户端文件中包括下一行来实现:
http_caching=none
设置此选项后,每次客户端执行yum update
或yum repolist
时,它都会从存储库服务器下载所有 repodata,因此所有文件都处于其最新版本。
我仍然不明白为什么如果我删除了客户端中的所有本地缓存,yum clean all; rm -rf /var/cache/yum
客户端还会继续搜索旧的 repodata 文件。如果有人有答案,请分享。过去几天它让我抓狂不已。
无论如何,谢谢你的提示和建议
答案2
我遇到了类似的错误并想在这里分享我的发现。
私人公司存储库服务器位于某种网络加速器后面。因此,我必须关闭其中的缓存和优化。
此后,错误消失。