Збірка пакета з нуля

Дана сторінка знаходиться в розробці.
Ця сторінка ще не закінчена. Інформація, представлена ​​тут, може виявитися неповною або неправильною.

Введення [ред]

Для складання пакетів маються на увазі такі початкові умови:

  1. У вас встановлений дистрибутив ALT Linux;
  2. Є бажання зібрати пакет правильно, а не для одиничного випадку;
  3. Ви носите горде звання «мейнтейнера ALT Linux Team», що має на увазі наявність електронних ключів і доступу до інфраструктури git.alt

Третій пункт необов'язковий для новачків, які просто хочуть зібрати пакет правильно для себе.

В ALT Linux використовується формат пакетів RPM. який являє собою архів, що містить архів з встановленими або збираються файлами і заголовок з метаінформацією (наприклад, назва, версія, група і т.п.). Розрізняють два види пакетів RPM:

  • Пакет з вихідним кодом (має розширення .src.rpm). Такий пакет містить архів (один або кілька) з вихідним кодом, файл Spec (далі - просто спік) і, можливо, різноманітні патчі і доповнення. Пакет src.rpm можна використовувати тільки для зборки двійкових пакунків, але не установки. Збірка здійснюється командою:
  • Зібраний двійковий пакет (має розширення виду <архитектура>.rpm). Як архітектури може бути i586, x86_64 або noarch. Такі пакети можна встановлювати командою

Детальну інформацію по структурі RPM і складанні за допомогою команди rpm можна знайти в Maximum RPM.

Однак для складання через rpmbuild виникають очевидні складнощі:

  1. Необхідно вручну задовольнити складальні залежності для збірки (поставити компілятор, що включаються файли, бібліотеки). При великій кількості зібраних пакетів система засмічується.
  2. Для складання пакета потрібно сформувати .src.rpm з файлів, розкиданих по різних каталогах (за замовчуванням, це підкаталоги SOURCE, SPECS і підкаталоги для збірки в
/ RPM).
  • Файли з вихідним кодом повинні лежати в упакованому вигляді, що робить трудомістким процес виготовлення патчів.
  • На робочій системі можна упустити необхідна і достатня кількість залежностей.

  • Щоб уникнути цих складнощів, в ALT Linux Team було придумано дві технології:

    • Hasher для збірки в ізольованому оточенні. У chroot ставиться базовий комплект пакетів і пакети, необхідні для збірки (поле BuildRequires в спікся). Якщо якийсь пакет для збірки не вказано в спікся, то з'явиться помилка. Так забезпечується чистота збірки. Зворотною стороною є необхідність мати доступ до сховища, так як пакети ставляться при кожній збірці в Hasher.
    • Gear для складання пакетів з репозиторію Git. В цьому випадку всі файли лежать в розпакованому вигляді і в src.rpm упаковуються за правилами, певним в .gear / rules. Це дозволяє працювати відразу з вмістом, швидко робити патчі, вести історію змін і обмінюватися змінами при колективній розробці.

    Установка пакетів для збирання [ред]

    Для збірки нам будуть потрібні наступні компоненти:

    Для цього налаштуйте репозиторії і встановіть пакети build-environment і gear:

    Будуть встановлені з залежностями всі необхідні пакети для опакечіванія і збірки

    Налаштування середовища [ред]

    Оточення Git [ред]

    Змініть в залежності від ваших параметрів. Третя команда задає ідентифікатор вашого GPG-ключа для підпису:

    Оточення RPM [ред]

    /.rpmmacros такого змісту (звичайно, замінивши ключ і ім'я мейнтейнера на свої):

    У% _gpg_name вказується відбиток ключа (а не короткий ідентифікатор, як для Git). Отримати його можна командою:

    Оточення Hasher [ред]

    Для початку створіть під правами root двох службових користувачів для сборочніци (середовища збірки Hasher):

    Замість «cas» потрібно вказати існуючого користувача на машині, де буде розгорнута складальна середу.

    Далі для найпростішої конфігурації Hasher потрібно створити каталог

    /.hasher з наступними файлами:

    Відповідно, USER повинен бути такий же, як заведений в hasher-useradd. target - вказувати на архітектуру зібраних пакетів.

    Підготовка сховища Git [ред]

    Репозиторій Git створити дуже просто. Для цього створимо каталог (імена пакетів краще вказувати в нижньому регістрі, тому наш пакет для проекту буде називатися kchildlock), перейдемо в нього і запустимо git init.

    Написання .gear / rules [ред]

    Імпорт вихідного коду [ред]

    Написання спека [ред]

    Збірка в Hasher [ред]

    Схожі статті