Antergos и управление пакетами: утилита pacman

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’а. И ему будет посвящён следующий очерк.

Antergos и управление пакетами: утилита pacman: 1 комментарий

  1. Узнавая список ненужных зависимостей с помощью
    $ pacman -Qdt
    вы рискуете «осиротить» некоторые приложения из AUR, список нужно проверять.
    И, да, работа менеджера из командной строки — одно удовольствие (после того, как вы себе обеспечили два других удовольствия: 1) SSD, хоть плохонький, но таковой; 2) быстрый интернет, что неплохо в любом случае).
    Пы.Сы. Лайфхак (секрет полишинеля) для SSD: запускаемое вручную обновление состояния кластеров диска (ручной TRIM, по простому (грубое сравнение — дефрагментация на HDD), что рекомендуют в той самой ArchWiki в противовес автоматическому)
    sudo fstrim -v -a

Добавить комментарий