Сборка пакета из исходников
«Пакет исходников»
- Исторические корни
- Состав: исходники (upstream+patches+дополнительно) + спецификация
Пререквизиты: BuildReq и BuildPreReq
rpmbuild
- Результат rpm -i *.src.rpm. Структура %_topdir
rpm --eval, rpm --showrc и rpm -bE RPM/SPECS/что-то.spec
Спецификация
Материал для изучения: http://www.altlinux.org/Spec На примере ALT RPM:
Структура spec-файла
Разделы, параграфы и макросы.
Много макросов в /usr/lib/rpm/macros*
- ~/.rpmmacros
Разделы и полезные макросы:
- Заголовок
- Паспорт: Name, License, Summary, Group, Url
- Версия: Version, Release, Epoch
- Исходники: параграфы Source, Source#, Patch, Patch#
- Зависимости: Build(Pre)Req, (Pre)Requires. Версии в зависимостях
Прочее: BuildArch, Provides, Obsoletes, Conflicts, …
- макросы %name, %version, …, %summary
- %description
- %prep: %setup, %patch*
- %build: %configure, %make, %make_build
- Привязка к установке в каталог %buildroot
- Макросы для других сборочных инструментов: %cmake, %autoreconf
- %install
- %makeinstall
- %_что-то-там-dir, %_prefix
%find_lang (/usr/lib/rpm/find-lang)
- %check
- %files: %dir, %config, %attr
%changelog ([[http://www.altlinux.org/Руководство_по_написанию_changelog|ALT руководство)
- автозакрытие ошибок
- Множественные пакеты (%package и соотв. разделы)
Полезное при сборке
- Редкоиспользуемые в ALT секции
- %clean (никогда), %pre*/%post* (если триггеры не справляются)
- rpmbuild … --short-circuit …
- buildreq
- findreq/findprov
- понятие set-version
- brp
Установка пакетов из свалки: rpm-dir в /etc/apt/sources.list
DPKG
Паспорт: *.dsc
Исходники (перепакованные): *.orig.tar.gz
Всё остальное: *.diff.gz (в виде патча, в т. ч. на /dev/null) или *.debian.tar.gz
Каталог debian:
ещё один паспорт: debian/control
Makefile сборки/устаноовки: debian/rules (+множество заготовок debhelper)
- post/pre сценарии, меню, список файлов,
- Всякое: changelog, license, список файлов разных типов (manpages, документация и т. п.)…
quilt и другие дисциплины пакетирования
debuild