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

Средства управления пакетами Arch Linux подобны другим современным дистрибутивам Linux. В данном руководстве речь пойдет об общих операциях управления пакетами.

Прежде чем следовать руководству, обновите базы данных пакетов:

sudo pacman -Sy

Поиск пакетов

Ориентированные на краткость (а не интуитивность), большинство операций управления пакетами в Arch Linux имеют формат:

pacman -<a-z><a-z>.

К примеру, обычна команда поиска репозиториев pacman выглядит так:

pacman -Ss <package>

Как и большинство команд pacman, данная команда не особенно очевидна. Кроме того, pacman поставляется с утилитой pacsearch, которая работает так же, но имеет некоторые преимущества над pacman-Ss:

  • цветовое выделение
  • категории установленных пакетов (local)

Чтобы перечислить все стандартные пакеты с ключевым словом “Linux”, используйте:

pacsearch linux

В некоторых случаях данному критерию поиска будет соответствовать несколько пакетов (особенно при использовании AUR helper типа yaourt). Регулярные выражения могут помочь сузить список. Например, нужно найти все, что связано с инструментом ack. Стандартный поиск неизбежно вернет много результатов, которые можно отсортировать (по словам package, hack или playback).

pacsearch ack

Тем не менее, не все пакеты начинаются с ack. Символ вставки (^) перед поисковым словом выведет только пакеты, которые начинаются с этого слова. Это работает с pacsearch, pacman и yaourt.

pacsearch ^ack

Чтобы регулярное выражение работало должным образом, его нужно взять в кавычки.

pacsearch 'c\+\+'

Чтобы получить список установленных пакетов, соответствующих поисковому запросу, передайте результат в grep local. Опция –А 1 говорит grep включить одну строку после каждого совпадения (в данном случае это описание пакета).

pacsearch linux | grep local -A 1

Кроме того, можно использовать команду pacman –Qs, чтобы получить результат без цветового выделения.

pacman -Qs linux

Чтобы команда pacman –Ss выводила цветные результаты, раскомментируйте Color в файле /etc/pacman.conf. Цветовое выделение команды pacman отличается от pacsearch; потому можно получить цветной результат при помощи обеих команд и выбрать более удобный.

sudo vi /etc/pacman.conf
...
# Misc options
#UseSyslog
Color
#TotalDownload
CheckSpace
#VerbosePkgLists
...

Получение информации о пакете

Команда pacman -Qi выводит на экран базовую информацию об установленном пакете:

pacman -Qi linux
Name           : linux
Version        : 3.8.4-1
Description    : The linux kernel and modules
Architecture   : x86_64
URL            : http://www.kernel.org/
Licenses       : GPL2
Groups         : base
Provides       : kernel26=3.8.4
Depends On     : coreutils  linux-firmware  kmod  mkinitcpio>=0.7
Optional Deps  : crda: to set the correct wireless channels of your country
Required By    : None
Optional For   : None
Conflicts With : kernel26
Replaces       : kernel26
Installed Size : 64728.00 KiB
Packager       : Tobias Powalowski <tpowa@archlinux.org>
Build Date     : Wed Mar 20 21:16:17 2013
Install Date   : Fri Mar 29 01:02:14 2013
Install Reason : Explicitly installed
Install Script : Yes
Validated By   : Unknown

Без аргументов данная команда выводит все пакеты системы. Кроме того, эта команда позволяет получить специализированную информацию об установленных пакетах.

Например, чтобы получить название каждого пакета и его размер:

pacman -Qi | grep -e "Name" -e "Installed Size"
Name           : a52dec
Installed Size : 244.00 KiB
Name           : aalib
Installed Size : 768.00 KiB
...

Команда pacman -Qi выводит информацию об установленных пакетах, а команда pacman –Si запрашивает в базе данных обширную информацию о пакете.

