В данной статье мы рассмотрим работу с пакетами и менеджерами пакетов в Red Hat (CentOS) операционных системах. Для работы с пакетами в операционных системах используют yum и rpm. В современной версии используется пакетный менеджер dnf, но он является "форком" от пакетного менеджера yum. Данный пакет разрабатывался в целях решить проблему производительности в первую очередь и в принципе он очень похож, поэтому мы посмотрим в статье на примере классических пакетных менеджеров.
В статье мы рассмотрим следующие вопросы:
- Установка, удаление и обновление пакетов.
- Поиск пакетов и их зависимостей.
- Получение полной информации о пакетах.
В статье нам понадобится понимание:
- rpm утилита управления пакетами в Red Hat системах.
- rpm2cpio разбор пакета на двоичные файлы.
- yum программа для работы с пакетами в Red Hat системах
- yumdownloader скачивание пакетов
- /etc/yum.repos.d./ - перечень репозиториев.
Если сравнивать с Ubuntu можно сказать, что вместо dpkg у нас будет rpm, а вместо apt будет yum и дополнительные особенности centos.
Открываем консоль. Переходим в режим суперпользователя, команда su. Посмотрим на команду rpm --help.
Функционал достаточно большой, все ключи на один экран не помещаются. Есть опции по запросу и проверке пакетов можно найти ключи в секции queryverify. Очень мощная утилита, но для работы все таки удобнее использовать пакетный менеджер yum.
Попробуем воспользоваться rpm, чтобы посмотреть его особенности. Лучше всего смотреть на примере. Скачаем программу webmin в виде установочного rpm пакета. Скачали пакет и положили в директорию tmp.
Переходим в нее cd /tmp. Далее можно посмотреть наличие файлов ls la.
Установим данный пакет. Для установки используем два ключа, ключ i означает install, ключ v означает verbose показывать ход установки.
rpm iv webmin-1.955-1.src.rpm
Пакет установился.
Можно теперь зайти в браузер и начать работу, но цель была посмотреть, как работает rpm. Для того, чтобы удалить пакет необходимо использовать ключ e, который означает erase. Команда будет выглядеть следующим образом:
rpm e webmin
Название пакета можно полностью не писать, должно работать.
Для того, чтобы проверить ключ у скаченного пакета есть ключ K.
rpm K webmin-1.955-1.noarch.rpm
Как из вывода видим, с пакетом не все в порядке отсутствует ключ для расшифровки подписи. Но данному пакету можно доверять, т. к. он скачан из надежного источника и качали сами.
Для того, чтобы проверить состоянии самого пакета есть другой ключ V
rpm Vv webmin-1.955-1.noarch.rpm
Можно получить информацию о пакете для этого необходимо использовать ключи qi, где query information.
rpm qi webmin-1.955-1.noarch.rpm
В данном выводе мы можем много информации получить о пакете, Название, Версия, дата сборки и т.д.
Возможно, когда-то может возникнуть необходимость посмотреть из чего состоит пакет rpm и разобрать его на составные части. Для этого необходимо использовать небольшую утилиту rpm2cpio. Расшифровывается т.е. rpm переделывается в cpio "copy inputoutput
" это и двоичный архиватор, и формат файла. Сейчас пакет rpm должен пере паковаться в формат cpio. Пользоваться следующим образом:
rpm2cpio webmin-1.955-1.noarch.rpm > webmin.cpio
Как мы видим, получили еще один файл с расширением cpio и вот этот файл в формате родном для других unix систем.
И так RPM это такая низкоуровневая утилита, которая позволяет работать с RPM пакетами.
YUM
Родной и понятный yum, так же имеет файл помощи, как и все другие утилиты.
yum help
У него меньше опций, меньше возможностей. И есть большое количество команд, проверить, очистить, удалить, получить информацию. Здесь не просто уже ключи, а целые слова и маленькие опции для комфортной работы.
Например, мы можем написать:
yum install openssh-clients
Можно видеть, как он ищет проверяет и говорит, что данный пакет установлен, последняя версия пакета и ему нечего делать.
Для удаления мы даем команду:
yum remove openssh-clients
Он запросит подтверждение на данное действие и если мы подтвердим, то утилита будет удалена.
Можно удалить весь ssh: yum remove openssh
, но тогда будет предупреждение, что обнаружена одна зависимость от openssh-clients и, если мы подтвердим обе утилиты будут полностью удалены. Т.е это умный пакетный менеджер позволяет работать так, чтобы лишние утилиты не болтались, т.е он сам находит и разрешает зависимости.
Еще интересный факт, что при установки пакетный менеджер проверяет зеркала и кэш, что ему позволяет определять, что установлена последняя версия программного обеспечения. В отличии от пакетного менеджера apt (Ubuntu), которому надо сначала обновить кэш apt update, yum автоматически сам обновляет информацию в процессе установки пакетов.
Репозиторий yum находится в следующей директории и лежат как отдельные файлы.
/etc/yum.repos.d/
Посмотрим базовый репозиторий
cat CentOS-Base.repo
Написано, что это зеркало для подключения клиентов и проверки статуса обновлений. Тут мы можем увидеть имя репозитория и зеркала где находятся обновления. Есть еще ключи, которые можно проверять, а можно и не проверять. Если мы изменим строчку gpgcheck = 0 то проверка осуществляться не будет. Можно самостоятельно добавить репозиторий, создав файл с расширением repo. И тогда получится свой репозиторий.
Для обновления всех пакетов используется команда yum upgrade. Если пакетный менеджер видит обновления, то он предложит сделать выбор установить или нет.
Дополнительно есть утилита для просто закачки пакетов без установки yumdownloader
. Работает просто. Переходим в нужную директорию и вводим, например, yumdownloader openssh
и происходит закачка.
И последнее пакетный менеджер умеет искать пакеты. Например, yum search openssh
.