Назад | Перейти на главную страницу

Как исправить ошибку «Не удается получить метаданные репозитория (repomd.xml)» в CentOS?

я пробовал 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 - можно ли использовать это вместо удаленной копии?

Если нет, какие-либо предложения, как я могу это решить?

верный el% 24releasever имя переменной для $ releasever в вашем файле репо. для получения дополнительной информации о проверке переменных yum yum.conf.

Переменные

Существует ряд переменных, которые можно использовать для упрощения обслуживания файлов конфигурации yum. Они доступны в значениях нескольких параметров, включая имя, базовый URL-адрес и команды.

$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.

Мне удалось обойти проблему, добавив CentALT x86_64 репозиторий. Я сначала скачал centalt-release-5-3.noarch.rpm, затем запустил:

rpm -Uvh centalt-release*rpm

После этого выполнение моей исходной команды приводило к конфликтам пакетов (мне было неприятно, что я переустанавливал другую версию httpd-tools, даже если в альтернативный каталог установки.)

Поскольку я устанавливал только на /opt/httpd2 в целях тестирования я отказался от этой идеи и успешно установил, запустив yum upgrade httpd.