Arch linux обновление пакетов

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

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

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

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

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

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

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

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

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

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

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

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

Чтобы получить список установленных пакетов, соответствующих поисковому запросу, передайте результат в 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
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 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
.

Читайте также:  Драйвера для hdd при установке windows

Как видите, кроме файлов, эта команда отображает имя искомого пакета в каждой строке, из-за чего вывод труднее использовать в скриптах. Команда 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.

Утилита 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 выдает некоторые ошибки, обрабатывая такой результат. Чтобы устранить их, нужно отредактировать языковые настройки по умолчанию.

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

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

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

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

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

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

sudo pacman -S lua-

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

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

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

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

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

К сожалению, этот список не отображает версию пакета в репозитории, так что определить, насколько устарел каждый пакет, невозможно. В случае необходимости используйте сторонние менеджеры пакетов или напишите скрипт, который связывает результаты команд 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
.

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

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

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

Читайте также:  Linux md5 hash file

Пакеты 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.

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

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

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

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

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

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

sudo pacman -Rdd

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

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

Источник

Записки программиста

Управление пакетами в Arch Linux с помощью ABS и pacman

Сегодня мы поговорим об основах управления пакетами в Arch Linux. В общем и целом, идея напоминает ports и packages из мира FreeBSD. То есть, можно как компилировать софт из исходников, так и ставить бинарные пакеты. Но есть ряд существенных отличий. Итак, давайте же во всем разберемся!

Использование pacman

Pacman (название означает package manager) — это местная утилита для управления бинарными пакетами, аналог apt-get из мира Debian / Ubuntu или yum из мира RHEL / CentOS / Fedora. Пользоваться им очень просто.

Получение общей справки или справки по конкретным командам:

Флаги с буквами в верхнем регистре означают команды. Из них основные — это -S (sync), -Q (query) и -R (remove). Все они имеют дополнительные флаги, которые пишутся в нижнем регистре. Например, s означает search. Зная типичные дополнительные флаги, получаем сравнительно простую и понятную схему. Например, -Ss означает поиск по всем пакетам, а -Qs означает поиск только по установленным пакетам. В итоге, основные действия с пакетами выполняются следующим образом.

Установка группы пакетов:

Список пакетов, входящих в группу:

Список всех доступных групп:

Обновить базу данных пакетов:

Обновить установленные пакеты:

Список пакетов, для которых есть обновления:

Список установленных пакетов:

Поиск установленного пакета по регулярному выражению:

Список файлов, принадлежащих пакету:

Определить, к какому пакету относится заданный файл:

Удаление пакетов, установленных, как зависимости, и ставших ненужными (autoremove):

Некоторые пакетные менеджеры умеют «замораживать» пакеты, то есть, не обновлять их при наличии обновлений (hold в Debian и деривативах, lock во FreeBSD). Для достижения того же эффекта в Arch Linux в файле /etc/pacman.conf в секцию [options] нужно дописать что-то вроде:

Заканчивая рассказ про pacman, хочется отметить, что список серверов с пакетами находится в /etc/pacman.d/mirrorlist, а кэш загруженных пакетов следует искать в /var/cache/pacman/pkg/. Для очистки кэша используйте команду:

Логи пишутся в /var/log/pacman.log. В них вы всегда найдете, что, на что, и когда было обновлено.

Пример использования AUR

AUR (аббревиатура от Arch User Repository) — это каталог пакетов для Arch Linux, поддерживаемых пользователями (типа как PPA в мире Ubuntu). На сайте aur.archlinux.org есть поиск, комментарии к пакетам, и многое другое.

Для примера рассмотрим установку пакета ttf-ms-fonts, который содержит шрифты от Microsoft, и по более-менее понятным причинам доступен только в AUR:

В репозитории вы найдете файл PKGBUILD (используется синтаксис bash), и плюс к нему, возможно, какие-то патчи и подобные вещи. Файл PKGBUILD содержит информацию о том, откуда качать исходники пакета и какие контрольные суммы у этих исходников, с какими флагами их собирать, и так далее. Таким образом, немного подправив PKGBUILD, можно собрать пакет со своими флагами. Хорошей практикой считается держать репозитории AUR-пакетов где-нибудь в

Читайте также:  Fixing windows update issues

