Сразу к делу: опубликовать свой пакет в AUR можно за полчаса. Создай аккаунт на aur.archlinux.org, добавь SSH-ключ, подготовь PKGBUILD и .SRCINFO, залей их в git-репозиторий AUR и отправь на review модераторам (Trusted Users). После проверки пакет появляется в AUR, и любой пользователь может установить его через yay или paru.
Понадобятся три вещи: аккаунт на aur.archlinux.org, SSH-ключ и готовый PKGBUILD. Без аккаунта ничего не выйдет, регистрация бесплатная и занимает пару минут.
AUR (Arch User Repository) это общедоступный архив пакетов, который наполняют сами пользователи. В отличие от официальных репозиториев, пакеты там не проходят полную проверку, но каждый новый пакет смотрит модератор. Публикация бесплатна, а сам процесс похож на обычную работу с git.
Зайди на aur.archlinux.org и нажми «Register». Укажи имя пользователя, почту и пароль. После регистрации открой настройки аккаунта (My Account) и добавь SSH-ключ в раздел SSH Keys. Без ключа пушить не получится.
Если ключа ещё нет, создай его:
ssh-keygen -t ed25519 -C "pochta@example.com"
Ключ появится в ~/.ssh/id_ed25519.pub. Скопируй его содержимое и вставь в настройки аккаунта на AUR. Проверь подключение:
ssh -T aur@aur.archlinux.org
Если всё настроено правильно, увидишь приветствие с именем пользователя. Ошибка «Permission denied» значит, что ключ добавлен неправильно или не туда.
Алгоритм ed25519 надёжнее старого RSA и короче, его удобно вставлять в форму на сайте. Если ключ уже есть, используй его, главное, чтобы закрытая часть лежала в ~/.ssh/. Приватный ключ никому не показывай и не копируй на чужие машины. Если ключей несколько, добавь в ~/.ssh/config запись для aur.archlinux.org, чтобы ssh выбирал нужный файл автоматически.
PKGBUILD для AUR ничем не отличается от обычного. Полный разбор каждой функции и переменной есть в статье «Свой PKGBUILD: полный гайд». Здесь пройдусь по обязательным моментам. Пример реального пакета с разбором PKGBUILD: Klavaro, смотри «PKGBUILD для Klavaro в AUR».
Минимальный PKGBUILD содержит pkgname, pkgver, pkgrel, arch, url, license, depends и функции build() с package(). Для AUR важно, чтобы pkgname совпадал с именем репозитория, а pkgver с версией программы. Собери пакет локально перед публикацией: makepkg -si соберёт и установит его, а заодно проверит, что зависимости указаны верно.
Поле license заполняется всегда. Если не знаешь, под какой лицензией распространяется программа, посмотри в репозитории исходников или спроси автора. Примеры:
license=('GPL-3.0-or-later')
license=('MIT')
license=('custom')
Для программ без явной лицензии ставят custom и кладут текст лицензии в /usr/share/licenses/<имя>/.
namcap ищет типичные ошибки: лишние зависимости, неправильные права, отсутствующие файлы лицензий. Установи его и прогони дважды:
sudo pacman -S namcap
namcap PKGBUILD
namcap *.pkg.tar.zst
Первая команда проверяет сам PKGBUILD, вторая — собранный пакет. Исправь всё, что namcap подсветит как ошибку. Предупреждения тоже лучше разобрать. Частые замечания namcap: неиспользуемые зависимости, отсутствие файла лицензии в пакете, лишние файлы в /usr/share/doc. Всё это легко поправить до публикации, чтобы не получать замечания от модератора.
Файл .SRCINFO описывает пакет в машиночитаемом виде. Его создаёт makepkg:
makepkg --printsrcinfo > .SRCINFO
Этот файл обязателен: без него AUR не покажет пакет в поиске и не сможет собрать его через yay или paru. Перегенерируй .SRCINFO при каждом изменении PKGBUILD.
Внутри .SRCINFO лежат те же данные, что и в PKGBUILD: имя, версия, зависимости, контрольные суммы. AUR-клиенты читают именно этот файл, поэтому расхождение между PKGBUILD и .SRCINFO ломает установку. Проверяй, что оба файла попадают в один коммит.
AUR живёт по своим правилам, и модераторы следят за ними строго. Вот главные.
Проверь, что пакета с таким именем нет ни в официальных репозиториях, ни в AUR:
pacman -Ss имя-пакета
yay -Ss имя-пакета
Если имя занято, выбери другое или добавь суффикс. Дубликат существующего пакета станет поводом для отклонения.
В AUR нельзя публиковать готовые бинарные файлы. PKGBUILD должен собирать программу из исходников. Исключения редки и требуют отдельного обоснования. Ссылки на скачивание веди на официальные источники, а не на личные файлообменники.
Запрещено использовать --skipchecksums, --skippgpcheck и подобные флаги в PKGBUILD. Если контрольные суммы не сходятся, разберись почему, а не отключай проверку.
После публикации у пакета появляются флаги: Out-of-date (устарел) и Orphan (осиротел). Если пользователи пометили пакет как устаревший, обнови его в течение пары недель. Если пакет осиротел, любой желающий может забрать его себе. Заброшенные пакеты модераторы удаляют.
Перед публикацией проверь свой PKGBUILD по вопросам из статьи «Проверка PKGBUILD: 10 вопросов». Она покрывает зависимости, checksums, архитектуры и другие типичные грабли.
AUR работает через git. Каждый пакет живёт в отдельном репозитории на сервере aur.archlinux.org.
Зайди на страницу своего пакета на aur.archlinux.org и нажми «Submit». Имя пакета должно совпадать с именем в PKGBUILD. После этого AUR создаст пустой git-репозиторий.
Проще всего клонировать пустой репозиторий и положить файлы в него:
git clone ssh://aur@aur.archlinux.org/имя-пакета.git
cd имя-пакета
В репозитории должны лежать только PKGBUILD и .SRCINFO. Собранные пакеты и каталог src/ в git не попадают, добавь их в .gitignore.
git remote add aur ssh://aur@aur.archlinux.org/имя-пакета.git
git add PKGBUILD .SRCINFO
git commit -m "initial import"
git push aur master
Важно: AUR использует ветку master, а не main. Если локальный репозиторий создан с веткой main, переименуй её:
git branch -m master
После пуша пакет попадает в очередь на проверку модераторами. На странице пакета появится статус «Submitted», а после проверки он сменится на «Accepted». Следи за комментариями: модератор может оставить замечания прямо там.
Каждый новый пакет проверяет Trusted User (TU). Модератор смотрит PKGBUILD, .SRCINFO, лицензию, источники и соответствие правилам. Если всё в порядке, пакет появляется в AUR. Если есть замечания, тебе напишут в комментарии к пакету, и ты исправишь PKGBUILD и запушь снова.
Обычно проверка занимает от нескольких часов до пары дней. Иногда дольше, если у модератора очередь. Не пиши в комментарии «когда проверят?», это не ускорит процесс. Когда пакет пройдёт проверку, его сможет установить любой пользователь, как описано в статье «Установка пакетов из AUR».
Модератор проверяет не только PKGBUILD. Он смотрит, собирается ли пакет в чистом окружении, нет ли в нём вредоносных действий и не нарушает ли он лицензию. Если пакет отклонён, в комментарии будет причина. Исправь замечание и запушь снова, повторная проверка обычно быстрее первой.
Обновление пакета сводится к новому коммиту в тот же репозиторий. Порядок такой:
pkgver до новой версии программы. Если меняется только PKGBUILD, подними pkgrel.updpkgsums.updpkgsums
makepkg --printsrcinfo > .SRCINFO
git add PKGBUILD .SRCINFO
git commit -m "update to 1.2.3"
git push aur master
В AUR нет релизов и тегов, как на GitHub. Репозиторий пакета живёт на одной ветке master, и каждая публикация это коммит. Для VCS-пакетов (-git, -svn и подобных) pkgver генерируется автоматически при сборке, поэтому .SRCINFO нужно пересобирать при каждом обновлении.
Правило простое: pkgver меняется при новой версии программы, pkgrel при изменении самого PKGBUILD. Если ты поправил зависимости или скрипты сборки, подними pkgrel на единицу. Так пользователи увидят, что пакет обновился, даже если версия программы та же.
Если ты перестал поддерживать пакет, есть два варианта: передать мейнтенерство или удалить пакет.
На странице пакета нажми «Disown». Пакет станет осиротевшим (orphaned), и другой пользователь или TU сможет забрать его себе. Если хочешь передать пакет конкретному человеку, договорись с ним, и он заберёт пакет после твоего disown.
Удалить пакет может только модератор. Оставь комментарий на странице пакета с просьбой об удалении и причиной. Обычно удаляют пакеты, которые больше не собираются, дубликаты или пакеты с нарушением правил. Если пакет осиротел и никто не забрал его в течение двух месяцев, модератор может удалить его без дополнительных запросов. Поэтому, если пакет важен, не бросай его молча: передай мейнтенерство или предупреди в комментариях.
Нет. Поле license обязательно, без него модератор отклонит пакет. Если программа распространяется без явной лицензии, используй license=('custom') и положи текст лицензии в пакет. Проверь лицензию заранее, это одна из самых частых причин отклонения.
Выбери другое имя. Проверь официальные репозитории командой pacman -Ss и AUR командой yay -Ss. Дубликаты отклоняют. Если пакет в AUR осиротел, можно попробовать забрать его себе вместо создания дубликата.
Обычно от нескольких часов до пары дней. Всё зависит от загруженности модераторов. В выходные проверка обычно идёт медленнее. Если пакет лежит без проверки больше недели, можно вежливо напомнить в комментариях.
Напрямую нет. Нужно оставить запрос модератору на странице пакета. А вот отказаться от мейнтенерства (disown) можно самому в любой момент.
Нет. AUR хранит только PKGBUILD и .SRCINFO. Исходники скачиваются по source=() при сборке. Класть бинарники и большие файлы в репозиторий нельзя. Всё, что нужно для сборки, makepkg скачает сам по ссылкам из source=().
Публикация пакета в AUR это аккаунт, SSH-ключ, PKGBUILD с лицензией, .SRCINFO и один git push. Модераторы проверят пакет, и после этого его сможет установить любой пользователь Arch. Дальше остаётся поддерживать пакет: поднимать версии, обновлять контрольные суммы и пушить изменения. Если пакет больше не нужен, откажись от мейнтенерства или попроси модератора удалить его.
Задай вопрос в чате — отвечаем быстро, по делу и без воды.
Комментарии