Инструкция по сборке пакетов с помощью rpm: различия между версиями
Нет описания правки |
Sb (обсуждение | вклад) Нет описания правки |
||
Строка 15: | Строка 15: | ||
''Замечание: Что касается процессоров, не относящихся к семейству x86_64, то само по себе указание "--target i586" опционально (сборка отработает и без него, но при этом компилятор соберет пакет, точно заточенный под Ваш тип процессора и наименование пакета будет отличаться от наименования пакетов бранчей, к примеру, xxx.athlon.rpm или xxx.pentium4.rpm). Отсутствие параметра "--target i586" при сборке совершенно не гарантирует устанавливаемость собранного таким образом пакета на другом компьютере с другим процессором. Если же сборка совершается под 64-битную систему (на 64-битном процессоре с установленной 64-битной системой), то ключ "--target x86_64" теряет свой смысл и ставить его совершенно не обязательно.'' | ''Замечание: Что касается процессоров, не относящихся к семейству x86_64, то само по себе указание "--target i586" опционально (сборка отработает и без него, но при этом компилятор соберет пакет, точно заточенный под Ваш тип процессора и наименование пакета будет отличаться от наименования пакетов бранчей, к примеру, xxx.athlon.rpm или xxx.pentium4.rpm). Отсутствие параметра "--target i586" при сборке совершенно не гарантирует устанавливаемость собранного таким образом пакета на другом компьютере с другим процессором. Если же сборка совершается под 64-битную систему (на 64-битном процессоре с установленной 64-битной системой), то ключ "--target x86_64" теряет свой смысл и ставить его совершенно не обязательно.'' | ||
''Если rpm ругается на неизвестные макросы примерно так: "ошибка: Macro %groupadd not found", то в качестве факультатива можно поглядеть [[RPMMacrosDescription|описание макросов rpm]]. А помочь в дальнейшей сборке пакета должна установка в систему пакета rpm-build-compat.'' | |||
'''4. Установка сборочных зависимостей'''<br> | '''4. Установка сборочных зависимостей'''<br> | ||
Строка 21: | Строка 23: | ||
а после повторите сборку (возврат к шагу 3). | а после повторите сборку (возврат к шагу 3). | ||
'''5. | '''5. Автоматический поиск зависимостей для вновь собираемого пакета'''<br> | ||
Если | Если вы собираете новый пакет, а не пересобираете уже существующий srpm, то хорошим подспорьем в рамках оформления (поиска и прописывания) нужных зависимостей в спек вам послужит утилита [[Buildreq|Buildreq]]. | ||
'''ВНИМАНИЕ! Действия пунктов 2 и 3 выполняются от пользователя!''' | '''ВНИМАНИЕ! Действия пунктов 2 и 3 выполняются от пользователя!''' |
Версия от 10:43, 1 декабря 2012
1. Установка необходимых пакетов для процесса сборки
# apt-get install rpm-build
2. Установка src.rpm пакета нужного ПО, которое требуется собрать
Находим и качаем src.rpm пакет нужного ПО, которое будем собирать, и устанавливаем его:
$ rpm -i название_пакета_с_версией.src.rpm
При этом исходники (исходный код) пакета разместятся в ~/RPM/SOURCES, а спек — в ~/RPM/SPECS.
Наличие исходного кода программного обеспечения и спека, т.е. описания процесса сборки, является необходимым и достаточным условием для самой процедуры сборки rpm пакета (или пересборки, например, пакета из более нового бранча для более старого).
Также см. Предопределённые макросы в spec для расширения кругозора.
3. Сборка пакета
Приступаем к сборке, делается это командой:
$ rpm -ba --target (i586|x86_64) ~/RPM/SPECS/имя_спека_нужного_пакета_для_сборки.spec
При этом необходимо раскрыть скобки в зависимости от архитектуры, под которую происходит сборка пакета.
Замечание: Что касается процессоров, не относящихся к семейству x86_64, то само по себе указание "--target i586" опционально (сборка отработает и без него, но при этом компилятор соберет пакет, точно заточенный под Ваш тип процессора и наименование пакета будет отличаться от наименования пакетов бранчей, к примеру, xxx.athlon.rpm или xxx.pentium4.rpm). Отсутствие параметра "--target i586" при сборке совершенно не гарантирует устанавливаемость собранного таким образом пакета на другом компьютере с другим процессором. Если же сборка совершается под 64-битную систему (на 64-битном процессоре с установленной 64-битной системой), то ключ "--target x86_64" теряет свой смысл и ставить его совершенно не обязательно.
Если rpm ругается на неизвестные макросы примерно так: "ошибка: Macro %groupadd not found", то в качестве факультатива можно поглядеть описание макросов rpm. А помочь в дальнейшей сборке пакета должна установка в систему пакета rpm-build-compat.
4. Установка сборочных зависимостей
Почти 100% сборка сразу не пойдёт — в самом начале вывода в консоли будут показаны пакеты, которые должны быть установлены в систему, прежде чем сборка сможет пойти далее. Вы их (эти выведенные в консоль зависимости сборки) установите
# apt-get install пакет1 пакет2 пакет3 ...
а после повторите сборку (возврат к шагу 3).
5. Автоматический поиск зависимостей для вновь собираемого пакета
Если вы собираете новый пакет, а не пересобираете уже существующий srpm, то хорошим подспорьем в рамках оформления (поиска и прописывания) нужных зависимостей в спек вам послужит утилита Buildreq.
ВНИМАНИЕ! Действия пунктов 2 и 3 выполняются от пользователя!
Собранные пакеты разместятся в ~/RPM/RPMS.