Альманах пакетных менеджеров Linux

Иногда может возникнуть вопрос: чьих этот файл, откуда вообще взялась эта библиотека? Удобный менеджер пакетов решает очень многие проблемы ОС. Можно с уверенностью сказать, что если вы подружитесь с МП, то подружитесь и с дистрибутивом как таковым. Причем важно освоить именно набор основных команд, и знать где найти дополнительную информацию.


Управление пакетами

Далее следует джентльменский набор необходимых для повседневной рутины команд основных Linux дистрибутивов: установить, обновить и удалить пакет, накатить обновления, проверить зависимости, установить принадлежность файла пакету и пр.


Debian и родственные


Популярность и образ дружественного к пользователю Linux дистрибутива сыграли с Ubuntu злую шутку. Некоторым новичкам кажется, что можно на нем делать все, что угодно без помощи командной строки. Это заблуждение и лучше от него поскорее избавиться.


То, что в примерах aptitude не значит, что он правильнее, чем apt-get. Для меня это всего лишь дело привычки.


$ aptitude install package #установить пакет;
$ aptitude safe-upgrade package #обновить пакет;
$ aptitude update #проверить и установить обновления;
$ aptitude remove package #удалить пакет;
$ aptitude purge package #удалить пакета с концами, все данные и настройки;
$ apt-get dist-upgrade #обновить ОС, killer-feature и оно работает!
$ aptitude search package #искать пакет.
$ apt-cache depends package #зависимости пакета;
$ apt-cache rdepends package #обратные зависимости от пакета.


Некоторые функции доступны с дополнительным МП dpkg.


$ dpkg -l #список установленных программ;
$ dpkg -L package #список файлов пакета


Есть еще такое чудо — wajig. Несмотря на странное звучание, вполне годный МП с человеко-читабельным выводом информации на экран.


Настройка репозиториев производится правкой файла /etc/apt/sources.list


$ wajig install package
$ wajig distupgrade #обновить ОС;
$ wajig install --fileinput filename #установить пакеты списком;
$ wajig listinstalled


В целом ПМ Debian один из лучших, с которыми мне доводилось иметь дело.


Redhat и другие RPM дистрибутивы


RPM нельзя назвать образцовым пакетным менеджером, скорее это был кактус, который мыши употребляли в пишу со слезами на глазах. Затем появились более или менее вменяемые МП: yum, dnf, zypper и другие. Только что на сервере RHEL 7.4 yum за раз обновил более 700 пакетов и ничего при этом не сломал, неплохой результат я считаю.


$ yum install package
$ yum update package
$ yum update
$ yum remove package
$ yum deplist package #зависимости пакета;
$ dnf repoquery --deplist #то же самое, для Fedora
$ yum whatprovides package #установить принадлежность файла какому-либо пакету;
$ yum list all #список всех установленных программ


Команды rpm на те случаи, когда использовать yum не с руки.


$ rpm -i package #установить пакет;
$ rpm -e packate #удалить пакет;
$ rpm -qa #список установленных пакетов;
$ rpm -qi package #вывод информации об установленном пакете;
$ rpm -q --whatrequires package #обратные зависимости от пакета.


Чтобы настроить репозитории Yum, откройте файл /etc/yum.repos.d/*.repo, или используйте команду yum-config-manager.


Zypper


На SuSE Linux используется Zypper / YaST для управления пакетами, движок ZYpp крутится роверх RPM.


$ zypper in mc #установить пакет, если его нет, а противном случае - обновить его;
$ zypper up nginx openssh #обновить программу;
$ zypper se gnome-desktop #найти программу;
$ zypper remove package;
$ zypper se --provides --match-exact hg #установить принадлежность файла какому-либо пакету;
$ zypper se --requires package #обратные зависимости от пакета.


Можно использовать операторы и регулярные выражения.


zypper in 'gcc.i586<5.1'#установить пакет для архитектуры i586, версии младше 5.1;
zypper in php5*;


Управление репозиториями производится командой zypper mr.


$ zypper lr #список реп, укаханы номера репозиториев;
$ zypper mr -d 5 #выключить 5-у репу;
$ zypper mr -e 5 #включить 5-у репу.


Pacman


Этот МП используется в Арче и Manjaro.


$ pacman -S package #установить пакет;
$ pacman -R package #удалить пакет;
$ pacman -Su package #обновить пакет;
$ pacman -Q1 package #список файлов пакета;
$ pacman -Qo filename #установить принадлежность файла какому-либо пакету;
$ whoneeds package #обратные зависимости от пакета;
$ pacman -Qdt #список пакетов-сирот, без обратных зависимостей.


Движок поиска в базе данных поддерживает регулярные выражения.


$ pacman -Ss package #простой полнотекстовый поиск;
$ pacman -Ss '^vim-' #поиск с регулярными выражениями;
$ pacman -Qs package #поиск среди установленных пакетов;


Настройка репозиториев и зеркал производится из файла /etc/pacman.conf


Gentoo emerge


Конечно же это скорее умозрительный сценарий, чем реальный, так как сложно предположить, что красноглазый пользователь Gentoo Linux не знает необходимых опций emerge. Тем не менее, без этого альманах был бы неполным.


$ emerge package #установить пакет;
$ emerge -av package # интерактивный режим установки пакета;
$ emerge -pv package # показать сценарий установки пакета;
$ emerge -u packave # обновить пакет;
$ emerge -C package # удалить пакет;
$ emerge -auDv world # обновить все программы с учетом зависимостей;
$ emerge -auDNv word # обновить все программы с учетом зависимостей и новых USE опций.


С дополнительными утилитами можно получить больше информации о файлах, ненужных пакетах и т. д.


$ revdep-rebuild #проверить и восстановить неудовлетворенные зависимости;
$ eix package #искать пакет;
$ equery belongs package #установить принадлежность файла какому-либо пакету;
$ equery depends package #обратные зависимости от пакета;
$ equery uses package #USE флаги пакета;
$ qlop -l #история операций emerge;


Репозитории, зеркала и все самое важное для emerge / portage содержится в /etc/make.conf.


Материалы по теме


  1. How To List All Installed Packages In Linux
  2. Package Management Basics: apt, yum, dnf, pkg
  3. 45 Zypper Commands to Manage SUSE Linux Package Management
  4. ArchWiki — pacman

© Habrahabr.ru