Yum не работает с Centos 7

Обновлено: 21.11.2024

Последнее обновление: 12 апреля 2021 г.

Автор: Уриэль Амар

В этой статье объясняется, как исправить проблемы с сервером CentOS®, когда кэш yum не обновляется из-за неудачного обновления проверки. Во время этого процесса может отображаться несколько ошибок в зависимости от причины проблемы. В следующей разбивке показано, как выявить и решить эти проблемы:

Очистить кеш yum

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

Проверить наличие отсутствующих репозиториев

Выполните следующую команду, чтобы убедиться в отсутствии отсутствующих репозиториев.

Вы также можете проверить это в папке /etc/yum.repos.d. Затем вы можете установить недостающие репозитории с помощью команды yum install или добавить файл вручную в папку /etc/yum.repos.d.

Проверить наличие отключенных репозиториев

Если необходимые репозитории доступны, но не работают, выполните следующие действия, чтобы отредактировать файл репозитория:

Выполните следующую команду, заменив [имя файла] именем файла репозитория и [расширение] соответствующим расширением:

Откройте файл репозитория в редакторе по вашему выбору и измените значение enabled=0 на enabled=1.

Устранение ошибки PycURL

В случае повреждения файла репозитория может отображаться несколько различных типов ошибок. Например, если команда yum install завершается со следующей ошибкой, это может быть связано с неверным URL-адресом репозитория, как показано в этом примере:

Исправление URL-адреса репозитория в файле репозитория и очистка кеша yum должны решить эту проблему.

Кроме того, вы можете использовать команду yum clean metadata для очистки кеша метаданных, если какие-либо дополнительные XML-файлы вызвали повреждение.

Устранение фатальной ошибки, запустить восстановление базы данных

Если yum завершается с ошибкой с сообщением Неустранимая ошибка, запустите восстановление базы данных, вам следует удалить базу данных и вручную перестроить ее с помощью следующих команд:

Проверить конфликты зависимостей

Если вы не можете установить пакет из-за отсутствия зависимости или несоответствия версии, ручная установка каждой зависимости может решить эту проблему. Кроме того, удаление и переустановка локального пакета может устранить несоответствие версий.

К сожалению, не существует простого решения большинства проблем с зависимостями из-за множества вовлеченных факторов. В таких случаях рассмотрите возможность добавления репозитория, содержащего правильную зависимость.

Поделитесь этой информацией:

© 2020 Rackspace США, Inc.

Если не указано иное, содержимое этого сайта находится под лицензией Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License

Диспетчер пакетов yum — один из самых важных инструментов, доступных системному администратору CentOS 7. Если по разным причинам команда не работает, обновление, установка и удаление пакетов становится очень сложной задачей.

Хотя программное обеспечение по-прежнему можно устанавливать из пакетов RPM или компилировать из исходного кода, у yum есть много преимуществ, таких как автоматическая установка зависимостей и простое обновление системы.

В этой статье мы предполагаем, что нет общих проблем, таких как обрыв интернет-соединения или серьезных общесистемных проблем.

Цель этого поста – обсудить наиболее распространенные примеры сбоев команды yum, объяснить как основную причину, так и способы ее устранения.

Нет доступных репозиториев

Некоторые установки CentOS 7 не настраивают репозитории yum по умолчанию, поэтому yum не сможет установить или обновить какой-либо пакет.

Вы можете быстро проверить, так ли это, перейдя в папку /etc/yum.repos.d, чтобы увидеть, присутствуют ли какие-либо файлы, или выполнив следующую команду:

Если они отсутствуют, вам придется создать и заполнить файлы самостоятельно. Поиск в Google поможет вам найти нужную информацию о репозитории для вашей версии CentOS 7.

Отключенные репозитории

Еще одна возможная проблема – это когда репозиторий настроен, но отключен, что трудно устранить, поскольку сообщение об ошибке не отображается.

