Antergos и управление пакетами: утилита pacman
Как было сказано в предыдущем очерке, пакеты из официальной ветки репозитория распространяются в виде запакованных в tar.xz
бинарников. Так что установка сводится к скачиванию, распаковке, регистрации в базе данных и интеграции в файловую иерархию как компонентов данного пакета, так и, при необходимости, всех его зависимостей. И занимается всем этим менеджер пакетов всех Arch’оидов, pacman
.
Операции и опции
Утилита pacman
входит, наряду с ещё несколькими (о которых сейчас речи не будет), в состав одноимённого пакета, и запускается одноимённой командой, требующей указания операции (также называемой действием), во многих случаях — опции (она же — параметр). В качестве аргумента используется имя пакета, имя файла пакета, имя репозитория. В некоторых случаях аргументы не требуются.
Операции и большинство опций имеют краткую и полную формы. Краткая форма операции задаётся заглавной буквой, полной — строчной. Практически используются краткие формы — для операций всегда, для опций — если таковая существует.
Список операций можно получить командой
$ pacman -y
вывод которой будет следующим:
использование: pacman <действие> [...] действия: pacman {-h --help} pacman {-V --version} pacman {-D --database} <параметры> <пакет(ы)> pacman {-F --files} [параметры] [пакет(ы)] pacman {-Q --query} [параметры] [пакет(ы)] pacman {-R --remove} [параметры] <пакет(ы)> pacman {-S --sync} [параметры] [пакет(ы)] pacman {-T --deptest} [параметры] [пакет(ы)] pacman {-U --upgrade} [параметры] <файл(ы)> используйте 'pacman { -h --help}' вместе с другими операциями для просмотра параметров
Из него следует, что для получения списка опций, доступных для каждой операции (а также уяснения их смысла), к команде вызова общей помощи следует добавить литеру, обозначающую действие. Например, команда
$ pacman -hQ
выдаст список опций для операции запроса (к локальной базе данных установленных пакетов) с краткими пояснениями. А команда
$ pacman -hS
сделает то же самое для операции синхронизации (с удалёнными репозиториями). Но, разумеется, самую полную информацию об операциях и опциях можно получить у тёти Мани и в ArchWiki. Правда, англоязычной — русскоязычный раздел её, как говорят, в данный момент не актуализирован.
Особенности
По причинам, о которых будет сказано чуть позже, здесь не будет подробного описания операций и опций команды pacman
. Мы с Мануалом решили ограничится констатацией некоторых моментов общего характера и приведением обзора наиболее востребованных примеров.
В pacman
‘е (в отличие, скажем, от утилиты apt
из Deb based систем) нет чёткого разделения операций на те, что требуют привилегий администратора, и те, которые обходятся правами обычного пользователя. Так, последних достаточно для поиска пакета в удалённом репозитории:
$ pacman -Ss evince extra/evince 3.30.2-1 (gnome) Document viewer (PDF, Postscript, djvu, tiff, dvi, XPS, SyncTex support with gedit, comics books (cbr,cbz,cb7 and cbt))
А вот для установки пакета из удалённого репозитория они оказываются, конечно, необходимыми:
$ sudo pacman -S evince [sudo] пароль для alv: разрешение зависимостей... проверка конфликтов... Пакеты (1) evince-3.30.2-1 Будет установлено: 13,36 MiB :: Приступить к установке? [Y/n]
Зато в pacman
‘е (в отличие от того же apt
‘а) чётко различаются запросы к локальной базе данных установленных пакетов (операция -Q
) и работа с удалёнными репозиториями (операция -S
).
Кроме того, собственно pacman
работает только с официальными ветками репозитория Arch’а. Для использования AUR требуются дополнительные средства, о которых будет сказано в конце очерка. А пока перейдём к обзору наиболее востребованных командных конструкций pacman
‘а.
Обзор команд
Первое, что нужно сделать в свежеинсталлированной Arch based системе — это синхронизировать локальную базу данных пакетов с удалённым репозиторием. А поскольку все эти системы — rolling release, синхронизацию резонно совместить с глобальным обновлением пакетов:
$ sudo pacman -Syu
Далее имеет смысл ознакомиться со списком установленных пакетов:
$ pacman -Qe
Затем поудалять пакеты ненужные:
$ sudo pacman -R jfsutils [sudo] пароль для alv: проверка зависимостей... Пакеты (1) jfsutils-1.1.15-6 Будет освобождено: 1,05 MiB :: Удалить эти пакеты? [Y/n]
Если дать команду удаления пакета в такой форме
$ sudo pacman -Rs [pkgname]
он будет удалён вместе со всеми своими зависимостями (если они не используются другими пакетами). Однако «осиротелые» зависимости можно удалить и позднее:
$ sudo pacman -Rsn
Правда, перед этим не худо ознакомиться со списком «сирот»:
$ pacman -Qdt
Теперь настало время заняться установкой необходимых пакетов. Для начала следует поискать те из них, которые «подозрительны на необходимость»:
$ pacman -Ss zsh
Выбрать в выводе неустановленные пакеты, то есть не помеченные как [установлен]
, и попытаться получить о них дополнительную информацию:
$ pacman -Si zsh-lovers Репозиторий : community Название : zsh-lovers Версия : 0.9.1-2 Описание : A collection of tips, tricks and examples for the Z shell ...
Включая зависимости пакета, будее таковые имеются:
$ pacman -Si grml-zsh-config Репозиторий : extra Название : grml-zsh-config Версия : 0.15.1-1 Описание : grml's zsh setup Архитектура : any URL : https://grml.org/zsh/ Лицензии : GPL2 Группы : Нет Предоставляет : grmlzshrc Зависит от : zsh coreutils inetutils grep sed procps
А при необходимости можно даже посмотреть на список входящих в них файлов:
$ pacman -Fl grml-zsh-config grml-zsh-config etc/ grml-zsh-config etc/skel/ grml-zsh-config etc/skel/.zshrc grml-zsh-config etc/zsh/ grml-zsh-config etc/zsh/keephack grml-zsh-config etc/zsh/zshrc grml-zsh-config usr/ grml-zsh-config usr/share/ grml-zsh-config usr/share/man/ grml-zsh-config usr/share/man/man5/ grml-zsh-config usr/share/man/man5/grml-zsh-config.5.gz grml-zsh-config usr/share/man/man5/grmlzshrc.5.gz
И если «подозрения на необходимость» подтвердятся, а, скажем, в зависимостях противопоказаний не обнаружится, можно установить приглянувшиеся пакеты:
$ sudo pacman -S zsh-completions zsh-lovers grml-zsh-config [sudo] пароль для alv: разрешение зависимостей... проверка конфликтов... Пакеты (3) grml-zsh-config-0.15.1-1 zsh-completions-0.29.0-1 zsh-lovers-0.9.1-2 Будет загружено: 0,27 MiB Будет установлено: 1,21 MiB
Для чего в ответ на предложение
:: Приступить к установке? [Y/n]
достаточно просто нажать Enter.
Все операции pacman
‘а, как рассмотренные выше, так и оставшиеся «за кадром», выполняются со страшной научно-фантастической быстротой, особенно на более-менее современных машинах, в качестве системного накопителя использующие SSD. Причины понятны из первого абзаца данного очерка: распаковщик xz
очень хорошо распараллеливается, а одноядерные и однопоточные процессоры нынче — музейный раритет. Время же записи на SSD в таких масштабах, и особенно чтение с них локальной базы пренебрежимо мало. Так что скорость работы pacman
‘а, фактически, лимитируется только быстротой соединения с Интернетом. Интернеты же нынче быстрые. Впрочем, pacman
отличался завидным быстродействием и в старые времена dial-up’ных подключений.
Дополнительные инструменты
Как уже неоднократно говорилось, pacman
предназначен для работы с бинарными пакетами. И потому имеет врождённое ограничение — напрямую работать с AUR он не может. Хотя пакеты, собранные из AUR’овских PKGBUILD
‘ов, в конечном счёте устанавливаются с помощью pacman
‘а, для подключения AUR, поиска скриптов нужных пакетов и их запуска требуются дополнительные инструменты, часто называемые wrapper’ами и helper’ами.
Инструментов таких сочинено более двух десятков — соответствующей странице ArchWiki можно видеть их неполный список. Наиболее известным из них является yaourt
, а самым функциональным, если судить по сравнительной таблице (и её англоязычному аналогу) — pacaur
.
Впрочем, ни один из этих wrapper’ов и helper’ов не включён в официальную ветвь репозитория Arch’а. Программы для работы с AUR’ом лежат в AUR’е же. Логично, не правда ли? Почти как предложение скачать из сети свежий драйвер для модема, если последний не работает… Правда, в разделе antergos этот недостаток частично исправлен — там, кроме двух упомянутых пакетов в бинарном виде, имеется ещё и wrapper yay
.
Однако это один из тех нечастых случаев, когда более эффективным оказывается использование графической «морды» — пакета Pamac. Который к тому же очень успешно работает и с официальной веткой «чистого» репозитория Arch’а. Правда, в последней он тоже отсутствует. Но зато имеется в репозитории Antergos’а. И ему будет посвящён следующий очерк.
One thought on “Antergos и управление пакетами: утилита pacman”
Узнавая список ненужных зависимостей с помощью
$ pacman -Qdt
вы рискуете «осиротить» некоторые приложения из AUR, список нужно проверять.
И, да, работа менеджера из командной строки — одно удовольствие (после того, как вы себе обеспечили два других удовольствия: 1) SSD, хоть плохонький, но таковой; 2) быстрый интернет, что неплохо в любом случае).
Пы.Сы. Лайфхак (секрет полишинеля) для SSD: запускаемое вручную обновление состояния кластеров диска (ручной TRIM, по простому (грубое сравнение — дефрагментация на HDD), что рекомендуют в той самой ArchWiki в противовес автоматическому)
sudo fstrim -v -a