Оригинал здесь
Иногда может возникнуть вопрос: чьих этот файл, откуда вообще взялась эта библиотека? Удобный менеджер пакетов решает очень многие проблемы ОС. Можно с уверенностью сказать, что если вы подружитесь с МП, то подружитесь и с дистрибутивом как таковым. Причем важно освоить именно набор основных команд, и знать где найти дополнительную информацию.
Далее следует джентльменский набор необходимых для повседневной рутины команд основных Linux дистрибутивов: установить, обновить и удалить пакет, накатить обновления, проверить зависимости, установить принадлежность файла пакету и пр.
Debian и родственные
Популярность и образ дружественного к пользователю Linux дистрибутива сыграли с Ubuntu злую шутку. Некоторым новичкам кажется, что можно на нем делать все, что угодно без помощи командной строки. Это заблуждение и лучше от него поскорее избавиться.
То, что в примерах aptitude
не значит, что он правильнее, чем apt-get
. Для меня это всего лишь дело привычки.
1 2 3 4 5 6 7 8 9 |
$ aptitude install package <span class="hljs-comment">#установить пакет;</span> $ aptitude safe-upgrade package <span class="hljs-comment">#обновить пакет;</span> $ aptitude update <span class="hljs-comment">#проверить и установить обновления;</span> $ aptitude remove package <span class="hljs-comment">#удалить пакет;</span> $ aptitude purge package <span class="hljs-comment">#удалить пакета с концами, все данные и настройки;</span> $ apt-get dist-upgrade <span class="hljs-comment">#обновить ОС, killer-feature и оно работает!</span> $ aptitude search package <span class="hljs-comment">#искать пакет.</span> $ apt-cache depends package <span class="hljs-comment">#зависимости пакета;</span> $ apt-cache rdepends package <span class="hljs-comment">#обратные зависимости от пакета.</span> |
Некоторые функции доступны с дополнительным МП dpkg
.
1 2 |
$ dpkg <span class="hljs-_">-l</span> <span class="hljs-comment">#список установленных программ;</span> $ dpkg -L package <span class="hljs-comment">#список файлов пакета</span> |
Есть еще такое чудо — wajig. Несмотря на странное звучание, вполне годный МП с человеко-читабельным выводом информации на экран.
Настройка репозиториев производится правкой файла /etc/apt/sources.list
1 2 3 4 |
$ wajig install package $ wajig distupgrade <span class="hljs-comment">#обновить ОС;</span> $ wajig install --fileinput filename <span class="hljs-comment">#установить пакеты списком;</span> $ wajig listinstalled |
В целом ПМ Debian один из лучших, с которыми мне доводилось иметь дело.
Redhat и другие RPM дистрибутивы
RPM нельзя назвать образцовым пакетным менеджером, скорее это был кактус, который мыши употребляли в пишу со слезами на глазах. Затем появились более или менее вменяемые МП: yum
, dnf
, zypper
и другие. Только что на сервере RHEL 7.4 yum
за раз обновил более 700 пакетов и ничего при этом не сломал, неплохой результат я считаю.
1 2 3 4 5 6 7 8 |
$ yum install package $ yum update package $ yum update $ yum remove package $ yum deplist package <span class="hljs-comment">#зависимости пакета;</span> $ dnf repoquery --deplist <span class="hljs-comment">#то же самое, для Fedora</span> $ yum whatprovides package <span class="hljs-comment">#установить принадлежность файла какому-либо пакету;</span> $ yum list all <span class="hljs-comment">#список всех установленных программ</span> |
Команды rpm
на те случаи, когда использовать yum
не с руки.
1 2 3 4 5 |
$ rpm -i package <span class="hljs-comment">#установить пакет;</span> $ rpm <span class="hljs-_">-e</span> packate <span class="hljs-comment">#удалить пакет;</span> $ rpm -qa <span class="hljs-comment">#список установленных пакетов;</span> $ rpm -qi package <span class="hljs-comment">#вывод информации об установленном пакете;</span> $ rpm -q --whatrequires package <span class="hljs-comment">#обратные зависимости от пакета.</span> |
Чтобы настроить репозитории Yum
, откройте файл /etc/yum.repos.d/*.repo
, или используйте команду yum-config-manager
.
Zypper
На SuSE Linux используется Zypper / YaST
для управления пакетами, движок ZYpp крутится роверх RPM.
1 2 3 4 5 6 7 |
$ zypper <span class="hljs-keyword">in</span> mc <span class="hljs-comment">#установить пакет, если его нет, а противном случае - обновить его;</span> $ zypper up nginx openssh <span class="hljs-comment">#обновить программу;</span> $ zypper se gnome-desktop <span class="hljs-comment">#найти программу;</span> $ zypper remove package; $ zypper se --provides --match-exact hg <span class="hljs-comment">#установить принадлежность файла какому-либо пакету;</span> $ zypper se --requires package <span class="hljs-comment">#обратные зависимости от пакета.</span> |
Можно использовать операторы и регулярные выражения.
1 2 |
zypper <span class="hljs-keyword">in</span> <span class="hljs-string">'gcc.i586<5.1'</span><span class="hljs-comment">#установить пакет для архитектуры i586, версии младше 5.1;</span> zypper <span class="hljs-keyword">in</span> php5*; |
Управление репозиториями производится командой zypper mr
.
1 2 3 |
$ zypper lr <span class="hljs-comment">#список реп, укаханы номера репозиториев;</span> $ zypper mr <span class="hljs-_">-d</span> 5 <span class="hljs-comment">#выключить 5-у репу;</span> $ zypper mr <span class="hljs-_">-e</span> 5 <span class="hljs-comment">#включить 5-у репу.</span> |
Pacman
Этот МП используется в Арче и Manjaro.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
$ pacman -S package <span class="hljs-comment">#установить пакет;</span> $ pacman -R package <span class="hljs-comment">#удалить пакет;</span> $ pacman -Su package <span class="hljs-comment">#обновить пакет;</span> $ pacman -Q1 package <span class="hljs-comment">#список файлов пакета;</span> $ pacman -Qo filename <span class="hljs-comment">#установить принадлежность файла какому-либо пакету;</span> $ whoneeds package <span class="hljs-comment">#обратные зависимости от пакета;</span> $ pacman -Qdt <span class="hljs-comment">#список пакетов-сирот, без обратных зависимостей.</span> $ pacman -Rsn $(pacman -Qdtq) <span class="hljs-comment">#удаление неиспользуемых пакетов;</span> $ yaourt --m-arg "--skippgpcheck" <span class="hljs-comment">#пропуск проверки цифровой подписи;</span> $ yaourt -S <span class="hljs-comment">#установка или обновление пакета;</span> $ yaourt -Sy <span class="hljs-comment">#синхронизация с пакетной базой;</span> $ yaourt -R <span class="hljs-comment">#удалить пакет;</span> $ yaourt -G <span class="hljs-comment">#получить PKGBUILD как пакет;</span> $ yaourt --stats <span class="hljs-comment">#место занимаемое пакетом;</span> |
Движок поиска в базе данных поддерживает регулярные выражения.
1 2 3 |
$ pacman -Ss package <span class="hljs-comment">#простой полнотекстовый поиск;</span> $ pacman -Ss <span class="hljs-string">'^vim-'</span> <span class="hljs-comment">#поиск с регулярными выражениями;</span> $ pacman -Qs package <span class="hljs-comment">#поиск среди установленных пакетов;</span> |
Настройка репозиториев и зеркал производится из файла /etc/pacman.conf
Gentoo emerge
Конечно же это скорее умозрительный сценарий, чем реальный, так как сложно предположить, что красноглазый пользователь Gentoo Linux не знает необходимых опций emerge
. Тем не менее, без этого альманах был бы неполным.
1 2 3 4 5 6 7 |
$ emerge package <span class="hljs-comment">#установить пакет;</span> $ emerge -av package <span class="hljs-comment"># интерактивный режим установки пакета;</span> $ emerge -pv package <span class="hljs-comment"># показать сценарий установки пакета;</span> $ emerge -u packave <span class="hljs-comment"># обновить пакет;</span> $ emerge -C package <span class="hljs-comment"># удалить пакет;</span> $ emerge -auDv world <span class="hljs-comment"># обновить все программы с учетом зависимостей;</span> $ emerge -auDNv word <span class="hljs-comment"># обновить все программы с учетом зависимостей и новых USE опций.</span> |
С дополнительными утилитами можно получить больше информации о файлах, ненужных пакетах и т. д.
1 2 3 4 5 6 |
$ revdep-rebuild <span class="hljs-comment">#проверить и восстановить неудовлетворенные зависимости;</span> $ eix package <span class="hljs-comment">#искать пакет;</span> $ equery belongs package <span class="hljs-comment">#установить принадлежность файла какому-либо пакету;</span> $ equery depends package <span class="hljs-comment">#обратные зависимости от пакета;</span> $ equery uses package <span class="hljs-comment">#USE флаги пакета;</span> $ qlop <span class="hljs-_">-l</span> <span class="hljs-comment">#история операций emerge;</span> |
Репозитории, зеркала и все самое важное для emerge / portage
содержится в /etc/make.conf
.
Материалы по теме
- How To List All Installed Packages In Linux
- Package Management Basics: apt, yum, dnf, pkg
- 45 Zypper Commands to Manage SUSE Linux Package Management
- ArchWiki — pacman