Например, если репозиторий epel отключен, попытка установить такой пакет, как htop, завершится ошибкой, поскольку yum не сможет его найти.

Вот пример отключенного репозитория в файле /etc/yum.repos.d/epel.repo:

Простое решение – изменить значение в строке enable на 1, а затем запустить yum update, чтобы обновить список пакетов и установить необходимое программное обеспечение.

Отдельные пакеты также могут быть исключены из обновлений. Они настраиваются в файле /etc/yum.conf, найдите строку, начинающуюся с exclude.

Неработающие репозитории

Еще одна очень распространенная проблема — наличие неработающих репозиториев, из-за которых весь процесс обновления yum может завершиться сбоем.

Это может произойти по нескольким причинам, например из-за опечатки в файлах конфигурации или репозиториев, которые больше не доступны или изменили свои URL-адреса.

В отличие от других проблем yum, эту обычно легко диагностировать, поскольку программа выводит ошибку, указывающую на неисправный репозиторий.

Отредактируйте его файл в /etc/yum.repos.d и либо исправьте ошибку, либо полностью отключите неработающий репозиторий, чтобы остальная часть обновления могла завершиться.

Конфликты зависимостей

Yum обычно устанавливает и обновляет любые зависимости автоматически, без дополнительного вмешательства пользователя. Однако бывают случаи, когда пакет не может быть установлен из-за того, что не найдена зависимость или указана неправильная версия.

Эта проблема может быть довольно сложной, и для нее нет универсального решения.

Иногда вы можете просто установить недостающие зависимости вручную, а затем снова выполнить первоначальную команду. Конфликты версий можно устранить, удалив найденный в системе пакет.

В некоторых случаях единственным вариантом является настройка дополнительного репозитория, в котором можно найти правильную зависимость.

Проблемы с кэшированием

Диспетчер пакетов можно настроить таким образом, чтобы данные пакета оставались на диске после установки, чтобы ускорить будущие задачи.

По умолчанию данные хранятся в папке /var/cache/yum.

Иногда кэш может быть поврежден, что приведет к полному сбою команды. Вы можете вручную удалить все содержимое папки кеша или воспользоваться самой командой yum для ее очистки:

Приведенная выше команда удаляет все данные в папке. В качестве альтернативы можно заставить yum проверять кеш, не удаляя его:

Проблемы с базой данных

Системы CentOs 7 поддерживают две разные базы данных пакетов на диске, обе они могут быть повреждены и привести к ошибкам.

Когда база данных RPM повреждена, yum выдает ошибки, подобные "Неустранимая ошибка, запустите восстановление базы данных".

Вам придется вручную удалить базу данных, а затем перестроить ее с помощью следующих команд:

Собственная база данных пакетов Yum хранится в папке /var/lib/yum/yumdb, и доступ к ней можно получить с помощью команды yumdb (часть пакета yum-utils).

Когда база данных повреждена, это может вызвать ошибку «образ диска базы данных искажен» при запуске yum.

В большинстве случаев проблема легко решается с помощью этой команды:

Однако, если после обновления по-прежнему возникают сбои, вам, возможно, придется сначала перестроить базу данных RPM, а затем снова очистить базу данных yum.

Yum – очень мощный менеджер пакетов, который значительно упрощает установку и обновление программного обеспечения. Хотя существует множество возможных причин сбоя yum, мы представили наиболее распространенные из них в ограниченном пространстве этой записи блога, а также необходимые шаги по устранению неполадок.

О системе: Centos7, VM, 64bit
История: установлены репозитории SOGO nightly, возможно другие(?). было некоторое время назад, репозиторий Centos Enterprise (epel). до недавнего времени все работало нормально
Проблема(?): попытка установить что-либо с помощью 'yum install

' приводит к полной мешанине зависимостей, одна из которых — basesystem.
Я ожидал только пакет и, возможно, несколько зависимостей. Я боюсь, что дальнейшая установка "сломит" мою систему.

