Сборка пакетов в Debian. Изолированная сборка
Сборка пакетов в Debian
Базовый документ: Debian Packaging Tutorial (Lucas Nussbaum, version 0.8 – 2013-03-03).
Пакет: ar-архив с файлами debian-binary, control.tar.gz, data.tar.gz
Сборка пакета: исходный архив, .dsc-файл, debian-архив (3.0+) или patch (старше)
Команды apt-get build-dep, apt-get source и debcheckout; пакеты build-essential и devscripts.
Содержимое каталога debian: control, rules, patches/, watch, собственные сценарии, прочее. Устройство файла rules.
Работа с птчами и сериями патчей. Quilt. Вспомогательные сборочные подсистемы: debhelper, CDBS, dh (aka Debhelper 7)
Сборка: debuild/dpkg-buildpackage и pbuilder.
Изолированная сборка
Недостатки развёртывания сборочного окружения в базовой системе.
Требования к изолированной сборке:
- Сборочное окружение может формироваться на основе произвольного хранилища, не связанного с хранилищем, на которое настроена базовая система
- Нельзя модифицировать базовую систему при (пере)развёртывании сборочного окружения
=> chroot
=> Запрет запуска команд с правами root
=> fakeroot
- Последующая сборка не должна зависеть от результатов предыдущей
=> переразвёртывание сборочного окружения для каждой сборки
- Нельзя модифицировать пользовательское окружение базовой системы
=> запуск сборки с правами выделенного пользователя
ALT Linux hasher
Базовая ссылка: Wiki ALT Linux Team (в частности, статья Дмитрия Левина «hasher: технология безопасной сборки дистрибутива»)
Свойства: chroot, выделенные пользователи класса builder и rooter, кеширование неизменяемой части окружения.
Достоинства: максимально упрощённое использование при надёжной изоляции.
Специальные возможности: проброс/отключение сети, X11, каталогов /proc, /dev/pts и т. п.; формирование хранилища, пригодного к установке.
Команды hsh, hsh-rebuild, hsh-shell и hsh-run, hsh-install
Тонкости: заведение персональных выделенных пользователей с помощью hasher-useradd, использование tmpfs, удаление каталога со сборочным окружением (hsh --cleanup-only), (не)использование собственного хранилищя только что собранных пакетов (--without-staff), необходимость в локальной копии хранилищ (sisy[hus-mirror).
Работа с (плохо- или несобирающимися) .src.rpm непосредственно в hsh-shell. hsh --lazy-cleanup