# Arch User Repository (Русский)

Ссылки по теме

- Вспомогательные инструменты для AUR
- AurJson
- Руководство для доверенных пользователей AUR
- PKGBUILD (Русский)
- Makepkg (Русский)
- pacman (Русский)
- Метаданные AUR
- Официальные репозитории
- Arch Build System (Русский)

Пользовательский репозиторий Arch (Arch User Repository - AUR) — это разрабатываемое сообществом хранилище ПО для пользователей Arch. Он содержит описания пакетов (PKGBUILD'ы), которые позволят вам скомпилировать пакет из исходников с помощью makepkg и затем установить его, используя pacman. AUR был создан, чтобы объединить и предоставить в общий доступ новые пакеты от сообщества и способствовать скорому включению популярных пакетов в #Репозиторий community. Этот документ объясняет, как пользователи могут получить доступ к AUR и использовать его.

Большое количество пакетов, которые вошли в официальные репозитории, начинали свой путь с AUR. В AUR пользователи могут добавлять свои собственные сборки пакетов (PKGBUILD'ы с необходимыми файлами). Сообществу предоставлена возможность голосовать за или против этих пакетов. Если пакет становится популярным, распространяется под подходящей лицензией и может быть собран без дополнительных сложностей, то, вероятно, он будет перенесен в репозиторий community (непосредственно доступный при помощи утилит pacman и abs).

## Приступая к работе

Пользователи могут искать и скачивать PKGBUILD'ы через веб-интерфейс AUR. Эти PKGBUILD'ы можно собирать в пакеты для установки, используя makepkg, и затем устанавливать при помощи pacman.

- Удостоверьтесь, что у вас установлена группа пакетов base-devel (`pacman -S --needed base-devel`)
- Прочитайте остальную часть этой статьи для получения дополнительной информации и краткого руководства по установке пакетов из AUR
- Посетите веб-интерфейс AUR, чтобы узнать о новинках и событиях. Также там вы найдете статистику и свежий список недавно добавленных в AUR пакетов
- Просмотрите раздел #FAQ для получения ответов на часто задаваемые вопросы
- Вы можете захотеть настроить `/etc/makepkg.conf` для лучшей оптимизации под ваш процессор и приоритета на сборку пакетов из AUR. Значительное уменьшение времени компиляции может быть достигнуто на системах с многоядерными процессорами путем изменения значения переменной MAKEFLAGS. Также пользователи могут включить специфичные для конкретного оборудования оптимизации в GCC при помощи переменной CFLAGS. Для получения дополнительной информации смотрите статью makepkg

## История

Эти адреса оставлены только для истории. С тех пор они были заменены AUR-ом и теперь недоступны.

В начале была `ftp://ftp.archlinux.org/incoming`, и люди вносили свой вклад путем простой закачки PKGBUILD'ов, необходимых дополнительных файлов и собранного пакета на сервер. Пакет и связанные с ним файлы оставались на сервере до тех пор, пока мейнтейнер пакета не просматривал и адаптировал программу.

После были созданы репозитории доверенных пользователей. Нескольким лицам сообщества было разрешено содержать свои собственные репозитории с общим доступом. AUR вырос на их основе с целью предоставить более гибкую и удобную систему. На самом деле, AUR-мэйнтейнеры до сих пор упоминаются как доверенные пользователи (TU - Trusted Users).

## Поиск

Web-интерфейс AUR может быть найден здесь, а интерфес, который может быть, к примеру, использован для доступа к AUR из скриптов - здесь.

Поиск названий пакетов и их описание идет при помощи сравнения LIKE в MySQL. Это дает возможность более гибких запросов (к примеру, попробуйте поискать `tool%like%grep` вместо `tool like grep`). Если вам необходимо найти описание, в котором содержится символ `%`, экранируйте его так: `\%`.

## Установка пакетов

Установка пакетов из AUR относительно проста (вообще-то она абсолютно проста ;-). Необходимо:

1. Скачать архив, содержащий PKGBUILD и, возможно, другие требуемые файлы, такие как юниты systemd и патчи (но, чаще всего, не сам исходный код)
2. Извлечь архив (предпочтительно в каталог, предназначенный лишь для сборки из AUR) при помощи команды `tar -xvf foo.tar.gz`
3. Выполнить `makepkg` в каталоге с извлеченными файлами (`makepkg -s` автоматически установит необходимые зависимости при помощи pacman). Эта команда скачает, скомпилирует и запакует исходный код
4. Заглянуть в файл README в `src/`, поскольку в нем может содержаться информация, необходимая позднее
5. Установить готовый пакет при помощи pacman:

    $ pacman -U /путь/к/pkg.tar.xz

Вспомогательные инструменты добавляют прямой доступ к AUR. Они различаются по возможностям, но все они способны помочь в поиске, получении, сборке и установке из PKGBUILD, которые находятся в AUR. Все эти скрипты могут быть найдены в AUR.

Важно: В Arch Linux нет и никогда не будет официальных механизмов для установки собранных пакетов из AUR. Пользователи должны сами производить сборку пакетов

### Подготовка

Для начала установите необходимые утилиты. Группы пакетов base-devel должно быть достаточно. Она включает в себя утилиту make и другие инструменты, необходимые для компиляции из исходников.

Важно: Пакеты в AUR предполагают, что группа base-devel уже установлена, и мейнтейнеры не будут указывать пакеты из нее в качестве зависимостей, даже если пакет не сможет собраться без них. Пожалуйста, убедитесь в том, что эта группа пакетов установлена, прежде чем сообщать об ошибках

    # pacman -S --needed base-devel

Затем выберите подходящий каталог для сборки. Каталог сборки - это просто директория, в которой пакет будет создан или "собран", и им может быть любая директория. Обычно выбирают что-то наподобие:

    ~/builds

или, если используется ABS (система сборки для Arch), то:

    /var/abs/local

Более подробно о ABS читайте статью Система сборки для Arch. Этот пример будет использовать `~/builds` в качестве директории для сборки.

### Получение файлов

Найдите пакет в AUR. Это делается с помощью поиска (текстовое поле наверху страницы AUR home page). После перехода по одной из ссылок из списка найденных результатов откроется страница информации о выбранном пакете. Прочтите описание и убедитесь, что это то, что вы искали, обратите внимание на то, когда пакет последний раз обновлялся, и прочтите все комментарии.

Скачайте необходимые файлы для сборки. Для этого нажмите на ссылку "Скачать архив" под заголовком "Действия над пакетом" с правой стороны. Этот файл должен быть сохранен в директорию для сборки или скопирован туда после скачивания. Для нашего примера архив будет называться "foo.tar.gz" (стандартный формат - имяпакета.tar.gz, если он был правильно закачан в AUR).

В качестве альтернативы вы можете скачать архив при помощи терминала, сперва перейдя в каталог сборки:

    $ cd ~/builds
    $ curl -L -O https://aur.archlinux.org/packages/fo/foo/foo.tar.gz

### Сборка пакета

Распакуйте tar-архив. Для этого перейдите в директорию для сборки и выполните:

    $ cd ~/builds
    $ tar -xvf foo.tar.gz

После этого в директории для сборки появится новая поддиректория "foo".

Важно: Внимательно проверьте все файлы. Перейдите в новую поддиректорию и просмотрите `PKGBUILD` и каждый файл `.install` на наличие злонамеренных команд, которые могут повредить/заразить ваш компьютер. `PKGBUILD`'ы - это скрипты bash, содержащие функции для выполнения `makepkg`, и эти функции могут содержать любые правильные команды или синтаксис Bash. Таким образом, вполне возможно, что в `PKGBUILD` будут содержаться опасные команды из-за злого умысла или невежества со стороны автора. Поскольку `makepkg` использует fakeroot (и никогда не должна запускаться от имени суперпользователя), есть некоторый уровень защиты, но вы никогда не должны полагаться на это. Если сомневаетесь, не собирайте пакет, а обратитесь за советом на форум или почтовую рассылку

    $ cd foo
    $ nano PKGBUILD
    $ nano foo.install

Соберите пакет. После ручной проверки целостности файлов запустите makepkg от имени обычного пользователя:

    $ makepkg -s

Опция `-s` воспользуется утилитой sudo для установки любых необходимых зависимостей. Если использование sudo нежелательно, то заранее самостоятельно установите необходимые зависимости и уберите опцию `-s` из вышеуказанной команды.

### Установка пакета

Установите пакет, используя pacman. Созданный пакет должен иметь имя:

    <имя приложения>-<номер версии пакета>-<номер ревизии пакета>-<архитекрура>.pkg.tar.xz

Установите его при помощи опции pacman "upgrade" :

    # pacman -U foo-0.1-1-i686.pkg.tar.xz

Такие вручную установленные пакеты называются посторонними — это пакеты, не представленные ни в одном из репозиториев, известных pacman'y. Чтобы увидеть список всех посторонних пакетов, выполните:

    $ pacman -Qm

Обратите внимание: Приведенный выше пример является лишь вводным описанием процесса сборки пакета. На страницах makepkg и Система сборки для Arch информации гораздо больше, и они очень рекомендуются к прочтению, особенно начинающим пользователям

## Обратная связь

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

Одним из самых простых действий для всех пользователей Arch Linux является обзор AUR и голосование за понравившиеся пакеты через online интерфейс. У каждого пакета есть право быть адаптированным доверенными пользователями и быть включенным в #Репозиторий community. Количество голосов - один из критериев, поэтому голосование за пакеты соответствует интересам любого пользователя.

## Распространение и поддержка пакетов

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

### Предоставление пакетов

Важно: Ожидается, что перед тем, как предоставлять пакеты, вы ознакомитесь со стандартами создания пакетов для Arch, а также всеми статьями, упомянутыми внизу страницы

После авторизации в AUR пользователь может отправить архив `*.tar.gz` каталога, содержащего файлы для сборки. Директория внутри архива должна содержать файлы PKGBUILD, .AURINFO, все `.install`, патчи и т.д. (но ни в коем случае скомпилированные двоичные пакеты). Примеры того, что может содержаться в такой директории, можно найти в каталоге `/var/abs`, если была установлена ABS.

Архив может быть создан при помощи следующей команды, содержащейся в пакете pkgbuild-introspection:

    $ mkaurball

Обратите внимание, что будет создан архив .tar.gz. Предположим, что вы создаете пакет для libfoo, тогда содержимое архива должно быть похоже на это:

    $ tar tf libfoo-0.1-1.src.tar.gz

     libfoo/
     libfoo/.AURINFO
     libfoo/PKGBUILD
     libfoo/libfoo.install

Обратите внимание: Файл .AURINFO содержит исходные метаданные пакета. Для получения дополнительной информации смотрите раздел Использование makepkg --source

При предоставлении пакетов в AUR придерживайтесь следующих правил:

- Проверьте официальную базу данных пакетов на наличие этого пакета. Если для него существует любая версия, не выкладывайте пакет. Если официальный пакет устарел, поставьте для него соответствующий флаг. Если официальный пакет заброшен или не предоставляет какую-либо функцию, пожалуйста, создайте баг-репорт
- Проверьте AUR на наличие этого пакета. Если он в настоящее время поддерживается, о необходимых изменениях можно написать в комментариях, чтобы мейнтейнер обратил на это внимание. Если он не поддерживается, в пакет можно внести необходимые адаптацию и обновления. Не создавайте дублирующиеся пакеты
- Внимательно проверьте, что то, что вы отправляете, не содержит ошибок. При создании PKGBUILD обязательно прочтите и придерживайтесь стандартов для создания пакетов Arch. Это необходимо для нормального функционирования и успешной работы AUR. Уважайте личное время каждого пользователя и не тратьте его на исправление ошибок в PKGBUILD
- Пакеты, содержащие двоичные файлы или написанные без должной аккуратности, могут быть удалены без предупреждения
- Если вы сомневаетесь в пакете (или в каком либо из шагов его создания), отправьте PKGBUILD в почтовую рассылку AUR или на форум AUR для публичного обсуждения, прежде чем добавлять его непосредственно в AUR
- Убедитесь, что пакет является полезным. Будет ли кто-нибудь еще его использовать? Не очень ли он узкоспециализированный? Если он будет полезен более, чем ограниченной группе людей, пакет подходит для AUR
- AUR и официальные репозитории предназначены для пакетов, преимущественно устанавливающих программное обеспечение и содержимое, относящееся к нему, и включающих что-либо из следующего: исполняемый(е) или конфигурационный(е) файл(ы), online- или offline-документацию для специфических программ или дистрибутива Arch Linux в целом, или медиафайлы, используемые программным обеспечением напрямую
- Наберите немного опыта, прежде чем предоставлять пакеты в AUR. Создайте несколько пакетов, чтобы освоить процесс создания
- Если вы отправляете архив `package.tar.gz`, в котором содержится файл с именем `package`, вы получите ошибку "Could not change to directory `/home/aur/unsupported/package/package`". Чтобы решить эту проблему, переименуйте файл `package` во что-нибудь другое, например, `package.rc`. Во время установки в директории `pkg` вы сможете переименовать его обратно в `package`

### Поддержка пакетов

- Если вы занимаетесь поддержкой пакета и хотите обновить его PKBUILD, просто отправьте пакет еще раз
- Поддерживайте обратную связь и наблюдайте за комментариями других пользователей, пробуйте добавлять любые улучшения, которые они предлагают. Относитесь к этому, как к процессу обучения!
- Пожалуйста, не пишите комментариев, содержащих номер версии, при каждом обновлении пакета. Благодаря этому раздел комментариев будет удобен для различного содержимого, описанного выше. Для проверки наличия обновлений гораздо лучше подходят вспомогательные инструменты для AUR
- Пожалуйста, не отправляйте пакеты просто так и не забывайте о них! Именно создатель пакета должен его сопровождать, проверять обновления и улучшать PKGBUILD
- Если вы по каким-то причинам больше не хотите продолжать поддерживать пакет, используйте функцию `disown` в веб-интерфейсе AUR и/или отправьте сообщение в почтовую рассылку AUR

### Другие требования

- Запросы на отказ от владения пакетом и его удаление отправляются в почтовую рассылку aur-general доверенным и другим пользователям для принятия решения
- Включайте имя пакета и ссылку на страницу в AUR, предпочтительно в сноске [1]
- Запросы на отказ от владения пакетом будут выполнены в течение двух недель после того, как будет осуществлена связь с текущим мэйнтейнером по email, если он не отреагирует
- Было реализовано слияние пакетов, пользователи могут повторно отправить пакет в AUR под новым именем и запрос в почтовую рассылку на слияние с комментариями и голосами старой версии
- Запросы на удаление должны содержать следующую информацию:
  - Имя пакета и ссылку на страницу в AUR
  - Причину удаления, хотя бы короткую запись
    Заметьте, что комментарии к пакету не являются достаточной причиной для запроса на его удаление. Чтобы доверенные пользователи предприняли какие-либо действия, единственное место, куда следует отправлять данную информацию - почтовая рассылка aur-general
  - Информацию по поддержке, например, то, что пакет предоставляется другим пакетом, то, что он был переименован с согласия владельца, и т.д.

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

## Репозиторий community

Репозиторий community, поддерживаемый доверенными пользователями, содержит самые популярные пакеты из AUR. По умолчанию он включен в `/etc/pacman.conf`. Если же он отключен/удален, его можно подключить, раскомментировав/добавив эти 2 строки:

    /etc/pacman.conf

    ...
    [community]
    Include = /etc/pacman.d/mirrorlist
    ...

Этот репозиторий, в отличие от AUR, содержит двоичные пакеты, которые могут быть установлены непосредственно при помощи pacman, а также файлы исходников, доступные для ABS. Некоторые из этих пакетов через какое-то время могут быть перемещены в репозиторий core или extra, если разработчики посчитают их важными для дистрибутива.

Пользователи также могут получить доступ к сборочным файлам из community редактированием файла `/etc/abs.conf` и включением этого репозитория в массив `REPOS`.

## Репозиторий Git

Репозиторий Git в AUR поддерживает Thomas Dziedzic, предоставляя историю пакета наряду с другими вещами. Он обновляется по крайней мере один раз в день. Чтобы скопировать репозиторий (несколько сотен мегабайт), выполните команду:

    $ git clone git://pkgbuild.com/aur-mirror.git

Для получения дополнительной информации загляните в веб-интерфейс и ветку форума.

## FAQ

### Что такое AUR?

AUR (Arch User Repository, пользовательский репозиторий Arch) - это место, куда пользователи Arch Linux могут загружать файлы PKGBUILD приложений, библиотек и т.д. и предоставлять к ним доступ всему сообществу. Попутно пользователи могут голосовать за понравившиеся им пакеты для перемещения их в репозиторий community, после чего пакеты станут доступны для пользователей в двоичном виде.

### Какие типы пакетов разрешены в AUR?

Пакеты AUR - это просто "скрипты сборки" исполняемых файлов для последующей их установки pacman'ом. Обычно разрешено все, что удовлетворяет вышеуказанным принципам полезности, инструкциям и лицензионным требованиям программного обеспечения. Но в некоторых случаях прямо указано, что запрещено создавать ссылки на скачивание, например, когда контент запрещен к распространению, вы можете использовать лишь само имя файла в качестве исходника. Это означает, что пользователь должен заранее подготовить ограниченный контент (restricted source) в каталоге сборки до самой сборки пакета. Если вы сомневаетесь в правовых аспектах, лучше сначала спросить.

### Как я могу голосовать за пакеты в AUR?

Зарегистрируйтесь на web-сайте AUR для получения доступа к опции "Проголосовать за пакет" во время просмотра пакетов. После регистрации доступно также голосование из командной строки при помощи пакета aurvote.

### Кто такие доверенные пользователи/TU?

Доверенный пользователь (в укороченном варианте "TU") - это человек, выбранный для слежения за AUR и репозиторием community. Они поддерживают популярные PKGBUILDы в community и в целом работу AUR.

### Какова разница между пользовательским репозиторием Arch и community?

Пользовательский репозиторий Arch - это место, где хранятся все PKGBUILDы, присланные пользователями. Они должны быть собраны вручную при помощи makepkg. Когда PKGBUILDы набирают достаточный интерес со стороны сообщества и поддержку доверенных пользователей, они перемещаются в репозиторий community (управляемый доверенными пользователями), из которого двоичные пакеты могут быть установлены при помощи pacman.

### Сколько голосов нужно набрать PKGBUILDу для его перемещения в community?

Обычно нужно как минимум 10 голосов для перемещения PKGBUILDа в community. Однако, если доверенный пользователь захочет поддерживать пакет, он скорее всего появится в репозитории.

### Как я могу создать PKGBUILD?

Лучшее руководство - страница wiki о создании пакетов. Перед созданием PKGBUILDа посмотрите, нет ли его в AUR, чтобы исключить дублирование.

### Я пробую запустить "pacman -S foo", но получаю ошибку, хотя знаю, что пакет находится в community

Скорее всего, Вы не разрешили использование репозитория community в `/etc/pacman.conf`. Просто раскомментируйте соответствующие строки.

Если community в вашем файле `/etc/pacman.conf` включен, попробуйте сперва запустить `pacman -Syu`, чтобы синхронизировать кэш пакетов и обновить вашу систему, а затем снова попробуйте установить пакет foo.

### Пакет foo в AUR устарел, что я могу сделать?

Во-первых, Вы можете пометить пакет как устаревший. Если пакет будет находиться в этом состоянии долгое время, лучше всего написать электронное письмо человеку, поддерживающему пакет. Если Вы не получите ответа в течение двух недель, можете написать в почтовую рассылку aur-general, чтобы доверенный пользователь пометил PKGBUILD как сироту, если вы готовы поддерживать пакет самостоятельно. Когда мы говорим о пакете, помеченном как устаревший более трех месяцев и в целом не обновляющемся на протяжении длительного времени, пожалуйста, добавьте его в ваш запрос на установку статуса пакета-сироты.

### Я хочу предоставить свой PKGBUILD; кто-нибудь может проверить его на наличие ошибок?

Если вы хотите, чтобы сообщество обсудило ваш PKGBUILD, отправьте его в почтовую рассылку aur-general для получения отзывов от доверенных и обычных пользователей AUR. Вы также можете получить помощь на IRC-канале и у #archlinux в сети irc.freenode.net. Также вы можете использовать namcap для проверки PKGBUILD и собранного пакета на наличие ошибок.

### Пакет foo из AUR не собирается, когда я запускаю makepkg; что мне делать?

Скорее всего, вы упустили какие-то мелочи.

1. Запустите `pacman -Syyu` перед сборкой чего-либо с помощью `makepkg`. Возможно, ваша система не обновлена
2. Убедитесь, что установлены группы пакетов "base" и "base-devel"
3. Попробуйте использовать опцию "`-s`" с `makepkg` для проверки и установки необходимых зависимостей перед началом сборки

Прочитайте PKGBUILD и комментарии на странице пакета в AUR. Возможно, причина гораздо серьезнее. Пользовательские установки CFLAGS, LDFLAGS и MAKEFLAGS могут вызывать ошибки. Также возможно, что ошибки содержит PKGBUILD. Если Вы не можете исправить их самостоятельно, сообщите об этом человеку, поддерживающему пакет, например, написав комментарий на странице в AUR.

### Можно ли ускорить повторяющийся процесс сборки?

Если вы часто компилируете код, используя GCC, скажем, GIT или SVN пакет, вы можете найти полезной утилиту ccache (compiler cache).

### Как я могу получить доступ к неподдерживаемым пакетам?

Смотрите раздел #Установка пакетов.

### Как я могу загрузить файлы в AUR, не пользуясь веб-интерфейсом?

Вы можете использовать вспомогательный инструмент для AUR, такой как burp или aurup. Обе эти программы являются консольными.

## Смотрите также

- Веб-интерфейс AUR
- Почтовая рассылка AUR
- Git-репозиторий AUR Mirror

Categories:

- Arch User Repository (Русский)
- Package development (Русский)
- Package management (Русский)
- Русский