Другой пример: gawk уже установлен, но хочет переустановить его.
И самая большая проблема заключается в том, что «установленный список yum» не возвращает никаких пакетов, только включенные репозитории.
Что привело к тому, что я попробовал «rpm -qa», который ничего не вернул, а не полный список установленных пакетов (чего я и ожидал).
Может, проблема в RPM, а не в YUM?
Любое руководство и помощь приветствуются.

Спасибо,
Кит

Что такое СОГО? Вы произносите это так, как будто это обычное дело, но я такого раньше не слышал.

Это ПО для совместной работы.
Пришлось добавить репозиторий, а затем установить через YUM. может ничего не значить, скорее всего, нет, поскольку до недавнего времени (в прошлом месяце или около того) все работало нормально, а SOGO изменил версии и прекратил выпуск предыдущей версии.
Yum пожаловался на это, поэтому я удалил этот файл из /etc/yum.repos.d
Именно после этого они заметили, что Yum ведет себя ненормально.

Я не знаю, почему RPM и YUM не работают, поэтому просто описываю, что я сделал, чтобы помочь людям.

Слишком прямо и ясно:

Кто-нибудь еще сталкивался с этим?
Какими советами по устранению неполадок кто-нибудь может поделиться?
Что вызывает эту проблему?
Какие рекомендации по устранению проблемы?
Не повредит ли переустановка базовой системы мою систему?
Есть ли какие-нибудь еще "подводные камни"?

Может прийти в субботу и попробовать.

Опубликуйте вывод yum repolist all, а также вывод транзакции yum, которая не работает.Все выходные данные, начиная с того, что вы вводите в командной строке, и до возврата из командной строки.

'список установленных пакетов yum' должен показывать все установленные пакеты; это не так.
'rpm -qa' должен показывать все установленные пакеты; это не так.
Список истории yum показывает, что база данных rpm была изменена вне yum. вероятно, когда произошла коррупция.

У меня есть резервная копия /var/lib/rpm

Вложения yum history list.txt (1,87 КБ) Скачано 16 раз yum listinstalled.txt (292 байта) Скачано 16 раз

Я заменил ваш zip-файл репоста реальным содержимым. Я не вижу причин, по которым каждый должен скачивать его, чтобы разархивировать, только для того, чтобы прочитать, когда он может быть встроенным.

У вас что-то ужасно не так с вашей системой, и я подозреваю, что в ближайшем будущем вы переустановите ее. Все упоминания $releasever в выводе репоста должны быть преобразованы в фактический номер версии, полученный из пакета centos-release.

Если rpm -qa ничего не возвращает, ваша база данных rpm повреждена. Если у вас есть действующая резервная копия до того, как она была повреждена, вы можете попробовать восстановить ее. Затем вам может понадобиться просмотреть выходные данные из истории yum, чтобы определить, что было сделано после резервного копирования и до восстановления.

Я заархивировал его, потому что ваш форум отказался загружать, очевидно, из-за размера.

Для других читателей, столкнувшихся с этой проблемой, я смог восстановить ее, восстановив /var/lib/rpm/Packages
Затем запустите rpm --rebuilddb
затем yum clean all
затем yum update
Мне пришлось несколько раз запустить yum clean, прежде чем обновление заработало

В этом руководстве объясняется, как настроить и использовать репозитории Yum на CentOS 7 VPS.

В официальном репозитории CentOS 7 есть огромный список пакетов, и он охватывает почти все базы с точки зрения программного обеспечения для серверов, но иногда нам нужны некоторые дополнительные пакеты, которых нет в официальных репозиториях. В этом случае мы можем просто добавить новые репозитории, чтобы еще больше расширить каталог доступных нам пакетов. Начнем с руководства.

Шаг 1. Войдите через SSH

Войдите в свой CentOS 7 VPS через SSH как пользователь root или как учетная запись с привилегиями sudo:

