Цикл статей по сборке RPM и DEB пакетов

Аватар пользователя Tigro

В интернете не так уж много информации относительно сборки пакетов. Конечно же существуют официальные документации по RPM и DEB, однако они довольно сухие, хотя и довольно полные. Мне захотелось написать список статей, описывающих основные подходы к сборке пакетов.

Конечно невозможно описать все особенности особенно при сборки пакетов Debian, где одно и тоже можно делать разными способами, однако я думаю, что эти статьи немного облегчат не такую уж и простую задачу сборки пакетов.




Не так давно у меня возникла мысль, что нужно написать пару статей о сборке пакетов в Linux, так как метод make && make install может пагубно отразиться на состоянии вашей системы. Об этом я и обмолвился в комментариях в блоге "Записки дебианщика". Недавно мне об этом напомнили. В процессе написания, я понял что положить на бумагу свой опыт довольно сложно, поэтому у этой статьи будет две главы (сборка RPM и DEB пакетов) и несколько частей. Собирая RPM, я буду базироваться на дистрибутиве Fedora и подобным ей дистрибутивам. Относительно DEB нет смысла заострять внимание на конкретном дистрибутиве, так как разницы в пакетах (и их сборке) для Debian и Ubuntu никакой нет. Перед выходом этой статьи я специально написал обзор репозиториев для Fedora Core.

Итак, вы нашли некую очень интересную программу, которой к сожалению нет в репозиториях или она не той версии. Для правильной установки (и уж тем более правильного и безболезненного удаления) нам нужно создать пакет. Почему же не следует использовать make install?

1. Это не правильно, можно сделать большую свалку из работающей системы,
2. Вам будет трудно его удалить, а если поставите в /usr, то и вообще практически не реально,
3. Вам будет также сложно его перенести на другую машину,
4. При обновлении системы он может перестать работать, так как зависимости не будут соблюдаться.

Этот список можно дополнять и дополнять.

Пытаясь собрать свой пакет следует использовать некоторые золотые правила.

1. Вы не первый кто этот пакет пытался собрать.
2. Если его нет в Fedora, то с вероятностью 95% он есть или под Mandriva, или под openSUSE, или под PLD, или под ALT Linux.

Во втором пункте перечислены все основные крупные репозитории пакетов, с которыми вам возможно придётся столкнуться. Чем же отличаются rpm-пакеты этих дистрибутивов? Да и как их отличить?

Mandriva
В своём названии пакеты обычно имеют суффикс mdv (раньше mdk) и год (так у них теперь идёт нумерация дистрибутива). Внутренний файл спецификации резко отличается от Fedora. Там используется своя конструкция для инсталляции, а именно %makeinstall_std, и конфигурации пакетов, которые используют autotools — %configure2_5x. Также используются различные макроопределения. Преобразование такого spec-файла к Федоровскому не особо простая задача. Однако некоторые пакеты преобразовываются очень просто.

openSUSE
Spec-файлы rpm-пакетов этого дистрибутива очень легко преобразовать к Федоровским. Отличительной чертой является упоминание об авторах пакета в поле %description. Есть свои макросы, а также стремление устанавливать многие пакеты в директорию /opt. Также обычно секция Release содержит большое число. Это мало о чем говорит, но если оно довольно большое, то вероятность принадлежности пакета к SUSE велика.

ALT Linux
Spec-файлы вообще ни на что не похожи. Первое, что бросается в глаза, это отсутствие секции BuildRoot и %defattr, что будет иметь довольно печальные последствия для вашего собранного пакета. Также используются свои макросы для определения каталогов и некоторых команд. Преобразовать к стандарту Fedora можно, но желательно не нужно.

PLD
Польский дистрибутив, в последнее время редко стал мне попадаться. Крайне не приятный формат spec-файла, вроде бы все сделал, а не собирается ну никак. Отличить по названию практически нельзя. Исправлять этот пакет следует в последнюю очередь.

Как искать пакеты в сети

Существует несколько поисковых сайтов по rpm-пакетам. Это rpmfind.net (в последнее время совсем бездарный) и rpm.pbone.net.
Однако обычно я ищу пакеты в Google. Просто вводите имя-пакета, можете указать версию и src.rpm: liferea-1.2 src.rpm. Вполне самодостаточный поиск. Если очень хочется попытаться найти пакет под Fedora, то следует добавить суффикс fc: liferea-1.2 fc src.rpm.

Чем хорош Google? Тем, что он ищет пакеты не только по определённым популярным репозиториям, но и в труднодоступных местах, например, в блогах.

Для Fedora также следует поискать пакеты в специализированных репозиториях (о них я писал не так давно), может так случиться, что собирать ничего и не придётся.

Если же ничего подходящего нет, то придётся всё делать самому.

Во второй части мы рассмотрим структуру spec-файла Fedora, а также основные макроопределения spec-файлов других дистрибутивов. .

Your rating: Нет Average: 3.8 (12 votes)

Комментарии

Аватар пользователя Metrrr

Re: Цикл статей по сборке RPM и DEB ...

Очень полезная статья. Мне как раз хотелось поэкспериментировать на эту тему, просмотрел всю инфу на разных сайтах по сборке rpm - пакетов, и вот остановился на вашем сайте. Тем более, что у меня тоже стоит ASPLinux 11.2, вот и пытаюсь самостоятельно вникнуть в процесс сборки дистрибутивов. Единственное - в чем может еще не разобрался полностью, это компиляция из исходников и настройка нужных библиотек. Еще бы, конечно, хотелось бы узнать; что это за библиотека такая - QT4? И для чего она нужна?

RSS-материал