Формат rpm: номенклатурный вопрос

В репозиториях Fedora (и остальных rpm-based дистрибутивов) можно обнаружить разные виды пакетов интересующего нас формата (об устройстве репозиториев мы также поговорим отдельно).

Во-первых, выделяются rpm-пакеты бинарные и они же, но с исходными текстами. Как явствет из названия, первые содержат прекомпилированные компоненты дистрибутивного пакета (ещё раз повторюсь, что в данном случае вовсе не тождественно пакетам авторским), как то:

  • исполняемые бинарные файлы;
  • возможно, библиотеки, необходимые для их функционирования;
  • конфигурационные файлы (или, по крайней мере, их примеры);
  • документацию.

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

Распознать те и другие очень легко по их именам, образованным по определённым правилам, каковые мы рассмотрим на примере самого показательного пакета -- собственно

Имена бинарных rpm-пакетов образованы по следующей схеме:

rpm-4.7.1-6.fc12.x86_64.rpm

где rpm -- имя пакета, 4.7.1 -- номер ветки, версии и конкретного релиза пакета, 6 -- номер сборки для текущей версии данного дистрибутива, fc12 -- имя и версия такового (то есть -- Fedora Core версии 12), x86_64 -- архитектура, под которую пакет собирался.

Имя пакета с исходниками будет похожим:

rpm-4.7.1-6.fc12.src.rpm

за исключением добавочного суффикса src, символизирующего, что мы имеем дело именно с исходниками, а не бинарниками. И очевидно, что понятие архитектуры для исходных текстов смысла не имеет -- они (теоретически) должны собираться для любой из них.

Среди бинарных пакетов также можно найти такие, которые не привязаны к какой-либо архитектуре -- они опознаются по дополнительному суффиксу noarch. В их числе -- сценарии на интерпретируемых языках типа Perl, Puthon и так далее, шрифтовые пакеты, документация и так далее. Например, так будет выглядеть пакет для одной из гарнитур шрифтового семейства Dejav:

dejavu-sans-fonts-2.30-2.fc12.noarch.rpm

Выше уже говорилось, что бинарные rpm-пакеты могу содержать библиотеки функций, необходимых для их функционирования. Однако это -- скорее исключение: как и во всех UNIX-подобных системах, в rpm-based дистрибутивах существует тенденция собирать библиотеки как отдельные пакеты. При этом каждая библиотека, как правило, представлена в виде двух пакетов:

первый содержит собственно код библиотечных функций, необходимых в любом случае; например, работу пакета rpm обеспечивает библиотчный пакет

rpm-libs-4.7.1-6.fc12.x86_64.rpm

во второй же включаются заголовочные файлы, необходимые только при самостоятельной сборке пакетов -- в обыденной жизни без них можно обойтись:

rpm-devel-4.7.1-6.fc12.x86_64.rpm

Разобравшись с номенклатурой rpm-пакетов, можно перейти к вопросу их внутреннего устройства -- то есть к собственно формату.


Теги: ,