Обязательно замените «IP_Address» и «Port_number» на IP-адрес вашего сервера и порт SSH.

Шаг 2. Обновите пакеты ОС и установите пакет yum-utils:

После входа на сервер выполните следующие команды, чтобы убедиться, что все установленные пакеты обновлены:

Установите пакет yum-utils с помощью следующей команды:

Мы можем активировать репозиторий EPEL (Extra Packages for Enterprise Linux) в CentOS 7 / RHEL 7, поддерживаемый специальной группой Fedora Special Interest Group, которая создает, поддерживает и управляет высококачественными дополнительными пакетами для корпоративных версий Linux. Сюда входят Red Hat Enterprise Linux (RHEL), CentOS, Scientific Linux (SL) и Oracle Enterprise Linux (OEL).

Шаг 3. Установите репозиторий EPEL

Чтобы установить EPEL rpm, сделайте это с помощью следующей команды:

Вывод будет выглядеть так, как показано ниже:

Проверьте только что установленный репозиторий. Вы должны найти репозиторий EPEL в списке.

Вы должны получить следующий вывод или что-то похожее на него:

Чтобы просмотреть все пакеты, доступные в репозитории EPEL, выполните следующую команду:

Вывод этой команды покажет вам список пакетов.

Примечание. Другие полезные репозитории CentOS находятся в каталоге /etc/yum.repos.d. При включении какого-либо репозитория вручную путем редактирования файла .repo убедитесь, что в файле репо используется основная версия для CentOS, в данном случае это CentOS 7.

Например, отредактируйте файл CentOS-Base.repo и добавьте/измените следующие строки:

Список всех репозиториев

Чтобы получить список всех репозиториев, включая все включенные и отключенные репозитории, выполните:

Включение репозитория Yum

Чтобы включить репозиторий Yum, выполните следующую команду от имени пользователя root:

Отключение репозитория Yum

Чтобы отключить репозиторий Yum, выполните следующую команду от имени пользователя root:

Не забудьте заменить на фактическое имя репо.

Если по какой-то причине мы не можем найти нужный нам программный пакет в официальном репозитории и репозитории EPEL, мы можем расширить возможности сервера за счет еще большего количества программного обеспечения, добавив дополнительные репозитории, такие как репозиторий Remi RPM, который не является официальным репозиторий дистрибутива CentOS, но он хорошо поддерживается и всегда обновляется.

Remi Collet поддерживает большую коллекцию RPM-пакетов, включая последние версии PHP и т. д. Обратите внимание, что этот репозиторий не всегда хорошо сочетается с другими сторонними репозиториями CentOS, поэтому проверьте список репозиториев с помощью yum repolist и отключите дополнительные репозитории, если есть конфликты пакетов.

Мы можем установить репозиторий Remi с помощью следующей команды:

Если, например, мы хотим включить PHP 7.2, мы можем отредактировать файл /etc/yum.repos.d/remi-php72.repo и изменить enable=0 на enabled=1:

Другим хорошим неофициальным репозиторием CentOS является Webtatic Repo. Этот репозиторий предоставляет обновленные пакеты с более поздними версиями PHP, MySQL и других пакетов. Обладая этой информацией, вы теперь можете установить любой репозиторий по вашему выбору и расширить функциональность вашего сервера любым способом, который вам нужен.

Конечно, вам не нужно устанавливать и настраивать дополнительные репозитории в CentOS 7, если вы используете наши решения для полностью управляемой поддержки VPS. В этом случае вы можете просто попросить наших опытных администраторов Linux настроить дополнительные репозитории в CentOS 7 для вас, а также все остальное, что вам может понадобиться. Они доступны круглосуточно и без выходных и немедленно обработают ваш запрос.

ПС. Если вам понравился этот пост о том, как настроить и использовать репозитории Yum на CentOS VPS, поделитесь им с друзьями в социальных сетях, используя ярлык для общего доступа, или просто оставьте ответ ниже. Спасибо.

Читайте также: