Product SiteDocumentation Site

Глава 5. Работа с пакетами

5.1. RPM-пакет
5.2. SPEC-файл
5.2.1. Пример spec-файла
5.2.2. Директивы преамбулы
5.2.3. Директивы основной части
5.3. Система управления пакетами APT
5.3.1. Репозитории
5.3.2. Поиск пакетов
5.3.3. Установка или обновление пакета
5.3.4. Удаление установленного пакета
5.3.5. Обновление всех установленных пакетов
5.3.6. Обновление ядра

5.1. RPM-пакет

RPM-пакет состоит из архива cpio, содержащего файлы (скомпилированные исполняемые файлы, библиотеки, данные), и заголовка, содержащего метаданные о пакете (название, версия, группа и т.п.). Менеджер пакетов RPM использует эти метаданные для определения зависимостей, места установки файлов и другой информации.
Различают два вида пакетов RPM:
  • пакет с исходным кодом — SRPM-пакет (имеет расширение .src.rpm). Такой пакет содержит архив (один или несколько) с исходным кодом, spec-файл и, возможно, разнообразные патчи и дополнения. Пакет src.rpm можно использовать только для сборки двоичных пакетов, но не для установки. Сборка осуществляется командой:
    rpmbuild --rebuild package...src.rpm
  • собранный двоичный пакет — RPM-пакет (имеет расширение вида <архитектура>.rpm). Такие пакеты можно устанавливать командой:
    rpm -Uvh package...rpm
Однако для сборки через rpmbuild возникают очевидные сложности:
  • необходимо вручную удовлетворить сборочные зависимости для сборки (поставить компилятор, включаемые файлы, библиотеки). При большом количестве собираемых пакетов система засоряется;
  • для сборки пакета нужно сформировать .src.rpm из файлов, разбросанных по разным каталогам (по умолчанию, это подкаталоги SOURCE, SPECS и подкаталоги для сборки в ~/RPM);
  • файлы с исходным кодом должны лежать в упакованном виде, что делает трудоемким процесс изготовления патчей;
  • на рабочей системе можно упустить необходимое и достаточное количество зависимостей.
Чтобы избежать этих сложностей, в Альт Платформа используется две технологии:
  • Hasher — для сборки в изолированном окружении. В chroot ставится базовый комплект пакетов и пакеты, необходимые для сборки (поле BuildRequires в спеке). Если какой-то пакет для сборки не указан в спеке, то появится ошибка. Так обеспечивается чистота сборки. Обратной стороной является необходимость иметь доступ к репозиторию, так как пакеты ставятся при каждой сборке в Hasher;
  • Gear — для сборки пакетов из репозитория Git. В этом случае все файлы лежат в распакованном виде и в .src.rpm упаковываются по правилам, определённым в .gear/rules. Это позволяет работать сразу с содержимым, быстро делать патчи, вести историю изменений и обмениваться изменениями при коллективной разработке.