Технология сборки пакетов RPM: различия между версиями
Строка 43: | Строка 43: | ||
Каждому этапу сборки можно привести опцию rpm, которая это выполняет: | Каждому этапу сборки можно привести опцию rpm, которая это выполняет: | ||
* Распаковка исходника : | |||
rpmbuild -bp имя_спек_файла.spec | rpmbuild -bp имя_спек_файла.spec | ||
* Компиляция и линковка программ (сборка) пакета (секция %setup) | |||
rpm -bc имя_спек_файла.spec | rpm -bc имя_спек_файла.spec | ||
Строка 57: | Строка 57: | ||
разница состоит в том, что если запустить с ключом -bc, то rpm заново повторит распаковку пакета , а потом уже начнёт компиляцию. Если вы собираете пакет первый раз,по шагам, то вы могли внести в исходный текст пакета исправления, которые можно потом оформить в патчи, то распаковка исходников заново уничтожит ваши исправления. | разница состоит в том, что если запустить с ключом -bc, то rpm заново повторит распаковку пакета , а потом уже начнёт компиляцию. Если вы собираете пакет первый раз,по шагам, то вы могли внести в исходный текст пакета исправления, которые можно потом оформить в патчи, то распаковка исходников заново уничтожит ваши исправления. | ||
* Установка пакета в заданный каталог (%install) | |||
rpm -bi --short-circuit имя_спек_файла.spec | rpm -bi --short-circuit имя_спек_файла.spec | ||
* Создание непосредственно самого пакета rpm (и src.rpm) | |||
rpm -ba --short-circuit имя_спек_файла.spec | rpm -ba --short-circuit имя_спек_файла.spec | ||
* Упаковка src.rpm пакета | |||
rpm -bs - имя_спек_файла.spec | rpm -bs - имя_спек_файла.spec |
Версия от 15:28, 11 мая 2022
Классическая сборка пакетов rpm
Классическая сборка пакета rpm состоит из следующих этапов :
Нахождение исходного текста пакета
Обычно мы находим исходный текст программы. Обычно исходный текст программы можно получить на официальном сайте программы.
Это может быть готовы архив в виде tar, упакованный каким-нибудь компрессором, типа gzip, bzip и т.п.. Так-же это может быть репозиторий git, cvs , меркурий и т.п.
В любом случае мы получаем каталог с текстом программы и инструкцией, как можно программу собрать.
Отдельным источником можно назвать пакет src.rpm или deb-src из другого дистрибутива. В этом случае можно "подсмотреть как собирают пакеты другие" этот пакет.
На этом этапе надо понять как в принципе собирается данный пакет.
Написание инструкции сборки пакета
На втором этапе, зная алгоритм сборки пакета, мы записываем алгоритм в виде spec-файла.
Сборку пакета из исходников можно разделить на следующие основные этапы :
- Распаковка исходного текста пакета и наложение патчей на него (например, исправляющие makefile пакета, чтобы он собирался не куда-нибудь в /opt, а каталог предназначенный для сборки пакета).
(секция %pre)
- Компиляция и линковка программ пакета (секция %setup)
- Размещение программ в каталог, который будет упаковываться в rpm (секция %install)
- Написание скриптов нестандартных действий, которые выполняться при установке и удалении пакета (секции %post и %postust)
- Сама упаковка пакета и проверка его "правильности" (верификация пакета).
Непосредственная сборки пакета
После того, как вы написали спек и подготовили исходники, можно переходить непосредственно к сборке пакета.
Это лучше делать внутри хэшера, так как установка кучи необходимых для сборки программ, во первых грозит безопасности вашей операционной системы, а во вторых, засоряет её ненужными вам в дальнейшем пакетами.
Каждому этапу сборки можно привести опцию rpm, которая это выполняет:
- Распаковка исходника :
rpmbuild -bp имя_спек_файла.spec
- Компиляция и линковка программ (сборка) пакета (секция %setup)
rpm -bc имя_спек_файла.spec
или
rpm -bc --short-circuit имя_спек_файла.spec
разница состоит в том, что если запустить с ключом -bc, то rpm заново повторит распаковку пакета , а потом уже начнёт компиляцию. Если вы собираете пакет первый раз,по шагам, то вы могли внести в исходный текст пакета исправления, которые можно потом оформить в патчи, то распаковка исходников заново уничтожит ваши исправления.
- Установка пакета в заданный каталог (%install)
rpm -bi --short-circuit имя_спек_файла.spec
- Создание непосредственно самого пакета rpm (и src.rpm)
rpm -ba --short-circuit имя_спек_файла.spec
- Упаковка src.rpm пакета
rpm -bs - имя_спек_файла.spec
Для ключа bs не требуется параметр --short-circuit , так как он непосредственно упаковывает ваши исходники и патчи в stc.rpm, не выполняя действий по распаковке, компиляции и установке компиляции и