buildp (ещё одна собиралка deb-пакетов)

Полезные советы и программы от пользователей нашего форума.

Модератор: Модераторы разделов

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20934
Статус: nulla salus bello
ОС: Debian GNU/Linux

buildp

Сообщение Bizdelnick »

Время от времени, не то чтобы часто, но регулярно, у меня возникает задача пересобрать какой-то deb-пакет. Или без изменений, просто более новый, чем есть в репозитории, или слегка подправленный. Собирать предпочитаю в изолированном окружении, поэтому до сего дня использовал pdebuild. Но что-то он мне поднадоел, поскольку для выполнения типовой задачи в нём требуются нетривиальные действия, которые, к тому же, становятся всё изощрённее от версии к версии. Кроме того, очень уж медленный он. Сегодня, убив час просто на попытку повторить то, что я делал год или полтора назад для сборки пакета, я понял, что терпеть это моих сил больше нет.
Так появился buildp. Пока это скорее прототип, но он работает. Он просто запускается в каталоге с распакованными исходниками пакета и собирает его. В изолированном окружении, не захламляя систему сборочными зависимостями. И уже сейчас делает это быстрее, чем pdebuild/pbuilder, хотя в плане скорости ещё много чего можно улучшить. По идее, может собирать под версию дистрибутива, отличную от той, на которой работает, но это неточно: протестировать я сие пока не успел.
Главный недостаток: должен запускаться от root (pbuilder тоже, впрочем). С этим я планирую бороться, но борьба будет нелёгкой.
Скрипт: https://codeberg.org/bizdelnick/buildp/src/branch/master/buildp
Для работы нужно установить зависимости:
  • debootstrap
  • dpkg-dev
  • squashfs-tools
  • что-то, о чём я забыл, но тот, кто решится попробовать, мне напомнит
А также создать каталоги /var/cache/buildp и /var/cache/buildp/result. Как несложно догадаться, именно в последнем каталоге надлежит искать результат сборки (если повезёт, и что-то действительно соберётся).

Shell

% ./buildp
Usage: ./buildp [ -a <architecture> ] [ -c <codename> ] [ -d | -v ]
This command must be run in a debianized source directory.
Options:
-a <architecture>
Build package for specified architecture instead host system.
-c <codename>
Build package for distribuition with specified codename instead host system.
-v
Verbose output.
-d
Debug output.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20934
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: buildp

Сообщение Bizdelnick »

Починил наиболее глупые и очевидные косяки. Вместо TODO наплодил себе задач.
Добавлено (02:16):
Bizdelnick писал:
04.05.2021 02:30
По идее, может собирать под версию дистрибутива, отличную от той, на которой работает, но это неточно: протестировать я сие пока не успел.
Вспомнил, наконец, что надо бы попробовать. Собрал пакет под xenial i386 (на buster amd64). Собрался.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали: