Памятка по управлению пакетами в CentOS, Fedora и RHEL
Вот некоторые «специалисты» авторитетно заявляют, что самая большая проблема в Linux – это большое количество дистрибутивов, которые прям так сильно отличаются пакетными менеджерами, путями до конфигов и прочим. На самом деле, в 99% случаев используется либо что-то на базе Debian, либо на базе RedHat. Всякие Arch и Gentoo, конечно, тоже существуют, но в основном они существуют на десктопах энтузиастов, а не в продакшене. И сегодня мы с вами убедимся, что отличий CentOS от Debian, с которым мы уже неплохо знакомы, не так уж много. По крайней мере, в вопросах, касающихся управления пакетами.
В RHEL, CentOS и Fedora используется менеджер пакетов Yum. Yum имеет ряд инетересных отличий от Apt, используемого в Debian и Ubuntu. Например, есть поддержка плагинов и групп пакетов. Кроме того, можно делать undo/redo изменений с пакетами. Мне лично интерфейс Yum кажется намного более продуманным. Все действия выполняются при помощи утилиты yum, а не так, что часть через apt-get, часть через apt-cache и еще часть через dpkg. Из-за этого часто бывает трудно вспомнить, man по какой команде хочется сейчас открыть, через что делается upgrade, а через что madison, и так далее.
Далее предполагается, что все команды выполняются под пользователем root. Если вы сидете под обычным пользователем, перед некоторыми командами может потребоваться написать sudo. Обычно и так понятно, перед какими. Например, для получения информации о пакетах права рута не нужны. Для установки, обновления и удаления пакетов – нужны.
Итак, начнем. Для начала, часто имеет смысл подключить EPEL:
yum install epel-release
Установка пакетов производится так:
yum install gcc
Получение информации о пакете:
yum info git
Получение списка зависимостей пакета:
yum deplist git
Проверка наличия доступных обновлений:
yum check-update
Обновление всех установленных пакетов:
yum update
Обновление конкрутного пакета:
yum update yum
Откатываем пакет к предыдущей версии:
yum downgrade git
Переустанавливаем пакет:
yum reinstall git
Удаление пакета:
yum remove git
Список всех доступных пакетов:
yum list available | less
Спискок всех установленных пакетов:
yum list installed | less
Спискок вообще всех пакетов:
yum list all | less
Проверить, установлен ли пакет:
yum list mutt
yum list mysql*
Поиск по пакетам:
yum search mutt
История установки/обновления/удаления пакетов:
yum history
Посмотреть детали о записи в истории:
yum history info 42
Откатить изменение из истории (вы же за это любите NixOS?):
yum history undo 42
Повторить изменения из истории:
yum history redo 42
Определение, к какому пакету относится файл:
yum provides /usr/bin/pstree
А так можно посмотреть все файлы, которые входят в конкретный пакет:
yum install yum-utils
repoquery -l psmisc
Также в пакет yum-utils входит команда для установки отладочных символов, необходимых, если вы иногда запускаете gdb:
debuginfo-install glibc
Часто нужной debuginfo нет в обычных репозиториях, но ее можно найти на filewatcher.com. Например, если ищем отладочные символы для:
nspr-4.10.6-1.el6_6.x86_64
… то вводим в поиске:
nspr-debuginfo-4.10.6-1.el6_6.x86_64
Список репозиториев:
yum repolist
Список групп пакетов:
yum grouplist
Получение информации о группе:
yum groupinfo "Web Server"
Установка группы пакетов:
yum groupinstall "Web Server"
Удаление группы пакетов:
yum groupremove "Web Server"
Установка скаченного RPM-файла:
yum install path/to/some.rpm
… или:
rmp -i path/to/some.rpm
Много разных RPM можно найти на сайте rpmfind.net.
По большому счету, это все, что нужно знать об управлении пакетами в Linux’ах, использующих Yum. Больше информации, как обычно, в манах.
Возвращаясь к вопросу про большое количество «таких разных» дистрибутовов Linux, хотелось бы сказать следующее. Как-то раз мне потребовалось быстро разобраться во всем написанном выше. На тот момент у меня было много опыта использования Debian и Ubuntu, и никакого опыта использования CentOS. Так вот, чтобы во всем разобраться, мне потребовалось минут 15, и проблем с тех пор не возникало. В самом деле, какая разница – yum install или apt-get install?
А какой пакетный менеджер вы предпочитаете в это время суток?