Arch User Repository (Русский)
Пользовательский репозиторий Arch (Arch User Repository, AUR) — поддерживаемое сообществом хранилище программ для пользователей Arch. Содержит описания пакетов (файлы PKGBUILD), которые позволяют скомпилировать пакет из исходников утилитой makepkg и затем установить его с помощью pacman. AUR был создан с целью организации совместного доступа к новым пакетам, которые были созданы сообществом, а также чтобы ускорить добавление популярных пакетов в репозиторий community. В статье описано, как получить доступ к AUR и как с ним работать.
Многие пакеты, в настоящее время находящиеся в официальных репозиториях, когда-то начинали свой путь в AUR. В AUR пользователи могут добавлять собственные сборки пакетов (PKGBUILD
и другие необходимые файлы). Сообществу предоставлена возможность голосовать за понравившиеся пакеты. Если пакет стал популярным, распространяется под подходящей лицензией и собирается без излишних сложностей, то он может быть перенесён в репозиторий community (доступный напрямую с помощью pacman и ABS).
PKGBUILD
и не проходят тщательную проверку. Используйте их на свой страх и риск.Приступая к работе
Искать и скачивать файлы PKGBUILD можно через веб-интерфейс AUR. Эти файлы позволяют собрать устанавливаемый пакет утилитой makepkg и установить его в систему с помощью pacman.
- Удостоверьтесь, что группа пакетов base-devel установлена полностью (
pacman -S --needed base-devel
) - Просмотрите раздел #Часто задаваемые вопросы.
- Перед сборкой пакетов из AUR имеет смысл внести изменения в файл
/etc/makepkg.conf
, чтобы оптимизировать процесс сборки под вашу систему. На системах с многоядерным процессором можно добиться значительного снижения времени сборки с помощью переменнойMAKEFLAGS
, использованием нескольких ядер при сжатии или выбором нестандартного алгоритма сжатия. Аппаратно-зависимые оптимизации компилятора можно включить переменнойCFLAGS
. Подробнее см. makepkg#Советы и рекомендации.
Получить доступ к AUR можно и через SSH: команда ssh aur@aur.archlinux.org help
выведет список доступных команд.
История
В начале времён был лишь FTP-сервер ftp://ftp.archlinux.org/incoming
, на который люди загружали свои файлы PKGBUILD, другие необходимые файлы и сами собранные пакеты. Пакет и связанные с ним файлы хранились на сервере, ожидая проверки сопроводителем пакета и добавления в официальный репозиторий.
Позднее некоторым участникам сообщества было разрешено содержать собственные репозитории с общим доступом. Так появились репозитории доверенных пользователей (Trusted User Repositories). AUR был создан как развитие этой идеи, чтобы сделать систему более гибкой и удобной. AUR-мэйнтейнеры до сих пор часто упоминаются как доверенные пользователи (Trusted Users, TU).
Между 2015-06-08 и 2015-08-08 состоялся переход AUR с версии 3.5.1 на 4.0.0, что было связано с началом использования Git-репозиториев для публикации файлов PKGBUILD
. Существовавшие на тот момент пакеты были частично перенесены в новую инфраструктуру их сопроводителями.
Git-репозитории с пакетами AUR3
Архив AUR на GitHub содержит все пакеты AUR3 на момент миграции. Также существует репозиторий aur3-mirror с аналогичным содержанием.
Установка и обновление пакетов
Установка пакетов из AUR относительно проста:
- Скачайте файлы сборки, включая PKGBUILD и, возможно, другие необходимые файлы вроде юнитов systemd и патчей (но, чаще всего, не сам исходный код).
- Убедитесь, что
PKGBUILD
и прочие файлы не являются вредоносными или ненадёжными. - Выполните
makepkg
в каталоге с сохранёнными файлами. Эта команда загрузит исходный код, скомпилирует его и создаст пакет. - Выполните
pacman -U файл_пакета
, чтобы установить пакет в систему.
Подготовка
Прежде всего убедитесь, что в системе установлены необходимые инструменты: установите группу пакетов base-devel. В неё входят make и некоторые другие инструменты, необходимые для компиляции из исходников.
--needed
при установке группы base-devel позволит не переустанавливать те пакеты, которые уже имеются в системе.Выберите подходящий каталог сборки. Каталог сборки — это просто место, в котором пакет будет "собран". Им может быть любой каталог в системе. В примерах ниже в качестве каталога сборки выбран ~/builds
.
Получение файлов
Найдите пакет в AUR. Это можно сделать поиском на главной странице AUR (текстовое поле вверху). После перехода по одной из ссылок из списка результатов откроется страница информации о выбранном пакете. Прочтите описание, убедитесь, что это то, что вы искали; обратите внимание на дату последнего обновления пакета и прочтите комментарии.
Существует несколько способов получить необходимые файлы пакета:
- Клонируйте git-репозиторий, указанный в графе "URL для git clone" в разделе "Информация о пакете". Это предпочтительный метод, поскольку он позволяет получать обновления файлов пакета с помощью
git pull
:
$ git clone https://aur.archlinux.org/имя_пакета.git
- Загрузите снимок (snapshot) либо нажав на ссылку "Загрузить снимок" под заголовком "Действия над пакетом" справа, либо командой:
$ curl -L -O https://aur.archlinux.org/cgit/aur.git/snapshot/''имя_пакета''.tar.gz
tar -xvf имя_пакета.tar.gz
Получение открытого ключа PGP (при необходимости)
Проверьте массив source в файле PKGBUILD на предмет наличия в нём файла подписи (суффикс .sig или .asc), и, если таковой присутствует, получите любой открытый ключ из массива validpgpkeys. Подробнее см. makepkg#Проверка цифровых подписей.
Сборка пакета
Перейдите в каталог, содержащий PKGBUILD пакета:
$ cd имя_пакета
PKGBUILD
, файлы .install
и любые другие файлы в git-репозитории пакета на наличие вредоносных и опасных команд. Если возникли сомнения, отмените сборку и обратитесь за советом на форум или в почтовую рассылку. Ранее в пакетах уже находили вредоносный код.
[1]
Просмотрите содержимое всех предоставленных файлов. Например, для просмотра PKGBUILD
с помощью less выполните:
$ less PKGBUILD
- Для просмотра изменений с момента последнего коммита выполните
git show
. - Для просмотра изменений с момента последнего коммита с помощью vimdiff выполните
git difftool @~..@ vimdiff
. Преимущество vimdiff в том, что можно увидеть полное содержимое каждого файла с отметками в местах изменений.
Соберите пакет. После ручной проверки целостности файлов запустите makepkg от имени обычного пользователя. Некоторые полезные флаги:
-
-s
/--syncdeps
— при помощи pacman перед сборкой проверить зависимости и установить недостающие. Если пакет завит от пакетов из AUR, их необходимо установить вручную до сборки. -
-i
/--install
— установить пакет после успешной сборки. Позволяет пропустить шаг по ручной установке. -
-r
/--rmdeps
— удалить зависимости, необходимые только для сборки, так как они больше не требуются. Учтите, что они могут потребоваться при переустановке или обновлении пакета. -
-c
/--clean
— удалить временные файлы после сборки, так как они больше не требуются. Эти файлы обычно необходимы только для отладки процесса сборки.
Установка пакета
После сборки можно установить пакет с помощью pacman:
# pacman -U имя_пакета-версия-архитектура.pkg.tar.zst
Обновление пакета
В каталоге с PKGBUILD пакета сначала обновите файлы командой
$ git pull
после чего повторите процесс сборки и установки, описанный выше.
Обратная связь
Комментарии к пакету
Веб-интерфейс AUR имеет возможность комментирования, благодаря которой пользователи могут сообщить мэйнтейнеру PKGBUILD
о предложениях и улучшениях.
PKGBUILD
в свои комментарии, так как они очень быстро устаревают и, в итоге, просто занимают место. Вместо этого отправляйте такие файлы на email ответственного сопроводителя или используйте pastebin.Python-Markdown предоставляет основной Markdown-синтаксис для форматирования комментариев.
- Эта реализация иногда имеет некоторые отличия от официальных правил синтаксиса.
- Хеши коммитов Git-репозиториев пакетов и ссылки на Flyspray карты преобразуются в ссылки автоматически.
- Длинные комментарии сворачиваются и могут быть показаны по требованию.
Голосование
Одним из самых простых действий для всех пользователей Arch Linux является обзор AUR и голосование за понравившиеся пакеты.
Каждый пакет может быть принят кем-нибудь из доверенных пользователей в репозиторий community. Количество голосов — один из важных критериев, поэтому в интересах пользователей активное голосование за пакеты.
Авторизуйтесь на сайте AUR, чтобы появилась возможность "Проголосовать за пакет" при просмотре пакета. После входа также возможно проголосовать за пакет из командной строки при помощи aurvoteAUR, aurvote-gitAUR или aur-auto-vote-gitAUR.
Кроме того, если настроена ssh-аутентификация, можно проголосовать из командной строки с использованием ssh-ключа. Это означает, что не придётся сохранять или вводить пароль от AUR.
$ ssh aur@aur.archlinux.org vote имя_пакета
Устаревшие пакеты
Используйте Пометить пакет как устаревший для установки соответствующего флага. Укажите причину, по которой вы сочли пакет устаревшим, лучше всего — указав ссылку на объявление о релизе или его tarball.
Также можно попробовать связаться с сопроводителем по email. Если ответа не последует в течение двух недель, можно отправить запрос Сделать сиротой для данного пакета. Смотрите AUR submission guidelines#Requests для дополнительной информации.
pkgver
. Не пытайтесь их пометить, поскольку сопроводитель просто снимет отметку и проигнорирует запрос. Сопроводители пакетов AUR не коммитят "пустые" обновления значения pkgver
.Отладка процесса сборки пакета
- Убедитесь, что ваше сборочное окружениеобновлено, прежде чем собирать что-либо.
- Убедитесь, что группа пакетов base-devel установлена.
- Используйте опцию
-s
с командойmakepkg
, чтобы проверить и установить все необходимые зависимости перед сборкой. - Попробуйте стандартную конфигурацию makepkg.
- Смотрите Makepkg (Русский)#Решение проблем по часто возникаемым проблемам.
Если у вас проблемы со сборкой пакета, первым делом почитайте PKGBUILD и комментарии на странице AUR.
Вполне может оказаться, что PKGBUILD
сломан для всех. Если вы не можете разобраться сами, сообщите сопроводителю пакета (например, запостив текст ошибки в комментарии на странице AUR). Также можно поискать помощь на AUR Issues, Discussion & PKGBUILD Requests forum.
Причина может оказаться очень нетривиальной. Нестандартные CFLAGS
, LDFLAGS
и MAKEFLAGS
могут вызывать проблемы. Чтобы избежать проблем, которые могут быть вызваны специфичным окружением, собирайте пакеты в clean chroot. Если сборка не получается даже в clean chroot, тогда проблема скорее всего в самом PKGBUILD
.
Смотрите Creating packages#Checking package sanity об использовании namcap
. Если вы хотите получить ревью PKGBUILD
, отправьте его в aur-general mailing list или Creating & Modifying Packages forum. Также можно попросить помощь в IRC-канале или Libera Chat.
Распространение и поддержка пакетов
При помощи AUR, пользователи могут распространять свои файлы PKGBUILD. В репозитории не хранится каких-либо бинарных пакетов, но он позволяет пользователям выгружать файлы PKGBUILD
, которые потом могут быть скачаны другими. Файлы PKGBUILD не проходят тщательную проверку (и не поддерживаются официально), поэтому вы используете их на свой страх и риск.
Отправка пакетов
Правила отправки пакетов
При отправке пакетов в AUR придерживайтесь следующих правил:
- Проверьте официальную базу данных пакетов на наличие этого пакета. Если для него существует любая версия, не выкладывайте пакет. Если официальный пакет устарел, пометьте его как устаревший. Если официальный пакет заброшен или не предоставляет какую-либо функцию, пожалуйста, создайте баг-репорт.
- Проверьте AUR на наличие этого пакета. Если он в настоящее время поддерживается, о необходимых изменениях можно написать в комментариях, чтобы мейнтейнер обратил на это внимание. Если он не поддерживается, пакет может быть принят и вы можете его обновлять по мере необходимости. Не создавайте дублирующиеся пакеты.
- Внимательно проверьте, что то, что вы отправляете, не содержит ошибок. При создании
PKGBUILD
обязательно прочтите и придерживайтесь стандартов для создания пакетов Arch. Это необходимо для нормального функционирования и успешной работы AUR. Уважайте личное время каждого пользователя и не тратьте его на исправление ваших ошибок вPKGBUILD
. - Пакеты, содержащие бинарные файлы, либо оформленные небрежно могут быть удалены без предупреждения.
- Если вы сомневаетесь в пакете (или в каком либо из шагов его создания), отправьте
PKGBUILD
в почтовую рассылку AUR или на форум AUR для публичного обсуждения, прежде чем добавлять его непосредственно в AUR - Задайте себе вопрос — будет ли пакет еще кому-нибудь полезен?. Не очень ли он узкоспециализированный? Если он будет полезен более, чем ограниченной группе людей, пакет подходит для AUR.
- AUR и официальные репозитории предназначены для пакетов, преимущественно устанавливающих программное обеспечение и содержимое, относящееся к нему, и включающих что-либо из следующего: исполняемый(е) или конфигурационный(е) файл(ы), online- или offline-документацию для конкретных программ или дистрибутива Arch Linux в целом; медиафайлы, используемые программным обеспечением напрямую.
- Наберитесь немного опыта, прежде чем предоставлять пакеты в AUR. Изучите и соберите несколько пакетов других пользователей, прежде чем отправлять свои.
Создание нового пакета
Для получения возможности отправки пакета в AUR у пользователя должен быть ключ SSH. Содержимое публичного ключа .ssh/foo.pub
необходимо скопировать в данные пользователя в Мою учётную запись. Вместо использования существующего SSH-ключа рекомендуется создать новый: в этом случае вы будете иметь возможность отозвать ключ, если что-то произойдёт.
Для подготовки к загрузке пакета просто клонируйте Git-репозиторий с необходимым именем:
$ git clone ssh://aur@aur.archlinux.org/foobar.git
Клонирование (clone) или отправка (push) в несуществующий репозиторий автоматически создаст его.
Теперь вы можете добавить необходимые файлы в локальную копию репозитория. При внесении изменений в репозитории обязательно включайте в корневой каталог файлы PKGBUILD
и .SRCINFO
. Для создания файла .SRCINFO
можно использовать команду mksrcinfo из пакета pkgbuild-introspectionAUR.
.SRCINFO
содержит исходные метаданные пакета. Для получения дополнительной информации смотрите раздел .SRCINFO
Обновление/отправка пакета
Для отправки новой версии пакета в AUR добавьте новые PKGBUILD
, .SRCINFO
и, при необходимости, другие файлы (например, файл .install
или локальные файлы патчей .patch
) в staging area при помощи команды git add
, создайте коммит с коментарием при помощи git commit
, и после этого отправьте изменения в AUR при помощи git push
.
Пример создания и отправки нового пакета:
$ mksrcinfo $ git add PKGBUILD .SRCINFO $ git commit -m 'Initial import' $ git push origin master
git config user.name [...]
и git config user.email [...]
! Намного труднее изменить опубликованную историю, смотрите: FS#45425. Проверяйте ваши коммиты до их отправки!Для обновления пакета измените файл PKGBUILD
и запустите следующие команды отслеживания изменений в репозитории Git:
$ mksrcinfo $ git commit -am 'Update to 1.0.0-2' $ git push
Для получения дополнительной информации смотрите статью Git.
.SRCINFO
, и добавили его в последующем коммите, AUR откажет в записи пакета, потому что .SRCINFO
должен присутствовать в каждом изменении. Чтобы решить эту проблему, можно использовать git rebase с параметром --root
или git filter-branch с параметром --tree-filter
.Поддержка пакетов
- Если вы занимаетесь поддержкой пакета и хотите обновить его
PKGBUILD
, просто отправьте пакет еще раз. - Поддерживайте обратную связь: следите за комментариями других пользователей и вносите улучшения, которые они предлагают. Относитесь к этому, как к процессу обучения!
- Пожалуйста, не пишите комментариев, содержащих номер версии при каждом обновлении пакета. Благодаря этому раздел комментариев будет удобен для полезного содержимого, о котором упомянуто выше. Для проверки наличия обновлений гораздо лучше подходят инструменты для работы с AUR.
- Не забрасывайте свои пакеты! Именно создатель пакета должен его сопровождать, проверять обновления и улучшать
PKGBUILD
. - Если вы по каким-то причинам больше не хотите продолжать поддерживать пакет, откажитесь от него (
disown
) в веб-интерфейсе AUR и/или отправьте сообщение в почтовую рассылку AUR.
Прочие запросы
- Запросы на отказ от поддержки пакета или его удаление можно создать, нажав на ссылку "File Request" в меню "Действия над пакетом" справа. В этом случае автоматически будет отправлено уведомление текущему мэйнтейнеру пакета по электронной почте и в почтовую рассылку aur-requests для обсуждения. После этого доверенные пользователи примут или отвергнут запрос
- Запросы на отказ от поддержки пакета будут выполнены в течение двух недель, если текущий мэйнтейнер не вмешается
- Было реализовано слияние пакетов: пользователи все равно должны повторно отправлять пакет под новым именем, но при этом могут сделать запрос слияние комментариев и голосов из старых пакетов.
- Запросы на удаление должны содержать следующую информацию:
- Причину удаления, хотя бы короткую запись
Заметьте, что только лишь комментариев к пакету недостаточно для указания причины его удаления. Чтобы доверенные пользователи предприняли какие-либо действия, единственное место, куда следует отправлять данную информацию — почтовая рассылка aur-requests. - Информацию по поддержке: например, то, что содержимое пакета предоставляется другим пакетом, или то, что он был переименован с согласия владельца, и т.д.
- Для запросов на слияние: имена нового и исходных пакетов.
- Причину удаления, хотя бы короткую запись
Запросы на удаление могут быть отвергнуты, в случае чего вам предложат просто отказаться от поддержки пакета.
Часто задаваемые вопросы
Что такое AUR?
AUR (Arch User Repository, пользовательский репозиторий Arch) — это место, куда пользователи Arch Linux могут загружать файлы PKGBUILD приложений, библиотек и т. д. и предоставлять к ним доступ всему сообществу. Попутно пользователи могут голосовать за понравившиеся им пакеты для перемещения их в репозиторий community, после чего пакеты станут доступны для пользователей в бинарном виде.
Какие типы пакетов разрешены в AUR?
Пакеты AUR — это просто "скрипты сборки" исполняемых файлов для последующей упаковки полученных бинарных файлов в пакет и установки при помощи pacman. Обычно разрешено все, что удовлетворяет вышеуказанным принципам полезности, инструкциям и лицензионным требованиям программного обеспечения. Но в некоторых случаях прямо указано, что запрещено создавать ссылки на скачивание, например, когда контент запрещен к распространению, вы можете использовать лишь само имя файла в качестве исходника. Это означает, что пользователь должен самостоятельно озаботиться в получении таких файлов. Если вы сомневаетесь в правовых аспектах, лучше сначала спросить.
Как я могу голосовать за пакеты в AUR?
Зарегистрируйтесь на веб-сайте AUR для получения доступа к опции "Проголосовать за пакет" во время просмотра пакетов. После регистрации доступно также голосование из командной строки при помощи пакета aurvoteAUR.
Кто такие доверенные пользователи/TU?
Доверенный пользователь (Trusted User, TU) — это пользователь, выбранный для сопровождения AUR и репозитория community. Они поддерживают популярные файлы PKGBUILD
в community и работу AUR в целом.
В чем разница между AUR и репозиторием community?
AUR — это место, где хранятся все файлы PKGBUILD
, присланные пользователями. Сами пакеты должны быть собраны вручную при помощи makepkg. Когда файлы PKGBUILD
набирают достаточный интерес со стороны сообщества и поддержку доверенных пользователей, они собираются в пакеты, которые перемещаются в репозиторий community (поддерживаемый доверенными пользователями), из которого уже могут напрямую быть установлены при помощи pacman.
Что необходимо для перемещения PKGBUILD в репозиторий community?
Обычно необходимо как минимум 10 голосов для того, чтобы пакет мог быть перемещен в community. Однако, если доверенный пользователь захочет поддерживать пакет, он скорее всего сделает это сразу.
Получение пакетом минимально необходимого количества голосов — не единственное требование: у кого-либо из доверенных пользователей должно появиться желание поддерживать этот пакет. Доверенные пользователи не обязаны перемещать пакет в репозиторий community, даже если он имеет тысячи голосов.
В большинстве случаев очень популярные пакеты остаются в AUR по одной или нескольким из следующих причин:
- В репозиториях Arch Linux уже содержится другая версия пакета
- Пакет предназначен для AUR (например, это Инструмент для работы с AUR)
- Прямое распространение запрещено лицензией
Смотрите также правила добавления пакетов в репозиторий community.
Как создать PKGBUILD?
Прочтите статью Создание пакетов. Перед тем, как создавать PKGBUILD
проверьте, нет ли его в AUR, чтобы исключить дублирование.
Я пробую запустить "pacman -S foo", но получаю ошибку, хотя знаю, что этот пакет есть в репозитории community
Скорее всего, вы не разрешили использование репозитория community в /etc/pacman.conf
. Просто раскомментируйте соответствующие строки.
Если community в вашем файле /etc/pacman.conf
включен, попробуйте сперва запустить pacman -Syu
, чтобы синхронизировать кэш пакетов и выполнить полное обновление системы, а затем снова попробуйте установить пакет foo.
Пакет из AUR устарел, что я могу сделать?
Во-первых, вы можете пометить пакет как устаревший. Если пакет будет находиться в этом состоянии долгое время, лучше всего написать электронное письмо пользователю, который поддерживает пакет. Если вы не получите ответа в течение двух недель, можете создать orphan request. Если пакет помечен как устаревший более уже трех месяцев и в целом не обновлялся на протяжении длительного времени, пожалуйста, добавьте его в ваш orphan request.
Я хочу предоставить свой PKGBUILD; кто-нибудь может проверить его на наличие ошибок?
Если вы хотите, чтобы пользователи проверили ваш PKGBUILD
, отправьте его в почтовую рассылку aur-general. Получить помощь вы также можете в IRC-канале #archlinux на irc.freenode.net. Кроме того, вы можете использовать namcap для проверки PKGBUILD
и собранного пакета на наличие ошибок.
Пакет foo из AUR не собирается, когда я запускаю makepkg; что мне делать?
Скорее всего, вы упустили какие-то детали.
- Запустите
pacman -Syyu
перед сборкой. Возможно, ваша система не обновлена. - Убедитесь, что установлены группы пакетов "base" и "base-devel".
- Попробуйте запустить
makepkg
с опцией-s
для проверки и установки необходимых зависимостей перед началом сборки.
Первым делом просмотрите PKGBUILD
и прочтите комментарии на странице пакета в AUR. Возможно, причина несколько сложнее. Нестандартные установки CFLAGS
, LDFLAGS
и MAKEFLAGS
могут вызывать ошибки. Также возможно, что ошибки содержит сам PKGBUILD
. Если вы не можете исправить их самостоятельно, сообщите об этом пользователю, поддерживающему пакет — например, написав комментарий на странице в AUR.
Как ускорить повторную сборку?
Если вы часто компилируете код, используя gcc — скажем, пакет, использующий исходный код из репозиториев git или svn, вы можете найти полезной утилиту ccache (compiler cache).
Как получить доступ к неподдерживаемым пакетам?
Смотрите раздел #Установка и обновление пакетов.
Почему пакет пропал из AUR?
Пакет мог быть удалён, если он не удовлетворял правилам отправки пакетов. Для уточнения причины удаления смотрите архив aur-requests.
Если пакет присутствовал в AUR3, не обязательно, что он перешёл в AUR4. Вы можете попробовать найти его в репозитории git для пакетов AUR3.