Arch User Repository (Русский) - ArchWiki

Jump to content

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

From ArchWiki

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

- makepkg (Русский)
- pacman (Русский)
- PKGBUILD (Русский)
- .SRCINFO
- Aurweb RPC interface
- AUR submission guidelines (Русский)
- AUR Trusted User Guidelines
- Официальные репозитории
- Arch Build System (Русский)
- Создание пакетов
- Инструменты для работы с AUR
- AUR Cleanup Day

Состояние перевода: На этой странице представлен перевод статьи Arch User Repository. Дата последней синхронизации: 2 февраля 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Пользовательский репозиторий Arch (Arch User Repository, AUR) — поддерживаемое сообществом хранилище программ для пользователей Arch. Содержит описания пакетов (файлы PKGBUILD), которые позволяют скомпилировать пакет из исходников утилитой makepkg и затем установить его с помощью pacman. AUR был создан с целью организации совместного доступа к новым пакетам, которые были созданы сообществом, а также чтобы ускорить добавление популярных пакетов в репозиторий community. В статье описано, как получить доступ к AUR и как с ним работать.

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

Важно: Пакеты в AUR создаются пользователями, содержат полностью неофициальные `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 относительно проста:

1. Скачайте файлы сборки, включая PKGBUILD и, возможно, другие необходимые файлы вроде юнитов systemd и патчей (но, чаще всего, не сам исходный код).
2. Убедитесь, что `PKGBUILD` и прочие файлы не являются вредоносными или ненадёжными.
3. Выполните `makepkg` в каталоге с сохранёнными файлами. Эта команда загрузит исходный код, скомпилирует его и создаст пакет.
4. Выполните `pacman -U файл_пакета`, чтобы установить пакет в систему.

Примечание: AUR не имеет официальной поддержки, поэтому pacman не обновляет AUR-пакеты — это ваша задача. При обновлении пакетов из официальных репозиториев все пакеты из AUR, которые от них зависят, необходимо пересобрать.

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

Прежде всего убедитесь, что в системе установлены необходимые инструменты: установите группу пакетов base-devel. В неё входят make и некоторые другие инструменты, необходимые для компиляции из исходников.

Совет: Флаг `--needed` при установке группы base-devel позволит не переустанавливать те пакеты, которые уже имеются в системе.
Примечание: Пакеты из AUR предполагают, что группа 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

  Примечание: Снимок пакета представляет собой сжатый архив, который необходимо распаковать (лучше всего — в каталог, отдельный от каталога для сборки пакетов из AUR): `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` — удалить временные файлы после сборки, так как они больше не требуются. Эти файлы обычно необходимы только для отладки процесса сборки.

Совет: Используйте `git clean -dfX`, чтобы удалить все файлы, которые игнорирует git — это удалит все предыдущие файлы сборки.

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

После сборки можно установить пакет с помощью pacman:

    # pacman -U имя_пакета-версия-архитектура.pkg.tar.zst

Примечание:

- Если вы изменяли `PKGEXT` в `makepkg.conf`, то имя пакета может отличаться.
- Пример выше даёт лишь краткое описание процесса сборки пакета. Настоятельно рекомендуется прочесть статьи makepkg и ABS, в которых представлена более подробная информация.

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

В каталоге с 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 (Русский)#Запросы для дополнительной информации.

Примечание: Пакеты VCS не считаются устаревшими, если изменилось значение `pkgver`. Не пытайтесь их пометить, поскольку сопроводитель просто снимет отметку и проигнорирует запрос. Сопроводители пакетов AUR не коммитят "пустые" обновления значения `pkgver`.

## Отладка процесса сборки пакета

1. Убедитесь, что ваше сборочное окружение обновлено, прежде чем собирать что-либо.
2. Убедитесь, что группа пакетов base-devel установлена.
3. Используйте опцию `-s` с командой `makepkg`, чтобы проверить и установить все необходимые зависимости перед сборкой.
4. Попробуйте стандартную конфигурацию makepkg.
5. Смотрите 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-канале #archlinux-aur на Libera Chat.

## Отправка пакетов

При помощи AUR пользователи могут распространять свои файлы PKGBUILD. Инструкции и правила публикации описаны в статье AUR submission guidelines (Русский).

## Перевод веб-интерфейса

Информацию о создании и поддержке перевода веб-интерфейса AUR смотрите в файле i18n.txt в дереве исходных текстов AUR.

## Часто задаваемые вопросы

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

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

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

Смотрите #Голосование.

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

Доверенный пользователь (Trusted User, TU) — это пользователь, выбранный для сопровождения AUR и репозитория community. Они поддерживают популярные файлы `PKGBUILD` в community и работу AUR в целом.

### В чем разница между AUR и репозиторием community?

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

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

Смотрите #Устаревшие пакеты.

В то же время вы можете попробовать обновить пакет самостоятельно, отредактировав PKGBUILD локально. Иногда обновления не требуют изменений в процессе сборки или создания пакета, в этом случае достаточно просто обновить `pkgver` или массив `source`.

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

Возможно, вы упускаете что-то тривиальное; смотрите #Отладка процесса сборки пакета.

### ОШИБКА: Одна или больше PGP-подписей не могут быть проверены! Что мне делать?

Скорее всего, у вас нет необходимого открытого ключа (ключей) в вашей личной связке ключей для проверки скачанных файлов. Смотрите makepkg (Русский)#Проверка цифровых подписей.

### Как создать PKGBUILD?

Смотрите статьи AUR submission guidelines (Русский) и Создание пакетов.

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

Существует несколько каналов, по которым можно отправить свой пакет на проверку; смотрите #Отладка процесса сборки пакета.

### Что необходимо для перемещения PKGBUILD в репозиторий community?

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

Получение пакетом минимально необходимого количества голосов — не единственное требование: у кого-либо из доверенных пользователей должно появиться желание поддерживать этот пакет. Доверенные пользователи не обязаны перемещать пакет в репозиторий community, даже если он имеет тысячи голосов.

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

- В репозиториях Arch Linux уже содержится другая версия пакета
- Прямое распространение запрещено лицензией
- Пакет предназначен для AUR (например, это Инструмент для работы с AUR)

Смотрите также правила добавления пакетов в репозиторий community.

### Как ускорить повторную сборку?

Смотрите makepkg (Русский)#Сокращение времени компиляции.

### В чём разница между пакетами foo и foo-git?

Многие пакеты AUR выпускаются в виде «стабильных» версий и «нестабильных», находящихся в процессе разработки. Пакеты разработки обычно имеют суффикс, обозначающий их систему контроля версий, и не предназначены для обычного использования, но могут содержать новые возможности или исправления ошибок. Поскольку эти пакеты скачивают только последние доступные исходные тексты при выполнении `makepkg`, их `pkgver()` в AUR не отражает изменения из апстрима. По тоё же причине эти пакеты не могут выполнять проверку подлинности для любого источника VCS.

### Почему пакет пропал из AUR?

Возможно, пакет был принят доверенным пользователем и теперь находится в репозитории community.

Пакет мог быть удалён, если он не удовлетворял правилам отправки пакетов. Для уточнения причины удаления смотрите архив aur-requests.

Примечание: Репозиторий git удалённого пакета обычно остаётся доступным. Смотрите AUR submission guidelines (Русский)#Запросы.

Если пакет присутствовал в AUR3, не обязательно, что он перешёл в AUR4. Вы можете попробовать найти его в репозитории git для пакетов AUR3.

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

Самый простой способ — проверить HTTP-статус страницы пакета AUR:

    $ comm -23 <(pacman -Qqm | sort) <(curl https://aur.archlinux.org/packages.gz | gzip -cd | sort)

### Как получить список всех пакетов AUR?

- https://aur.archlinux.org/packages.gz
- Используйте `aurpkglist` из python3-aurAUR

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

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

Categories:

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