Все об Arch Linux

Arch Linux будет тем, что вы из него сделаете!

Свой AUR: публикация пакета

Сразу к делу: опубликовать свой пакет в AUR можно за полчаса. Создай аккаунт на aur.archlinux.org, добавь SSH-ключ, подготовь PKGBUILD и .SRCINFO, залей их в git-репозиторий AUR и отправь на review модераторам (Trusted Users). После проверки пакет появляется в AUR, и любой пользователь может установить его через yay или paru.

Что нужно для публикации пакета в AUR

Понадобятся три вещи: аккаунт на aur.archlinux.org, SSH-ключ и готовый PKGBUILD. Без аккаунта ничего не выйдет, регистрация бесплатная и занимает пару минут.

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

Создай аккаунт

Зайди на aur.archlinux.org и нажми «Register». Укажи имя пользователя, почту и пароль. После регистрации открой настройки аккаунта (My Account) и добавь SSH-ключ в раздел SSH Keys. Без ключа пушить не получится.

Сгенерируй SSH-ключ

Если ключа ещё нет, создай его:

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 и проверить его namcap

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

namcap ищет типичные ошибки: лишние зависимости, неправильные права, отсутствующие файлы лицензий. Установи его и прогони дважды:

sudo pacman -S namcap
namcap PKGBUILD
namcap *.pkg.tar.zst

Первая команда проверяет сам PKGBUILD, вторая — собранный пакет. Исправь всё, что namcap подсветит как ошибку. Предупреждения тоже лучше разобрать. Частые замечания namcap: неиспользуемые зависимости, отсутствие файла лицензии в пакете, лишние файлы в /usr/share/doc. Всё это легко поправить до публикации, чтобы не получать замечания от модератора.

Сгенерируй .SRCINFO

Файл .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 по вопросам из статьи «Проверка PKGBUILD: 10 вопросов». Она покрывает зависимости, checksums, архитектуры и другие типичные грабли.

Как залить пакет в AUR через git

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.

Подключи remote и запушь

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». Следи за комментариями: модератор может оставить замечания прямо там.

Как проходит review модераторами

Каждый новый пакет проверяет Trusted User (TU). Модератор смотрит PKGBUILD, .SRCINFO, лицензию, источники и соответствие правилам. Если всё в порядке, пакет появляется в AUR. Если есть замечания, тебе напишут в комментарии к пакету, и ты исправишь PKGBUILD и запушь снова.

Обычно проверка занимает от нескольких часов до пары дней. Иногда дольше, если у модератора очередь. Не пиши в комментарии «когда проверят?», это не ускорит процесс. Когда пакет пройдёт проверку, его сможет установить любой пользователь, как описано в статье «Установка пакетов из AUR».

Модератор проверяет не только PKGBUILD. Он смотрит, собирается ли пакет в чистом окружении, нет ли в нём вредоносных действий и не нарушает ли он лицензию. Если пакет отклонён, в комментарии будет причина. Исправь замечание и запушь снова, повторная проверка обычно быстрее первой.

Как обновлять пакет после публикации

Обновление пакета сводится к новому коммиту в тот же репозиторий. Порядок такой:

  1. Подними pkgver до новой версии программы. Если меняется только PKGBUILD, подними pkgrel.
  2. Обнови контрольные суммы: updpkgsums.
  3. Перегенерируй .SRCINFO.
  4. Запушь изменения.
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 осиротел, можно попробовать забрать его себе вместо создания дубликата.

Как быстро проверяют пакет?

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

Можно ли удалить свой пакет из AUR?

Напрямую нет. Нужно оставить запрос модератору на странице пакета. А вот отказаться от мейнтенерства (disown) можно самому в любой момент.

Нужно ли хранить исходники в AUR?

Нет. AUR хранит только PKGBUILD и .SRCINFO. Исходники скачиваются по source=() при сборке. Класть бинарники и большие файлы в репозиторий нельзя. Всё, что нужно для сборки, makepkg скачает сам по ссылкам из source=().

Полезные ресурсы

Заключение

Публикация пакета в AUR это аккаунт, SSH-ключ, PKGBUILD с лицензией, .SRCINFO и один git push. Модераторы проверят пакет, и после этого его сможет установить любой пользователь Arch. Дальше остаётся поддерживать пакет: поднимать версии, обновлять контрольные суммы и пушить изменения. Если пакет больше не нужен, откажись от мейнтенерства или попроси модератора удалить его.



Не получилось? Поможем настроить

Задай вопрос в чате — отвечаем быстро, по делу и без воды.

Читайте также

Комментарии

Загрузка…

Откроется GitHub: создайте новый issue с вашим комментарием (кнопка «Submit new issue»). После отправки обновите эту страницу — комментарий появится ниже.

Telegram Max