Устранение ошибки 'sudo: yum: command not found' в Linux

LinuxBeginner
Практиковаться сейчас

Введение

При работе с дистрибутивами Linux на основе Red Hat, такими как CentOS или RHEL, ошибка "sudo: yum: command not found" может помешать вам устанавливать программные пакеты или обновлять систему. Эта ошибка обычно возникает, когда менеджер пакетов YUM отсутствует, неправильно настроен или поврежден.

YUM Command Not Found

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

Для этого занятия требуется подключение к интернету, поэтому запустить виртуальную машину могут только пользователи LabEx Pro. Перейдите на тариф Pro.

Настройка среды CentOS с использованием Docker

В этом занятии мы будем использовать Docker для создания среды CentOS, в которой можно работать с менеджером пакетов YUM. Docker позволяет быстро настроить изолированные контейнеры для тестирования и устранения неполадок без влияния на хост-систему.

Понимание менеджеров пакетов в Linux

Разные дистрибутивы Linux используют разные системы управления пакетами:

  1. Дистрибутивы на основе Debian (Ubuntu, Debian, Linux Mint):

    • Используют менеджер пакетов APT (Advanced Package Tool)
    • Формат пакетов: .deb
    • Команды: apt, apt-get, dpkg
  2. Дистрибутивы на основе Red Hat (RHEL, CentOS, Fedora):

    • Используют YUM (Yellowdog Updater, Modified) или DNF (Dandified YUM)
    • Формат пакетов: .rpm
    • Команды: yum, dnf, rpm

Создание контейнера CentOS

Начнем с создания контейнера CentOS с помощью Docker. Откройте терминал и выполните следующую команду:

docker run -it --name centos-lab centos:7 /bin/bash

Эта команда:

  • Создает интерактивный контейнер с именем centos-lab
  • Использует образ CentOS 7
  • Предоставляет вам оболочку bash внутри контейнера

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

cat /etc/os-release

Вы должны увидеть информацию, показывающую, что вы используете CentOS Linux.

CentOS Container

Симуляция и диагностика ошибки YUM

На этом этапе мы будем симулировать ошибку "sudo: yum: command not found" и узнаем, как ее диагностировать. Хотя в CentOS обычно уже предустановлен YUM, мы создадим сценарий, в котором YUM либо отсутствует, либо поврежден.

Проверка установки YUM

Сначала проверим, установлен ли YUM в вашем контейнере CentOS:

which yum
rpm -q yum

Команда which yum должна показать путь к исполняемому файлу YUM (обычно /usr/bin/yum), а команда rpm -q yum должна отобразить версию установленного пакета YUM.

Создание тестового сценария

Для того чтобы смоделировать ситуацию, когда YUM отсутствует, переименуем исполняемый файл YUM:

mv /usr/bin/yum /usr/bin/yum.backup

Теперь попробуем использовать YUM:

yum update

Вы должны увидеть сообщение об ошибке типа "yum: command not found". Это имитирует ситуацию, когда исполняемый файл YUM отсутствует в системе.

Попробуем также с использованием sudo:

sudo yum update

Вы увидите ошибку "sudo: yum: command not found", которая является объектом нашего устранения неполадок.

YUM Error

Понимание причин ошибки

Ошибка "sudo: yum: command not found" может возникнуть по нескольким причинам:

  1. Пакет YUM не установлен.
  2. Исполняемый файл YUM был перемещен, переименован или удален.
  3. Переменная окружения PATH не содержит директорию, в которой находится исполняемый файл YUM.
  4. Недостаточно прав для выполнения YUM.

Проверим переменную окружения PATH:

echo $PATH

Это должно отобразить список директорий, разделенных двоеточиями. Убедитесь, что /usr/bin (где обычно находится YUM) включен в этот список.

Решение проблемы отсутствия YUM

Теперь, когда мы диагностировали проблему, давайте решим ошибку "yum: command not found". Существует несколько способов исправить эту проблему, в зависимости от ее корневой причины.

Восстановление исполняемого файла YUM

Поскольку мы переименовали исполняемый файл YUM на предыдущем этапе, восстановим его в исходное место:

mv /usr/bin/yum.backup /usr/bin/yum

Теперь проверим, работает ли YUM снова:

yum --version

Вы должны увидеть информацию о версии YUM, что означает, что YUM теперь доступен.

YUM Working

Установка YUM (если он отсутствует)

В реальной ситуации, когда YUM полностью отсутствует, вам нужно будет установить его с помощью RPM (Red Hat Package Manager), который является более низкоуровневым инструментом управления пакетами. Вот как вы могли бы это сделать:

## Это для демонстрации. Не выполняйте эту команду, так как мы уже восстановили YUM
## rpm -ivh http://mirror.centos.org/centos/7/os/x86_64/Packages/yum-3.4.3-168.el7.centos.noarch.rpm

Исправление прав доступа к YUM

Если YUM существует, но имеет неправильные права доступа, вы можете исправить их с помощью команды chmod:

## Проверьте текущие права доступа
ls -l /usr/bin/yum

## Установите правильные права доступа, если необходимо
chmod 755 /usr/bin/yum

Правильные права доступа для YUM должны быть 755 (доступны для чтения и выполнения всеми, доступны для записи только владельцу).

Обновление переменной PATH (если необходимо)

