documentation/SolusProject/doc/build_eopkg.md

7.9 KiB
Raw Permalink Blame History

Сборка eopkg пакета

Официальная документация по сборке пакетов eopkg для последующего размещения в официальном репозитории.

Процесс сборки

Предварительная подготовка

Для начала необходимо сконфигурировать файл packager, который используется для упаковщика в результирующем двоичном пакете. Для этого в домашней директории необходимо создать каталог .solus с содержащим внутри себя файлом packager:

mkdir ~/.solus
nano ~/.solus/packager

Внутри файла необходимо указать два ключа, идентифицирующие собирающего пакеты:

[Packager]
Name=Your Name Here
Email=your.email@address

Следующим действием необхоимо произвести установку базового инструмента разработки system.devel:

sudo eopkg install -c system.devel

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

sudo eopkg it solbuild

Если нужно использовать только unstable репозиторий по умолчанию, также установить конфигурацию для нестабильного репозитория solbuild-config-unstable:

sudo eopkg it solbuild-config-unstable

Если нужно использовать только local репозиторий по умолчанию, также установить конфигурацию для локального нестабильного репозитория:

sudo eopkg install solbuild-config-local-unstable

Также понадобятся git и arcanist:

sudo eopkg it git arcanist

После установки необходимо инициализировать solbuild:

sudo solbuild init

Это займет некоторое время, так как будет производиться загрузка и подготовка образа. Рекомендуется обновлять solbuild, в противном случае обновления будут применяться при каждой сборке:

sudo solbuild update

Следующим шагом необходимо создать каталог для разработки, в котором будет находиться все конфигурационные файлы для сборки пакетов. К примеру, в домашней директории создать каталог building:

mkdir ~/building

Далее внутри каталога building произвести настройку инструментов для сборки. Нужно настроить common (набор сценариев создания), который позволяет более легко управлять, создавать, проверять и публиковать пакеты. Для этого нужно клонировать общий репозиторий с помощью git:

cd ~/building
git clone https://dev.getsol.us/source/common.git

Далее нужно настроить символические ссылки:

ln -sv common/Makefile.common .
ln -sv common/Makefile.toplevel Makefile
ln -sv common/Makefile.iso .

В результате выполненных действий каталог building примет следующий вид:

├── common
├── Makefile
├── Makefile.common
└── Makefile.iso

Использование локального репозитория

После выполнения установки solbuild-config-local-unstable создаётся путь /var/lib/solbuild/local/ локального репозитория. При использовании локального репозитория необходимо выполнить индексацию списка:

sudo eopkg index --skip-signing /var/lib/solbuild/local/ --output /var/lib/solbuild/local/eopkg-index.xml

Стоит заметить, что в своей работе eopkg всегда будет отдавать предпочтение пакетам из самого верхнего репозитория, указанного в списке eopkg lr. Другими словами - если пакет существует как в локальном репозитории solbuild, так и в официальном вышестоящем репозитории Solus, eopkg будет рассматривать только пакет из первого репозитория, указанного в eopkg lr, независимо от его номера выпуска.

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

sudo eopkg ar Local /var/lib/solbuild/local/eopkg-index.xml.xz
sudo eopkg ar Solus https://mirrors.rit.edu/solus/packages/unstable/eopkg-index.xml.xz 

Таким образом локальный репозиторий будет иметь высокий приоритет для eopkg:

eopkg lr
Local [active]
   /var/lib/solbuild/local/eopkg-index.xml.xz
Solus [active]
   https://mirrors.rit.edu/solus/packages/unstable/eopkg-index.xml.xz

Стоит обратить внимание, что пакеты, отсутствующие в локальном репозитории сборки solbuild, будут извлечены из вышестоящего официального репозитория Solus (unstable). Индексацию eopkg необходимо обновлять всякий раз, когда добавляется или удаляется локально созданные пакеты в локальном репозитории solbuild в противном случае eopkg не будет знать, что новые пакеты доступны/были удалены из репозитория.

Подготовка сборки пакета

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