Инструкция по сборке пакетов с помощью rpm: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
(some clarify work ++)
Строка 1: Строка 1:
'''1. Установка необходимых пакетов для процесса сборки'''<br>
===ВНИМАНИЕ! Действия пунктов 2 и 3 настоящей инструкции выполняются от пользователя!===
<pre># apt-get install rpm-build</pre>
<br>
'''1. Установка необходимых пакетов для процесса сборки'''
 
<code>apt-get install rpm-build</code>
 
 
'''2. Установка src.rpm пакета нужного ПО, которое требуется собрать'''


'''2. Установка src.rpm пакета нужного ПО, которое требуется собрать'''<br>
Находим и качаем src.rpm пакет нужного ПО, которое будем собирать, и устанавливаем его:
Находим и качаем src.rpm пакет нужного ПО, которое будем собирать, и устанавливаем его:
<pre>$ rpm -i название_пакета_с_версией.src.rpm</pre>
 
При этом исходники (исходный код) пакета разместятся в ~/RPM/SOURCES, а [[Spec|спек]] — в ~/RPM/SPECS.<br>Наличие исходного кода программного обеспечения и спека, т.е. описания процесса сборки, является необходимым и достаточным условием для самой процедуры сборки rpm пакета (или пересборки, например, пакета из более нового [[Branches|бранча]] для более старого).
<code>rpm -i название_пакета_с_версией.src.rpm</code>
 
При этом исходники (исходный код) пакета разместятся в {{path|~/RPM/SOURCES}}, а [[Spec|спек]] — в {{path|~/RPM/SPECS}}.<br>Наличие исходного кода программного обеспечения и спека, т.е. описания процесса сборки, является необходимым и достаточным условием для самой процедуры сборки rpm пакета (или пересборки, например, пакета из более нового [[Branches|бранча]] для более старого).


''Также см. [[Spec/Предопределенные_макросы|Предопределённые макросы в spec]] для расширения кругозора.''
''Также см. [[Spec/Предопределенные_макросы|Предопределённые макросы в spec]] для расширения кругозора.''


'''3. Сборка пакета'''<br>
 
'''3. Сборка пакета'''
 
Приступаем к сборке, делается это командой:
Приступаем к сборке, делается это командой:
<pre>$ rpm -ba --target (i586|x86_64) ~/RPM/SPECS/имя_спека_нужного_пакета_для_сборки.spec</pre>
 
<code>rpm -ba --target (i586|x86_64) ~/RPM/SPECS/имя_спека_нужного_пакета_для_сборки.spec</code>
 
При этом необходимо раскрыть скобки в зависимости от архитектуры, под которую происходит сборка пакета.
При этом необходимо раскрыть скобки в зависимости от архитектуры, под которую происходит сборка пакета.


''Замечание: Что касается процессоров, не относящихся к семейству 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.''
''Если {{cmd|[[Rpm|rpm]]}} ругается на неизвестные макросы примерно так: "ошибка: Macro %groupadd not found" или "ошибка: Macro %license not found", то в качестве факультатива можно поглядеть [[RPMMacrosDescription|описание макросов rpm]]. А помочь в дальнейшей сборке пакета должна установка в систему одного из пакетов rpm-build-*, который, фактически, является дополнительной зависимостью для сборки (пересборки) вашего пакета.''
 
 
'''4. Установка сборочных зависимостей'''


'''4. Установка сборочных зависимостей'''<br>
Почти 100% сборка сразу не пойдёт — в самом начале вывода в консоли будут показаны пакеты, которые должны быть установлены в систему, прежде чем сборка сможет пойти далее. Вы их (эти выведенные в консоль зависимости сборки) установите
Почти 100% сборка сразу не пойдёт — в самом начале вывода в консоли будут показаны пакеты, которые должны быть установлены в систему, прежде чем сборка сможет пойти далее. Вы их (эти выведенные в консоль зависимости сборки) установите
<pre># apt-get install пакет1 пакет2 пакет3 ...</pre>
 
<code>apt-get install пакет1 пакет2 пакет3 ...</code>
 
а после повторите сборку (возврат к шагу 3).
а после повторите сборку (возврат к шагу 3).


'''5. Автоматический поиск зависимостей для вновь собираемого пакета'''<br>
Если вы собираете новый пакет, а не пересобираете уже существующий srpm, то хорошим подспорьем в рамках оформления (поиска и прописывания) нужных зависимостей в спек вам послужит утилита [[Buildreq|Buildreq]].


'''ВНИМАНИЕ! Действия пунктов 2 и 3 выполняются от пользователя!'''
'''5. Автоматический поиск зависимостей для вновь собираемого пакета'''
 
Если вы собираете новый пакет, а не пересобираете уже существующий srpm, то хорошим подспорьем в рамках оформления (поиска и прописывания) нужных зависимостей в спек вам послужит утилита {{cmd|[[Buildreq|Buildreq]]}}.


Собранные пакеты разместятся в ~/RPM/RPMS.
Собранные пакеты разместятся в {{path|~/RPM/RPMS}}.


[[Категория:RPM]]
[[Категория:RPM]]
[[Категория:HOWTO]]
[[Категория:HOWTO]]
[[Категория:Полезно]]
[[Категория:Полезно]]

Версия от 07:39, 18 декабря 2012

ВНИМАНИЕ! Действия пунктов 2 и 3 настоящей инструкции выполняются от пользователя!


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" или "ошибка: Macro %license not found", то в качестве факультатива можно поглядеть описание макросов rpm. А помочь в дальнейшей сборке пакета должна установка в систему одного из пакетов rpm-build-*, который, фактически, является дополнительной зависимостью для сборки (пересборки) вашего пакета.


4. Установка сборочных зависимостей

Почти 100% сборка сразу не пойдёт — в самом начале вывода в консоли будут показаны пакеты, которые должны быть установлены в систему, прежде чем сборка сможет пойти далее. Вы их (эти выведенные в консоль зависимости сборки) установите

apt-get install пакет1 пакет2 пакет3 ...

а после повторите сборку (возврат к шагу 3).


5. Автоматический поиск зависимостей для вновь собираемого пакета

Если вы собираете новый пакет, а не пересобираете уже существующий srpm, то хорошим подспорьем в рамках оформления (поиска и прописывания) нужных зависимостей в спек вам послужит утилита Buildreq.

Собранные пакеты разместятся в ~/RPM/RPMS.