Sunday, September 4, 2011

Yaourt: оболочка к pacman с доступом к AUR

AUR - Archlinux User Repository


У Arch Linux есть репозиторий с пакетами, которые поставляют сами пользователи, http://aur.archlinux.org, там часто можно найти всякие штучки, которые по тем или иным причинам не попадают в основной репозиторий дистрибутива (например, та же самая клавиатурная раскладка дворака для программистов или самый-самый-самый свежий firefox). Про сам репозиторий есть большая страница на wiki .

Для установки какого-то пакета из дистрибутива (или локально) используется pacman, однако пользовательские дистрибутивы в pacman отключены, а пакетов там навалом. По сути, пользовательский репозиторий - это набор пакетов с правилами их сборки, описываемых в специальных файлах с названием PKGBUILD, содержимое которого обычно указывает, что откуда скачать и что с этим сделать (например, скачать исходники, скачать патч, наложить патч, отредактировать настройки так, чтобы это работало в арче, и тому подобное). Например, это может выглядеть вот так:



1 # Author: Julien MISCHKOWITZ <wain@archlinux.fr>
2 # Author: tuxce <tuxce.net@gmail.com>
3
4 pkgname=yaourt
5 pkgver=0.10.1
6 pkgrel=2
7 pkgdesc="A pacman wrapper with extended features and AUR support"
8 arch=('any')
9 url="http://www.archlinux.fr/yaourt-en/"
10 license=(GPL)
11 depends=('diffutils' 'pacman>=3.5' 'package-query>=0.7' 'gettext')
12 optdepends=('aurvote: vote for favorite packages from AUR for inclusion in [community]'
13 'customizepkg: automatically modify PKGBUILD during install/upgrade'
14 'rsync: retrieve PKGBUILD from official repositories'
15 'pacman-color: fully colorized output')
16 backup=('etc/yaourtrc')
17 source=(http://mir.archlinux.fr/~tuxce/releases/$pkgname/$pkgname-$pkgver.tar.gz)
18
19 build() {
20 cd $srcdir/$pkgname-$pkgver/
21 make PREFIX=/usr sysconfdir=/etc localstatedir=/var
22 }
23
24 package() {
25 cd $srcdir/$pkgname-$pkgver/
26 make PREFIX=/usr sysconfdir=/etc localstatedir=/var DESTDIR=$pkgdir install
27 }
28
29 # vim:set ts=2 sw=2 et:
30
31
32 md5sums=('b7c471bc0e763e587a965616540b1a7d')


В целом, если внимательно посмотреть, никакой чёрной магии там нет. Пример взят из утилиты yaourt (). На странице утилиты в AUR описано, какие файлы входят в tarball с PKGBUILDом, ну и можно поругаться со всеми желающими в комментариях (сначала надо зарегестрироваться).
Чтобы установить пакет из пользовательского дистрибутива, надо скачать tarball, при желании посмотреть/поправить содержимое PKGBUILD и сделать пакет:


$ tar xzvf yaourt.tar.gz
yaourt/
yaourt/PKGBUILD
$ cd ./yaourt
$ makepkg


Далее можно лицезреть всяческие радостные сообщения из серии "я скачал пакет оттуда-то, проверил чексумму, вроде совпадает, проверил зависимости, всё на месте, зажигай!". Если зависимости не будут удовлетворены, следует найти нужный пакет в AUR и поставить сначала его (список пакетов-зависимостей можно посмотреть на странице пакета или в самом PKGBUILD). После решения всех этих квестов, на выходе появится фраза в стиле "Finished making: yaourt 0.10.1-2....". После этого в папке появится пакет, который уже можно устанавливать через pacman:

$ ls
pkg PKGBUILD src yaourt-0.10.1-2-any.pkg.tar.xz yaourt-0.10.1.tar.gz
$ pacman -U yaourt-0.10.1-2-any.pkg.tar.xz


YAOURT как панацея от рутины


Понятно, что пять-шесть раз выполнив такую процедуру, слегка устаёшь скачивать пакетики и их распаковывать. Посему на помощь приходят всякие утилиты-автоматизаторы этих манипуляций, одна из наиболее популярных - yaourt. Его надо будет установить именно так, "муторно", скачав все зависимости (если они ещё не удовлетворены) и вручную запустив makepkg и прочее. Зато потом это окупается и остальные пакеты можно ставить прямо из командной строки. Преимущество yaourt в том, что он работает ну совсем как pacman, даже многие ключи те же (поиск -Ss, апгрейд всех пакетов -Syu, к тому же позволяющий выбрать, какие пакеты ставить в массовой закачке, а какие нет). Ну и, конечно, есть всякие плюшечки типа раскраски вывода и интерактивного поиска. Типичный вывод yaourt:

$ yaourt -Ss notion
community/notion 20110823-1 [1.10 M] [installed]
Tabbed tiling, window manager. Fork of Ion3
aur/libtu-git 20101217-1 (2)
Utility library for notion
aur/notion-styles-thinviolet 0.1-1 (0)
modified Notion style without window border
aur/notion-xft 20110827-1 (0)
Tabbed tiling, window manager. Fork of Ion3, with XFT patch


Сначала выводятся "оффициальные репозитории", на которые настроен pacman, а потом уже aur. При установке будут сначала показаны последние комментарии, а потом будет предложено отредактировать PKGBUILD и, если есть, правила установки. Зависимости будут ставиться автоматически (если они есть только в AUR, дадут возможность поправить PKGBUILD и им). Помимо этого, к нему есть куча приятных штучек, например, тулза aurvote, позволяющая проголосовать за включение пакета в основной репозиторий "не отходя от кассы".

Конфигурационный файл yaourt находится в /etc/yaourtrc, и представляет из себя типичный формат "все значения по умолчанию прописаны как есть, но закомментированы". Вот его стандартное содержание:


1 # yaourtrc - Configuration for yaourt
2 #
3 # See yaourtrc(5) for more information
4 #
5 #
6
7 # ABS_REPO list repositories available on archlinux rsync server
8 ABS_REPO=(testing core extra community-testing community gnome-unstable kde-unstable)
9
10 # General
11 #AUTOSAVEBACKUPFILE=0
12 #DEVELBUILDDIR="/var/abs/local/yaourtbuild"
13 #DEVEL=0
14 #EDITOR="$EDITOR"
15 #FORCEENGLISH=0
16 #FORCE=0
17 #TMPDIR="/tmp"
18 #SUDONOVERIF=0 # Avoid multiple sudo checks when timestamp_timeout=0
19
20 # AUR
21 #AURCOMMENT=5
22 #AURDEVELONLY=0
23 #AURSEARCH=1
24 #AURUPGRADE=0
25 #AURVOTE=1
26
27 # Build
28 #EXPORT=0 # Export to 1: EXPORTDIR or PKGDEST
29 # 2: pacman cache (as root)
30 #EXPORTSRC=0 # Need EXPORT>0 to be used
31 #EXPORTDIR="" # If empty, use makepkg's connfiguration (see makepkg.conf)
32
33 # Prompt
34 #NOCONFIRM=0
35 #UP_NOCONFIRM=0 # No prompt while build upgrades (including -Sbu)
36 #BUILD_NOCONFIRM=0 # Only prompt for editing files
37 #EDITFILES=1
38 #NOENTER=1
39
40 # Output
41 #USECOLOR=1
42 #DETAILUPGRADE=1
43 #SHOWORPHANS=1
44 #TERMINALTITLE=1
45
46 # Command
47 #PACMAN="pacman"
48 #DIFFEDITCMD="vimdiff"


К полезным параметрам я бы отнёс TMPDIR - можно задать папку для временных файлов и директорий, FORCEENGLISH - обязательное использование стандартной англоязычно локали и AURCOMMENT, указывающий число комментариев для отображения.

Подводя итоги, yaourt очень сильно облегчает использование AUR (кстати, название так и расшифровывается: Yet AnOther User Repository Tool), при этом сохраняя общий дух простоты использования KISS и позволяющий плавно использовать его вместо pacman.

No comments: