Вопрос или проблема
mirrorlist.centos.org
больше не доступен?
Я могу получить доступ к centos.org
, но не к mirrorlist.centos.org
Вот вывод моего resolv.conf
, dig
и nslookup
, если кому интересно.
rosdi@H-TQ0nmTkQIbRhN:~/test_ssl$ nslookup mirrorlist.centos.org
Сервер: 1.1.1.1
Адрес: 1.1.1.1#53
** сервер не может найти mirrorlist.centos.org: NXDOMAIN
rosdi@H-TQ0nmTkQIbRhN:~/test_ssl$ nslookup centos.org
Сервер: 1.1.1.1
Адрес: 1.1.1.1#53
Неавторitative ответ:
Имя: centos.org
Адрес: 52.56.83.118
Имя: centos.org
Адрес: 81.171.33.201
Имя: centos.org
Адрес: 81.171.33.202
Имя: centos.org
Адрес: 2001:4de0:aaae::202
Имя: centos.org
Адрес: 2a05:d01c:c6a:cc02:225e:ab54:d58c:8b14
Имя: centos.org
Адрес: 2001:4de0:aaae::201
rosdi@H-TQ0nmTkQIbRhN:~/test_ssl$ cat /etc/resolv.conf
nameserver 1.1.1.1
nameserver 8.8.8.8
rosdi@H-TQ0nmTkQIbRhN:~/test_ssl$ dig mirrorlist.centos.org
; <<>> DiG 9.18.24-0ubuntu5-Ubuntu <<>> mirrorlist.centos.org
;; глобальные опции: +cmd
;; Получен ответ:
;; ->>HEADER<<- opcode: QUERY, статус: NXDOMAIN, id: 61636
;; флаги: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: версия: 0, флаги:; udp: 1232
;; ВОПРОС ЛИНИЯ:
;mirrorlist.centos.org. IN A
;; РАЗДЕЛ АВТОРИТЕТА:
centos.org. 2795 IN SOA ns1.centos.org. hostmaster.centos.org. 2024070102 28800 7200 2400000 3600
;; Время запроса: 70 мс
;; СЕРВЕР: 1.1.1.1#53(1.1.1.1) (UDP)
;; КОГДА: Пн Июл 01 16:31:41 +08 2024
;; MSG SIZE rcvd: 101
rosdi@H-TQ0nmTkQIbRhN:~/test_ssl$ nslookup mirrorlist.centos.org
Сервер: 1.1.1.1
Адрес: 1.1.1.1#53
** сервер не может найти mirrorlist.centos.org: NXDOMAIN
rosdi@H-TQ0nmTkQIbRhN:~/test_ssl$
mxtoolbox также показывает то же самое.
mirrorlist.centos.org больше не существует.
Из файла .repo:
# Система зеркал использует IP-адрес клиента и
# статус обновления каждого зеркала, чтобы выбирать зеркала, которые обновлены и
# географически близки к клиенту. Вам следует использовать это для обновлений CentOS
# если вы не выбираете другие зеркала вручную.
#
# Если mirrorlist= не работает для вас, в качестве запасного варианта вы можете попробовать
# закомментированную строку baseurl= вместо этого.
Чтобы решить проблему, вы можете массово обновить все файлы .repo:
sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/CentOS-*.repo
sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/CentOS-*.repo
sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/CentOS-*.repo
CentOS 7 достиг конца жизни (EOL) сегодня, 1 июля 2024 года, поэтому mirrorlist.centos.org больше не требуется.
Чтобы установить пакеты, необходимо изменить репозитории с “mirrorlist” на “baseurl”. В большинстве случаев vault.centos.org будет работать хорошо.
Попробуйте это :
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*.repo
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*.repo
Не было бы более разумно отключить Centos-Base.repo, включить Centos-Vault.repo и добавить соответствующую конфигурацию?
Моя система – CentOS 7.6.1810.
Шаги конфигурации:
Отключите все репозитории Centos-Base.repo.
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#выпущенные обновления
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#дополнительные пакеты, которые могут быть полезными
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Добавьте следующую конфигурацию в Centos-Vault.repo.
# Vault
[Vault-base]
name=Vault - CentOS-$releasever - Base
baseurl=http://vault.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-$releasever
[Vault-updates]
name=Vault - CentOS-$releasever - Updates
baseurl=http://vault.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-$releasever
[Vault-extras]
name=Vault - CentOS-$releasever - Extras
baseurl=http://vault.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-$releasever
Обновите кэш yum.
yum clean all ; yum makecache
Результаты проверки
[root@fab687ebbad7 yum.repos.d]# yum repolist
Загруженные плагины: fastestmirror, ovl
Загрузка скорости зеркал из кэшированного файла хоста
repo id repo name status
!Vault-base/7/x86_64 Vault - CentOS-7 - Base 10,072
!Vault-extras/7/x86_64 Vault - CentOS-7 - Extras 526
!Vault-updates/7/x86_64 Vault - CentOS-7 - Updates 6,173
repolist: 16,771
Мне пришлось сделать немного иначе. Как говорит @mlazarov, нам нужно обновить файлы репозиториев, но вместо http
я изменил на использование https
:
sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo
sed -i s/^#.*baseurl=http/baseurl=https/g /etc/yum.repos.d/*.repo
sed -i s/^mirrorlist=http/#mirrorlist=https/g /etc/yum.repos.d/*.repo
Запустив yum upgrade -y
, я получил:
failure: repodata/repomd.xml from base: [Errno 256] Не осталось зеркал для попытки.
http://vault.centos.org/centos/7/os/x86_64/repodata/repomd.xml: [Errno 14] HTTPS ошибка 301 - Перемещено навсегда
Тогда я добавил:
echo "sslverify=false" >> /etc/yum.conf
Обновление:
И это сработало, но это нарушает причину добавления https 🙁 так что верните хак sslverify и попробуйте это:
(Для нетерпеливых; Просто вставьте строки внизу и пропустите болтовню)
Проблема в том, что корневые и/или промежуточные сертификаты дистрибутива Centos7 устарели. Некоторые из них истекли, некоторые серверы переместились, и ЦС могли появиться и уйти. Нам нужно получить надежный источник более нового пакета ca-certificates и загрузить его по средству, которое обеспечивает его целостность.
Мы можем получить более новый пакет ca-certificates из любого из ‘исторических/архивных’ зеркал, но они должны быть надежными. Вот короткий список.
https://mirror.nsc.liu.se/centos-store/
https://mirror.fcix.net/centos-vault/
https://archive.kernel.org/centos-vault/
Хорошо, мы можем просто использовать wget
и установить.. а, хм, ладно, проблема, wget отсутствует, думайте еще раз. wget отсутствует, нужно установить его с помощью yum, а это сломано, нужно найти другой способ, который снимет этот тупик.
Хотя есть способы сделать простой http GET из оболочки на порту 80, https (порт 443) более сложен. И получение ca-certificates без https было бы безумным. Конечно, можно использовать флешку, но я только что нашел другой способ!
К счастью, похоже, что стандартная установка Centos7 имеет urlgrabber
, или по крайней мере, образ контейнера docker-hub centos:7
, который я использую, имеет его.
Обновленные файлы CA-сертификатов, которые нам нужны, можно получить и установить следующим образом.
urlgrabber -o ca-certificates.rpm \
http://archive.kernel.org/centos-vault/centos/7.9.2009/updates/Source/SPackages/ca-certificates-2023.2.60_v7.0.306-72.el7_9.src.rpm
rpm -i ca-certificates.rpm
# Затем, ПОСЛЕ применения re-writes sed, выше
# получаем все обновления
yum clean all && yum -y update
Ответ или решение
Ответ на вопрос: "Почему mirrorlist.centos.org больше не работает?"
К сожалению, вы правы: mirrorlist.centos.org
больше не доступен. С 1 июля 2024 года CentOS 7 достиг срока поддержки (EOL), и соответственно, зеркала для его обновлений перестали работать.
Основные проблемы
-
Вы не можете разрешить
mirrorlist.centos.org
с помощьюnslookup
иdig
. Это подтверждается сообщением об ошибке NXDOMAIN (отсутствует домен). -
Однако
centos.org
продолжает разрешаться корректно, что указывает на наличие проблем лишь с конкретным поддоменом "mirrorlist".
Решение проблемы
Чтобы установить или обновить пакеты на CentOS 7, вам необходимо изменить конфигурацию репозиториев, чтобы они указывали не на mirrorlist
, а на baseurl
. Для этого следуйте указанным ниже шагам.
- Обновите файлы репозиториев.
Откройте терминал и выполните следующие команды:
# Измените все ссылки на mirrorlist на ссылки на vault
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*.repo
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*.repo
Это отключит старые зеркала и включит доступ к архиву vault.centos.org
, где хранятся старые версии пакетов CentOS.
- Очистите кеш и обновите репозитории.
После изменения конфигурации выполните команду, чтобы очистить кэш и обновить список доступных репозиториев:
yum clean all && yum makecache
- Проверка успешности обновления.
Для проверки работоспособности получите список доступных репозиториев:
yum repolist
Вы должны увидеть репозитории из vault.centos.org
вместо mirrorlist.centos.org
.
Альтернативные изменения
В некоторых случаях вы можете предпочесть изменить репозитории, чтобы использовать HTTPS вместо HTTP. Значит, выполните следующие команды:
sed -i 's/mirror.centos.org/vault.centos.org/g' /etc/yum.repos.d/*.repo
sed -i 's/^#.*baseurl=http/baseurl=https/g' /etc/yum.repos.d/*.repo
sed -i 's/^mirrorlist=http/#mirrorlist=https/g' /etc/yum.repos.d/*.repo
Однако, если встречи с ошибками HTTPS (например, 301 Moved Permanently
), возможно, вам придется обновить сертификаты CA. Это можно сделать с помощью urlgrabber
, если у вас нет wget
.
Заключение
Из-за окончательного завершения обновлений CentOS 7 текущие репозитории более не доступны, поэтому необходимы изменения в конфигурации для доступа к старым версиям пакетов через vault.centos.org
. Убедитесь, что вы следуете указанным шагам, чтобы обеспечить стабильную работу вашей системы. Если у вас возникнут дополнительные вопросы, пожалуйста, не стесняйтесь задавать их.