/packages, время от времени делая им git pull и обновляясь на новую версию.

Будучи в репозитории говорим:

Здесь ключ -s означает необходимость установить недостающие зависимости с помощью pacman. Настройки makepkg хранятся в файле /etc/makepkg.conf. Это местный аналог /etc/make.conf из мира FreeBSD. В нем можно указать CFLAGS, CXXFLAGS и подобные вещи. Очень рекомендуется указать в параметре PACKAGER свое имя и email. Это позволит отличать пакеты, собранные вами, от всех остальных.

Наконец, ставим собранный пакет:

Кстати, с помощью pacman -U также можно откатываться к более ранним версиям пакетов. Где искать кэш со скаченными пакетами, вы уже знаете. Если же пакета нет в кэше, его всегда можно найти на archive.archlinux.org.

Дополнение: На случай, если пакет из AUR зависит от других пакетов из AUR, предусмотрено ряд утилит, благодаря которым не придется ставить все эти пакеты вручную, как описано выше. Методом тыка я решил попробовать yaourt и оказался им вполне доволен. Утилита работает в точности, как pacman, только дополнительно позволяет устанавливать пакеты из AUR.

Единственная неприятная особенность этой утилиты заключается в том, что при сборке пакетов из AUR она задает кучу разных вопросов в стиле:

Исправить такое поведение можно, прописав в

Из интересных фишек yaourt стоит упомянуть, что утилита выводит в консоль обсуждения пакетов на AUR. Это очень удобно, например, в случае, если пакет вдруг не собирается, так как в комментариях нередко можно найти воркэраунд.

Собираем пакеты из исходников с помощью ABS

Под аббревиатурой ABS (Arch Build System) понимается сразу несколько довольно разных вещей. Это (1) сам механизм сборки пакетов в Arch Linux, с файлами PKGBUILD, утилитой makepkg и прочим, как было описано выше. ABS называется и (2) аналог дерева портов из мира FreeBSD, использующий (1), и о котором пойдет речь в этом параграфе. Также (3) ABS может означать утилиту abs, предназначенную для работы с (2). Наконец, (4) поскольку официальные пакеты собираются из ABS в смысле (2), аббревиатуру ABS часто используют в смысле «противоположность AUR». Несмотря на всю эту неразбериху, значение «ABS» обычно легко понять по контексту.

Итак, для работы с ABS в смысле (2) первым делом ставим утилиту abs:

С помощью этой утилиты скачиваем ABS:

Все исходники сваливаются в /var/abs. У меня они заняли около 82 Мб. Далее работа с ABS осуществляется точно так же, как с AUR. Интересно, что makepkg не позволяет запускать себя из под рута, в связи с чем приходится копировать исходники пакетов из /var/abs к себе в

/packages, и держать их там вместе с AUR. Это разумно сразу по нескольким причинам. Во-первых, вы всегда точно знаете, какие пакеты вы собираете из исходников, а какие — нет. Во-вторых, сборка пакетов из ABS часто означает их сборку со своими параметрами, то есть, с изменением PKGBUILD. Чтобы эти изменения не терялись при обновлении ABS, вы можете держать у себя в

/packages не только измененный PKGBUILD, но и патч к нему.

В файле /etc/abs.conf можно указать, что утилита abs должна тянуть, а что нет. Например, можно не тянуть каталог core и дополнительно тянуть testing.

Обновление ABS производится так:

Чтобы при следующем обновлении бинарных пакетов pacman не затер пакеты, собранное из исходников, в PKGBUILD следует дописать:

… а в /etc/pacman.conf:

Помимо прочего, при помощи ABS можно собрать кастомное ядро Linux. Сорцы соответствующего пакета вы найдете в /var/abs/core/linux.

Заключение

Увы, невозможно рассказать все в рамках одного поста. Например, мы не рассмотрели создание собственных пакетов и их заливку на AUR или такую интересную возможность pacman, как хуки. Надеюсь, что мне удалось дать вам 10% информации, которая помогает решить 90% всех проблем. Остальные 90% информации ищите в официальной вики и манах. Повторюсь, у Arch Linux они действительно классные.

Буду рад вашим вопросам и дополнениям. Можно подумать, я когда-то не был им рад 🙂

Источник

Оцените статью