pacman -Si linux
Repository     : core
Name           : linux
Version        : 3.11.6-1
Description    : The Linux kernel and modules
Architecture   : x86_64
URL            : http://www.kernel.org/
Licenses       : GPL2
Groups         : base
Provides       : kernel26=3.11.6
Depends On     : coreutils  linux-firmware  kmod  mkinitcpio>=0.7
Optional Deps  : crda: to set the correct wireless channels of your country
Conflicts With : kernel26
Replaces       : kernel26
Download Size  : 47855.98 KiB
Installed Size : 64493.00 KiB
Packager       : Thomas Bächler <thomas@archlinux.org>
Build Date     : Fri 18 Oct 2013 05:25:12 PM EDT
Validated By   : MD5 Sum  SHA256 Sum  Signature

Команда pacman -Ql выводит список файлов, связанных с искомым пакетом.

pacman -Ql vi
vi /usr/
vi /usr/bin/
vi /usr/bin/edit
vi /usr/bin/ex
vi /usr/bin/vedit
vi /usr/bin/vi
...

Как видите, кроме файлов, эта команда отображает имя искомого пакета в каждой строке, из-за чего вывод труднее использовать в скриптах. Команда pacman -Qlq (т.е. “pacman query list, quiet”) не выводит имени пакета.

pacman -Qlq vi
/usr/
/usr/bin/
/usr/bin/edit
/usr/bin/ex
/usr/bin/vedit
/usr/bin/vi
...

Команду pacman -Qlq | grep bin можно использовать, чтобы найти все файлы данного пакета, которые находятся в папке bin (и потому, вероятнее всего, являются исполняемыми). Это удобно, если  команда, связанная с пакетом, отличается от имени пакета.

pacman -Qql pacman | grep bin
/usr/bin/
/usr/bin/bacman
/usr/bin/checkupdates
/usr/bin/cleanupdelta
/usr/bin/makepkg
/usr/bin/paccache
/usr/bin/pacdiff
/usr/bin/paclist
/usr/bin/paclog-pkglist
/usr/bin/pacman
/usr/bin/pacman-db-upgrade
/usr/bin/pacman-key
/usr/bin/pacman-optimize
/usr/bin/pacscripts
/usr/bin/pacsearch
/usr/bin/pacsort
/usr/bin/pacsysclean
/usr/bin/pactree
/usr/bin/pkgdelta
/usr/bin/rankmirrors
/usr/bin/repo-add
/usr/bin/repo-elephant
/usr/bin/repo-remove
/usr/bin/testdb
/usr/bin/testpkg
/usr/bin/updpkgsums
/usr/bin/vercmp

Хранение пакетов

Самый простой способ узнать, какие из хранящихся пакетов занимают больше всего места в системе – это использовать команду pacsysclean, которая поставляется вместе с pacman.

pacsysclean

Утилита pacgraph имеет более сложный вывод; она создает графическое отображение зависимостей отдельных пакетов в формате SVG и PNG.

Утилиту pacgraph можно найти в репозитории сообщества.

sudo pacman -S pacgraph

Команда pacgraph -c выведет результат в консоль, подобно pacsysclean. При большом количестве пакетов  выход pacgraph может получиться достаточно громоздким, так как он (в отличие от pacsysclean) сортируется от большего к меньшему. В таком случае выход можно передать в head, чтобы оставить только самые объемные пакеты.

pacgraph -c | head
Autodetected Arch.
Loading package info
Total size: 730MB
114MB linux
103MB libtool
84MB pacgraph
40MB imagemagick
25784kB ppl
22264kB nmap
17295kB pkgfile

Иногда Arch Linux выдает некоторые ошибки, обрабатывая такой результат. Чтобы устранить их, нужно отредактировать языковые настройки по умолчанию.

export LANG=en_US.UTF-8

Команда pacgraph, запущенная без аргументов, создает файл SVG и по возможности PNG.

Самый простой способ получить доступ к изображениям, созданным pacgraph, если системы обмена файлами с виртуальным сервером нет – это Secure Copy.

scp <user>@<addr>:<remote_path> <local_path>

Примечание: хотя утилита pacgraph рекомендует открывать файл PNG после установки ImageMagick и Libpng, на момент написания данной статьи она не генерирует PNG без редактора Inkscape, который имеет довольно много зависимостей.

Загрузка и установка пакетов

Стандартный способ установки или обновления пакета – команда pacman –S.

sudo pacman -S <package>

