Вопрос или проблема
Эта ошибка сводит меня с ума, я пытался все, что обсуждалось на форумах, и ничего не работает.
Когда я набираю:
# yum update
Я получаю следующую ошибку:
[root@www yum.repos.d]# yum update
Загруженные дополнения: fastestmirror
Загрузка скоростей зеркал из кэшированного файла хоста
Не удалось получить mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock
ошибка была 14: curl#56 - "Ошибка получения: Соединение сброшено удаленной машиной"
Одно из настроенных репозиториев не удалось (Неизвестно), и у yum нет достаточно кэшированных данных для продолжения. На данный момент единственное безопасное действие, которое может выполнить yum, это завершение с ошибкой. Есть несколько способов "исправить" это:
1. Связаться с разработчиками репозитория и попросить их исправить проблему.
2. Перенастроить baseurl и т. д. для репозитория, чтобы указать на работающий
upstream. Это чаще всего полезно, если вы используете более новую
версию дистрибутива, чем поддерживается репозиторием (и пакеты для предыдущей версии
дистрибутива все еще работают).
3. Запустить команду с временно отключенным репозиторием
yum --disablerepo=<repoid> ...
4. Отключить репозиторий навсегда, чтобы yum не использовал его по умолчанию. Yum
просто проигнорирует репозиторий, пока вы не включите его снова
постоянно или не используете --enablerepo для временного использования:
yum-config-manager --disable <repoid>
или
subscription-manager repos --disable=<repoid>
5. Настроить неработающий репозиторий так, чтобы он пропускался, если он недоступен.
Обратите внимание, что yum попытается связаться с репозиторием при выполнении большинства команд,
поэтому каждый раз придется пытаться и терпеть неудачу (и таким образом
yum будет медленнее). Однако, если это очень временная проблема,
это часто является хорошим компромиссом:
yum-config-manager --save --setopt=<repoid>.skip_if_unavailable=true
Не удается найти действительный baseurl для repo: base/7/x86_64
Это производственный сервер с собственным IP, поэтому я не пробовал DHCP включенным и ONBOOT=no (я установил его в yes) и так далее.
Если я набираю:
# curl -v 'http://mirrorlist.centos.org/?repo=os&arch=x86_64&release=7'
Вот что я получаю:
[root@www yum.repos.d]# curl -v 'http://mirrorlist.centos.org/?repo=os&arch=x86_64&release=7'
* Попытка подключиться() к mirrorlist.centos.org порт 80 (#0)
* Пытаюсь 2001:1b48:203::4:10...
* Подключено к mirrorlist.centos.org (2001:1b48:203::4:10) порт 80 (#0)
> GET /?repo=os&arch=x86_64&release=7 HTTP/1.1
> User-Agent: curl/7.29.0
> Host: mirrorlist.centos.org
> Accept: */*
>
* Ошибка получения: Соединение сброшено удаленной машиной
* Закрытие соединения 0
curl: (56) Ошибка получения: Соединение сброшено удаленной машиной
Содержимое моего CentOS-Base.repo
следующее:
# CentOS-Base.repo
#
# Система зеркал использует IP-адрес клиента и статус обновления каждого зеркала для выбора зеркал, которые обновлены и
# географически близки к клиенту. Вы должны использовать это для обновлений CentOS,
# если вы не выбираете другие зеркала вручную.
#
# Если mirrorlist= не работает для вас, как резервный вариант, вы можете попробовать
# закомментированную строку baseurl= вместо этого.
#
#
[base] name=CentOS-$releasever - Базовый
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#выпущенные обновления
[updates] name=CentOS-$releasever - Обновления
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#дополнительные пакеты, которые могут быть полезны
[extras] name=CentOS-$releasever - Дополнительно
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#дополнительные пакеты, которые расширяют функциональность существующих пакетов
[centosplus] name=CentOS-$releasever - Плюс
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
И содержимое /etc/yum.conf
следующее:
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
# Это значение по умолчанию, если вы сделаете его большим, yum не увидит, если метаданные
# новее на удаленном ресурсе, и вы "сэкономите" пропускную способность, не загружая
# новые метаданные и "расплатитесь" за это тем, что yum не будет иметь правильной
# информации.
# Особенно важно иметь правильную метадату для дистрибутивов, таких как
# Fedora, которые не хранят старые пакеты. Если вам не нравится, что эта проверка
# прерывает использование командной строки, гораздо лучше, чтобы что-то
# проверяло метаданные раз в час (yum-updatesd сделает это).
# metadata_expire=90m
# УКАЖИТЕ ВАШИ РЕПО ЗДЕСЬ ИЛИ В отдельных файлах с именами file.repo
# в /etc/yum.repos.d
Как я могу снова заставить работать yum update
???
На сегодняшний день (5 июля 2024 года),
http://mirrorlist.centos.org
больше не работает.
Что помогло мне (на CentOS 7) – это перейти к файлам .repo в директории /etc/yum.repos.d
И закомментировать все строки mirrorlist.
И раскомментировать все строки baseurl.
Для версий CentOS 8 и ниже вам также потребуется изменить mirror.centos
на vault.centos
в строках baseurl, так как они устарели.
Например:
# CentOS-Base.repo
#
# Система зеркал использует IP-адрес клиента и статус обновления каждого зеркала для выбора зеркал, которые обновлены и
# географически близки к клиенту. Вы должны использовать это для обновлений CentOS,
# если вы не выбираете другие зеркала вручную.
#
# Если mirrorlist= не работает для вас, как резервный вариант, вы можете попробовать
# закомментированную строку baseurl= вместо этого.
#
#
[base]
name=CentOS-$releasever - Базовый
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#выпущенные обновления
[updates]
name=CentOS-$releasever - Обновления
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#дополнительные пакеты, которые могут быть полезны
[extras]
name=CentOS-$releasever - Дополнительно
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#дополнительные пакеты, которые расширяют функциональность существующих пакетов
[centosplus]
name=CentOS-$releasever - Плюс
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
В результате должно выглядеть так:
# CentOS-Base.repo
#
# Система зеркал использует IP-адрес клиента и статус обновления каждого зеркала для выбора зеркал, которые обновлены и
# географически близки к клиенту. Вы должны использовать это для обновлений CentOS,
# если вы не выбираете другие зеркала вручную.
#
# Если mirrorlist= не работает для вас, как резервный вариант, вы можете попробовать
# закомментированную строку baseurl= вместо этого.
#
#
[base]
name=CentOS-$releasever - Базовый
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#выпущенные обновления
[updates]
name=CentOS-$releasever - Обновления
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#дополнительные пакеты, которые могут быть полезны
[extras]
name=CentOS-$releasever - Дополнительно
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
#дополнительные пакеты, которые расширяют функциональность существующих пакетов
[centosplus]
name=CentOS-$releasever - Плюс
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Попробуйте yum clean all
, чтобы очистить кеш и прочие вещи, если после этого все не будет работать сразу.
Скриптовый способ изменения CentOS-Base.repo с mirror.centos.org на vault.centos.org – это с помощью sed
:
sed -i -e 's/^mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-Base.repo
sed -i -e 's/^#baseurl=http:\/\/mirror./baseurl=https:\/\/vault./g' /etc/yum.repos.d/CentOS-Base.repo
yum clean all
yum makecache
У меня была такая же проблема, используя статически настроенный IP-адрес. Мое решение, чтобы это сработало, заключалось в настройке DNS в конфигурационном файле интерфейса.
vi /etc/sysconfig/network-scripts/$InterfaceName$
Я добавил следующие строки:
DNS1=Внутренний IP-адрес сервера
DNS2=8.8.8.8
Это, похоже, сработало для меня.
Ответ или решение
Решение проблемы: CentOS 7 не может найти действительный baseurl для репозитория
Если вы столкнулись с ошибкой Cannot find a valid baseurl for repo: base/7/x86_64
при выполнении команды yum update
на CentOS 7, это может быть связано с несколькими причинами, включая проблемы с подключением к интернету, некорректные настройки репозиториев или недоступные зеркала.
Шаг 1: Проверка подключения к сети
Первым делом, убедитесь, что ваш сервер имеет доступ к интернету. Для этого попробуйте выполнить команду:
curl -v 'http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock'
Если вы видите сообщение о сбоях, например Recv failure: Connection reset by remote machine
, это указывает на то, что сервер не может получить доступ к указанному URL.
Шаг 2: Поскольку зеркала CentOS более недоступны…
С учетом того, что вы указали, что на сегодняшний день (июль 2024 года) адрес http://mirrorlist.centos.org
недоступен, вам необходимо внести изменения в файлы репозиториев.
- Перейдите в каталог репозиториев:
cd /etc/yum.repos.d/
- Откройте файл
CentOS-Base.repo
для редактирования:
vi CentOS-Base.repo
- Закомментируйте строки с
mirrorlist
и раскомментируйте строки сbaseurl
, изменив их наvault.centos.org
. После изменений файл должен выглядеть следующим образом:
[base]
name=CentOS-$releasever - Base
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
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://vault.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
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://vault.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever - Plus
# mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
baseurl=http://vault.centos.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Шаг 3: Очистка кэша YUM
После внесения изменений выполните команды для очистки кэша и обновления кэша yum:
yum clean all
yum makecache
Шаг 4: Проверка DNS
Если ошибка не исчезает, проверьте настройки DNS. Подключение к интернету может быть нарушено из-за неправильно настроенных DNS:
- Откройте файл настройки вашего сетевого интерфейса:
vi /etc/sysconfig/network-scripts/ifcfg-<имя вашего интерфейса>
- Добавьте или измените строки DNS, чтобы они выглядели следующим образом:
DNS1=Ваш_IP_Сервера
DNS2=8.8.8.8
- Перезапустите сетевой интерфейс или сам сервер, чтобы изменения вступили в силу.
Заключение
Внесение изменений в конфигурацию yum и проверка настроек сети должно помочь в устранении ошибки Cannot find a valid baseurl for repo
. Убедитесь, что все изменения сохранены, и повторите попытку выполнять команду yum update
.
Если возникнут новые проблемы, не стесняйтесь искать помощь на популярных форумах и в сообществе CentOS, где пользователи могут поделиться своим опытом и дать дополнительные советы.