Управление пакетами и репозиториями YUM, RPM в CentOS

rpm

rpm — утилита нижнего уровня для управления пакетами, при установке пакета не устанавливает зависимости, может получить сведения о пакетах в системе. Аналог dpkg из Ubuntu.

  • rpm
    • -qа все установленные пакеты
    • -q <package-name> поиск установленного пакета в системе
    • -qр <package-name>.rpm обращение к указанному rpm файлу
    • -qf <path> определение принадлежности файла к пакету, нужно указать именно путь, а не просто название
    • -qd <package-name> где документация к пакету
    • -qlp <package-name>.rpm вывод списка файлов, которые содержатся в rpm пакете
    • -qip <package-name>.rpm вывод информации о rpm пакете
    • -iv <package-name>.rpm установка rpm пакета с выводом информации об установке
    • -e <package-name> удаление пакета
    • -K <package-name>.rpm проверка ключа rpm пакета
    • -Vv <package-name> проверка состояния пакета

yum

Yum (yellowdog updater modified) — пакетный менеджер для пакетов формата rpm.

  • yum
    • install <package-name> или <url> установка пакета
    • reinstall <package-name> или <url> переустановка пакета
    • search <package-name> поиск пакетов в репозитори по названию и описанию
    • info <package-name> просмотр подробной информации о пакете
    • provides <path> вывод списка пакетов, соответствующих пути
    • list вывод списка пакетов в репозитории
    • list <package-name> поиск в репозитории по названию пакета
    • list <package-name> --showduplicates отображение всех версий, которые есть в репозиториях
    • list installed вывод списка всех установленных пакетов
    • list installed <package-name-1> <package-name-2> проверка, установлены ли указанные пакеты
    • deplist <package-name> вывод списка зависимостей пакета
    • check-update проверка, есть ли доступные обновления
    • update <package-name> обновление указанного пакета
    • update обновление всех пакетов
    • remove <package-name> удаление указанного пакета и всех зависимых от него пакетов
    • --downloadonly install <package-name> скачивание пакета без установки. Полученный после скачивания файл будет в каталоге /var/cache/yum/x86_64/7/base/packages/

История установок

У yum есть история установок, они логируются в
/var/log/yum.log
  • yum history вывод истории установок
  • yum history info 5 вывод информации об определенной транзакции, что конкретно сделано в транзакции по номеру
  • yum history undo 5 откат установки
  • yum history redo 5 повторение установки

Группы и модули ПО

Группы ПО - это совместно устанавливаемое ПО.

Группы окружения - это наборы других групп.

  • yum grouplist вывод списка групп
  • yum grouplist hidden вывод списка скрытых групп
  • yum groupinfo "<group-name>" вывод описания группы, в том числе ее состав. Знак плюс значит, что в данный момент пакет не установлен и будет установлен при установке группы; минус - не установлен и не будет; равно - пакет установлен в составе группы; без знака - пакет установлен не в составе группы
  • yum groupinstall "<group-name>" установка группы
  • yum groupremove "<group-name>" удаление группы

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

  • yum module list вывод списка модулей
  • yum module info container-tools:2.0 подробная информация о модуле

Репозитории

  • yum repolist список репозиториев подключенных к системе
  • yum clean all очистка кэша списка репозиториев
  • yum repo-packages epel list вывод списка пакетов, доступных для установки в конкретном репозитории
  • yum repoinfo epel получение информации об указанном репозитории
    Управление репозиториями осуществляется 3 вариантами:
  • Файлы с данными о репозитории в каталоге /etc/yum.repos.d/;
  • Установка rpm пакета с данными о репозитории;
  • Утилита yum-config-manager.

Файлы с данными о репозитории

Файлы репозиториев для yum располагаются в каталоге
/etc/yum.repos.d
и содержат примерно следующее
[epel]
name=Extra Packages for Enterprise Linux 8 - $basearch
baseurl=https://download.example/pub/epel/8/Everything/$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
  • name - имя репозитория, может быть любым;
  • baseurl - ссылка на репозиторий;
  • enabled - 1 (репозиторий подключен) или 0 (репозиторий отключен);
  • gpgcheck - 1 (осуществлять проверку gpt подписи) или 0 (не осуществлять проверку gpt подписи);
  • gpgkey - ссылка на gpt ключ репозитория.

Репозитории и пакеты в репозиториях подписываются приватным ключом, он есть только у людей, которые добавляют пакеты в репозитории. Это сделано, потому что кто-нибудь может встать посреди трафика и обманывать, притворяясь нужным сервером. Если кто то притвориться репозиторием, то пользователь будет скачивать и устанавливать пакеты с этого сервера, не догадываясь, что устанавливает ненастоящие пакеты. При добавлении репозитория пользователь получает публичный ключ, он может быть на сайте репозитория, либо прийти вместе с системой. Благодаря публичному ключу можно убедится, что репозиторий или пакет именно тот, который нужен.

Для добавления ключа в систему в ручную нужно скачать его, например через wget, затем импортировать
rpm --import filekey.asc

Для удаления репозитория достаточно удалить его файл.

Установка rpm пакета с данными о репозитории

Установка по ссылке
yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
Если пакет с репозиторием есть в базовом репозитории можно установить указав его имя, например как epel
yum install epel-release
Для удаления репозитория нужно удалить соответствующий пакет
yum remove epel-release

Утилита yum-config-manager

Устанавливается командой
yum install yum-utils
Добавление репозитория осуществляется командой
yum-config-manager --add-repo="https://dl.fedoraproject.org/pub/epel/7/x86_64/"
Выключение и включение репозитория
yum-config-manager --disable epel
yum-config-manager --enable epel