Skip to content

Etersoft-build-utils

Etersoft-build-utils - набор утилит для сборки RPM пакетов созданный компанией Etersoft

Подготовка локальной сборочницы

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

shell
su -
apt-get update
apt-get install etersoft-build-utils hasher giter

hasher использует специальных вспомогательных пользователей и группу hashman для своей работы, поэтому каждого пользователя, желающего использовать hasher, перед началом работы нужно зарегистрировать командой

shell
su -
hasher-useradd USER_NAME
exit

Информация

Поскольку hasher-useradd добавляет пользователя в группы, пользователю необходимо перелогиниться перед началом работы с hasher

Далее настраиваем файл ~/.rpmmacros по следующему образцу

%_topdir        %homedir/RPM
%_tmppath       %homedir/tmp
%_gpg_path      %homedir/.gnupg
%_gpg_name      First and last name <example@altlinux.org>
%packager       First and last name <example@altlinux.org>

Информация

Почту оставляем именно altlinux.org даже если вы ещё не дошли до join 2.3

Для сборки некоторых пакетов hasher может понадобиться доступ к /proc чтобы смонтировать его добавьте в файл /etc/hasher-priv/system строчку

allowed_mountpoints=/proc

На этом настройка hasher завершена, если вы дошли до join 2.3 вам также нужно настроить файл ~/.ssh/config, приведя его к подобному виду

shell
  # Гитовница
    Host gitery
      HostName gitery.altlinux.org
      User alt_example
      Port 222
      IdentityFile ~/.ssh/id_ed25519

Если дошли до 3.6 то к этому файлу нужно добавить

shell
 # Сборочница
   Host gyle
     HostName gyle.altlinux.org
     User alt_example
     Port 222
     IdentityFile ~/.ssh/id_ed25519

Информация

В поле User обязательно оставляем alt_

Сборка пакетов с использованием утилит из Etersoft-build-utils

Если пакет который вы желаете собрать есть в стороннем репозитории (Fedora, Rosa и так далее) вы можете попробовать скачать оттуда src.rpm с помощью rpmgp

Например команда:

shell
rpmgp -a distrobox

Выведет это:

List for fedora-rawhide-e:
    d/distrobox-1.7.2.1-1.fc41.src.rpm

List for rosa-fresh.cr:
    distrobox-1.6.0.1-1.src.rpm

Чтобы скачать src.rpm нужно ввести команду

shell
rpmgp -a -d название пакета

В моём случае это будет

shell
rpmgp -a -d distrobox-1.7.2.1-1.fc41.src.rpm

Далее после того как вы вытащили spec из src.rpm нужно создать git репозиторий командой

shell
git init

После нужно очистить spec командой

shell
rpmcs

Эта команда попытается исправить все зависимости и макросы согласно правилам сборки пакетов в ALT Linux, а также создаст запись в ченжлоге если её не будет

Внимание

Команда rpmcs может иногда ошибаться, так что внимательно следите за тем как изменился spec

После того как наш spec готов нужно скачать исходники используя команду

shell
rpmgs -f

Внимание

Команда rpmgs сама создаёт changelog вида

%changelog
* Tue May 28 2024 First and last name <example@altlinux.org> 1.7.2.1-alt1
- new version (1.7.2.1) with rpmgs script

При join 4.2 рецензенту может не понравится запись "with rpmgs script" поэтому удаляем её

Теперь когда готов spec,gear и имеются исходники осталось только собрать пакет через

shell
rpmbsh -l

Если во время сборки произошла ошибка и вам понадобилась пересборка используйте

shell
rpmbsh -e

Эта команда использует уже созданный chroot не создавая новый что экономит достаточно много времени

Чтобы протестировать собранный пакет в hasher нужно написать

shell
rpmbsh -i

Эта команда установит пакет в hasher где вы можете его тестировать

Отправка пакетов на сборочницу

Если вы дошли до join 3.6 и ваши gpg ключи присутствуют в пакете alt-gpgkeys вы можете отправлять пакеты в сборочницу командой

shell
rpmbs -u

Эта команда сама создаст репозиторий https://git.altlinux.org, а также сама создаст тэг версии и отправит всё на сборку

Смотреть за процессом сборки можно через сайт https://packages.altlinux.org введя там номер задания, или же через команду

shell
gita ls -w 10

Эта команда выведет список всех ваших текущих сборок обновляя его раз в десять секунд

Если во время сборки произошла ошибка вам нужно её исправить, закоммитить и запустить сборку заново командами

shell
git add .
git commit --amend --no-edit
rpmbs -a номер_задания-F

Информация

shell
git commit --amend --no-edit

Обновит ваш нынешний коммит с учётом изменений не меняя при этом само название коммита, если же вам нужно изменить названия коммита используйте просто

shell
git commit --amend

Если вы ещё не дошли до join 4.0 вам нужно получить approve от своего ментора чтобы пакет попал в Сизиф до этого его можно будет установить только через задание

shell
su -
apt-repo test номер_задания
shell
epm -i номер_задания

После того как вы получите approve на свою таску нужно будет написать команду

shell
gita commit номер_задания

Эта команда ещё раз пересоберём пакет на сборочнице, и если всё пройдет удачно пакет попадёт в Сизиф при следующем обновлении репозитория (примерно три часа ночи по МСК)

NMU (Non-Maintainer Upload)

Прежде чем делать NMU нужно убедится в том что в ACL листе есть @everybody, что указывает на то что таску на пакет может сделать любой

Когда мы убедимся что NMU делать можно, нужно получить исходники пакета из Сизифа командой

shell
rpmgp -g название_пакета

После делаем нужные изменения и добавляем к релизу пакета .1, например если релиз был alt1.2 то его нужно заменить на alt1.2.1

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

shell
add_changelog путь_к_spec_файлу

Информация

Так же можно запустить сборку с помощью

shell
rpmbsh

Он предложит дописать ченжлог

Главное правило при написание ченжлога для NNU добавить NMU: в начале, например

%changelog
* Wed Jun 19 2024 First and last name <example@altlinux.org> 1.1.0-alt1.1
- NMU: add devel subpackage

Информация

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

После того как мы сделали изменения и всё проверили можно отправлять NMU через

shell
rpmbs -u

Авторы

История изменений