Если директория, содержащая YUM, не находится в вашей переменной PATH, вы можете добавить ее временно с помощью следующей команды:

export PATH=$PATH:/usr/bin

Для постоянного решения вы должны добавить эту строку в файл конфигурации вашей оболочки (например, .bashrc).

Устранение неполадок в конфигурации YUM

Даже если YUM установлен правильно, вы можете столкнуться с другими проблемами, которые препятствуют его корректной работе. Давайте рассмотрим некоторые распространенные проблемы с конфигурацией YUM и способы их решения.

Понимание файлов конфигурации YUM

Конфигурация YUM в основном контролируется следующими файлами и директориями:

  1. Основной файл конфигурации: /etc/yum.conf
  2. Директория файлов репозиториев: /etc/yum.repos.d/

Давайте посмотрим на основной файл конфигурации:

cat /etc/yum.conf

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

Проверка репозиториев YUM

Репозитории YUM определяются в файлах с расширением .repo в директории /etc/yum.repos.d/. Давайте выведем список этих файлов:

ls -l /etc/yum.repos.d/

Теперь давайте посмотрим на один из файлов репозитория:

cat /etc/yum.repos.d/CentOS-Base.repo

Каждая определение репозитория включает:

  • Уникальный идентификатор репозитория в квадратных скобках (например, [base])
  • name: Описательное название
  • baseurl: URL-адрес, где находятся пакеты
  • enabled: Активен ли репозиторий (1) или нет (0)
  • gpgcheck: Следует ли проверять подписи пакетов (1) или нет (0)

Симуляция проблемы с репозиторием

Давайте смоделируем проблему с репозиторием, переименовав директорию репозиториев:

mv /etc/yum.repos.d /etc/yum.repos.d.backup
mkdir /etc/yum.repos.d

Теперь попробуйте использовать YUM:

yum update

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

YUM Error

Восстановление конфигурации репозитория

Давайте восстановим конфигурацию репозитория:

rm -rf /etc/yum.repos.d
mv /etc/yum.repos.d.backup /etc/yum.repos.d

Теперь проверьте, работает ли YUM снова:

yum repolist

Это должно вывести список активных репозиториев на вашей системе.

Обслуживание YUM и рекомендации по использованию

Теперь, когда мы решили различные проблемы с YUM, давайте обсудим рекомендации по поддержанию здоровой системы управления пакетами в CentOS или других дистрибутивах на основе Red Hat.

Регулярные обновления системы

Периодическое обновление системы является важным условием обеспечения безопасности и стабильности. Регулярно выполняйте следующие команды:

## Обновить метаданные пакетов
yum check-update

## Установить все доступные обновления
yum update -y

Очистка кэша YUM

YUM хранит кэш метаданных пакетов и загруженных пакетов. Периодическая очистка этого кэша может помочь решить проблемы и освободить дисковое пространство:

## Очистить метаданные
yum clean metadata

## Очистить пакеты
yum clean packages

## Очистить все
yum clean all

## Пересобрать кэш
yum makecache

Управление плагинами YUM

Функциональность YUM может быть расширены с помощью плагинов. Чтобы вывести список установленных плагинов:

yum list installed "yum-plugin-*"

Среди полезных плагинов можно выделить:

  • yum-plugin-fastestmirror: Автоматически выбирает самый быстрый зеркало репозитория.
  • yum-plugin-security: Фильтрует обновления по степени важности для безопасности.
  • yum-plugin-priorities: Устанавливает приоритеты для разных репозиториев.

Устранение неполадок с YUM

При возникновении проблем с YUM следующие команды могут помочь в диагностике:

## Проверить доступность репозиториев
yum repolist

## Показать историю YUM (прошлые транзакции)
yum history

## Проверить наличие проблем с пакетами
yum check

## Запустить YUM с выводом отладочной информации
yum -v update

Выход из контейнера

После завершения работы в лабораторной работе выйдите из контейнера CentOS, введя:

exit

После этого вы вернетесь в систему Ubuntu на хост-машине.

Итоги

Поздравляем вас с успешным завершением данной лабораторной работы по устранению ошибки "sudo: yum: command not found" в Linux. В этом практическом упражнении вы:

  1. Создали среду CentOS с использованием Docker для безопасных экспериментов.
  2. Симулировали и диагностировали ошибку "yum: command not found".
  3. Реализовали различные решения для восстановления функциональности YUM.
  4. Исследовали распространенные проблемы с конфигурацией YUM и способы их решения.
  5. Узнали рекомендации по обслуживанию и устранению неполадок с YUM.

Основные выводы из данной лабораторной работы:

  • Ошибка "yum: command not found" может возникнуть из-за отсутствия исполняемых файлов, неправильных прав доступа или проблем с переменной PATH.
  • Конфигурация YUM контролируется файлом /etc/yum.conf и файлами в директории /etc/yum.repos.d/.
  • Регулярные задачи по обслуживанию, такие как очистка кэшей и обновление пакетов, помогают поддерживать здоровье системы.
  • Docker предоставляет отличную среду для безопасного изучения и устранения неполадок в системах Linux.

Эти навыки помогут вам обслуживать и устранять неполадки в системах Linux на основе Red Hat, обеспечивая корректную работу системы управления пакетами для установки программного обеспечения и обновления системы.