Пакеты часто имеют аналогичный шаблон в своих названиях. Скобки могут использоваться в качестве ярлыка.

sudo pacman -S lua-{sec,socket,zlib}

Иногда нужно просто загрузить пакет для архивных целей, не устанавливая его. Команда pacman-Sw скачает пакет в папку кэша.

sudo pacman -Sw <package>

Если пакет уже загружен или известен его url, его можно установить напрямую:

sudo pacman -U <package_path>

Обновление пакетов

Поскольку pacman основывается на синхронизации пакета с удаленным репозиторием, pacman -S может обновить уже установленный пакет.

Кроме того, pacman может вывести список устаревших пакетов.

pacman -Qu

К сожалению, этот список не отображает версию пакета в репозитории, так что определить, насколько устарел каждый пакет, невозможно. В случае необходимости используйте сторонние менеджеры пакетов или напишите скрипт, который связывает результаты команд pacman -Qi и pacman –Si и сможет вывести нужную информацию.

Чтобы получить версии пакетов с помощью команд pacman -Qi или pacman –Si, используйте регулярное выражение:

pacman -Qi linux | grep "Version" | sed 's/^Version\s*:\s//'
3.8.4-1

Затем напишите скрипт, отображающий пакеты и версии одновременно.

for i in $(pacman -Qqu)
do
printf "$i: "
printf "$(pacman -Qi "$i" | grep 'Version' | sed 's/^Version\s*:\s//') "
echo   "$(pacman -Si "$i" | grep 'Version' | sed 's/^Version\s*:\s//')"
done

Менеджер пакетов pacman позволяет обновлять все пакеты сразу, но делать этого не рекомендуется, поскольку Arch является роллинг-релизом (rolling release distribution). При возникновении каких-либо проблем может уйти немало времени н то, чтобы установить их причины.

sudo pacman -Syu

Даунгрейд пакетов

Официально Arch Linux  не поддерживает устаревшие пакеты. Вместо этого используйте кэш пакетов, а также Arch Rollback Machine и т.п.

Кэш пакетов

Каждый загруженный при помощи pacman пакет хранится в /var/cache/pacman/pkg.

ls /var/cache/pacman/pkg | grep linux
linux-3.11.6-1-x86_64.pkg.tar.xz
linux-3.9.7-1-x86_64.pkg.tar.xz
...

Чтобы вернуть версию пакета в кэше, просто установите этот пакет.

pacman -U <путь_к_файлу_в_кэше>

Что такое Arch Rollback Machine?

Arch Rollback Machine – это набор копий официального зеркала Arch Linux. На данный момент ARM находится на http://seblu.net/a/arm (хотя в будущем это может измениться).

Пакеты ARM можно установить удаленно с помощью pacman –U:

pacman -U http://seblu.net/a/arm/2013/08/31/extra/os/x86_64/apache-2.2.25-1-x86_64.pkg.tar.xz

Просматривать устаревшие пакеты на ARM не очень удобно. К счастью, для этого существуют специальные инструменты:

Они ищут устаревшие версии в кэше и ARM.

downgrade <пакет>
downgrader <пакет>

Оба инструмента можно найти в AUR, следовательно, проще всего установить их при помощи yaourt.

Примечание: ARM является неофициальным проектом, который однажды был закрыт; потому лучше не чистить кэш на случай если ARM снова перестанет работать. Чтобы развернуть собственный ARM, используйте проект NodeJS на github.

Удаление пакетов

Следующая команда удаляет пакет только при условии, что другие программы не зависят от него; при этом зависимости пакета удалены не будут.

sudo pacman -R <пакет>

Следующая команда удаляет пакет, от которого не зависят другие программы, а также те его зависимости, которые не нужны другим пакетам.

sudo pacman -Rs <пакет>

Данная команда просто стирает пакет из системы и переустанавливает его, если простой переустановки недостаточно.

sudo pacman -Rdd <пакет>

Неофициальные пакеты

Основная часть пакетов Arch Linux находится в репозитории Arch User Repository. Такие пакеты лучше всего устанавливать при помощи инструментов AUR Helpers.

Tags: , , , , ,

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