![如何修复 CentOS 中的“无法检索存储库元数据(repomd.xml)”?](https://linux22.com/image/627677/%E5%A6%82%E4%BD%95%E4%BF%AE%E5%A4%8D%20CentOS%20%E4%B8%AD%E7%9A%84%E2%80%9C%E6%97%A0%E6%B3%95%E6%A3%80%E7%B4%A2%E5%AD%98%E5%82%A8%E5%BA%93%E5%85%83%E6%95%B0%E6%8D%AE%EF%BC%88repomd.xml%EF%BC%89%E2%80%9D%EF%BC%9F.png)
我已经尝试过yum update yum
和yum clean all
,但都无法解决以下问题:
# yum install httpd --installroot=/opt/httpd2
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* rpmforge: repoforge.spinellicreations.com
http://centos.karan.org/el%24releasever/extras/stable/x86_64/RPMS/repodata/repomd.xml:
[Errno 14] HTTP Error 404: Not Found
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository:
kbs-CentOS-Extras.
Please verify its path and try again
我还尝试.repo
从 中删除 kbs-CentOS-Extras 的所有文件/etc/yum.repos.d
,然后重新运行该命令,没有任何变化。以下是我的系统信息,以防万一:
# uname -a
Linux 2.6.18-274.3.1.el5xen #1 SMP Tue Sep 6 20:57:11 EDT 2011 x86_64 GNU/Linux
我现在正在使用该.repo
文件此处提供。 这是我的/etc/yum.conf
:
[main]
cachedir=/var/cache/yum
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
distroverpkg=redhat-release
tolerant=1
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
bugtracker_url=http://bugs.centos.org/yum5bug
timeout=300
installonly_limit = 5
# Note: yum-RHN-plugin doesn't honor this.
metadata_expire=1h
该yum.log
文件是空的,但/var/cache/yum/kbs-CentOS-Misc
包含一个repomd.xml
——这也许可以用来代替远程副本?
如果没有的话,有什么建议可以解决我这个问题吗?
答案1
正确的el%24发布版本变量名称$发布版本在你的 repo 文件中。有关 yum 变量的更多信息,请查看yum配置文件。
变量
您可以使用许多变量来简化 yum 配置文件的维护。它们在多个选项的值中可用,包括 name、baseurl 和命令。
$releasever This will be replaced with the value of the version of the package listed in distroverpkg. This defaults to the version of
‘redhat-release’ 包。
$arch This will be replaced with your architecture as listed by os.uname()[4] in Python. $basearch This will be replaced with your base architecture in yum. For example, if your $arch is i686 your $basearch will be i386. $uuid This will be replaced with a unique but persistent uuid for this machine. The value that is first generated will be stored in
/var/lib/yum/uuid 并重复使用,直到该文件被删除。
$YUM0-$YUM9 These will be replaced with the value of the shell environment variable of the same name. If the shell environment
变量不存在,则配置文件变量不会被替换。从 3.2.28 开始,/etc/yum/vars 中的任何文件都会变成以文件名命名的变量(或覆盖上述任何变量)。
请注意,如果文件不可读,则不会给出任何警告/错误,因此创建只有 root 才能读取的文件可能会让用户感到困惑。
还请注意,为了方便起见,只会读取第一行,并且会删除所有换行符。但是,不会对数据执行任何其他检查。这意味着任何值都可能包含错误的字符数据。
还这个话题将有助于理解 yum 变量。
答案2
我可以通过添加CentALT x86_64存储库。我首先下载centalt-release-5-3.noarch.rpm,然后运行:
rpm -Uvh centalt-release*rpm
在此之后,运行我原来的命令会导致包冲突(我很不高兴重新安装了不同版本的httpd-tools
,即使是安装到备用安装目录。)
由于我只是为了测试目的而安装/opt/httpd2
,所以我放弃了这个想法,并通过运行成功安装yum upgrade httpd
。