documentation/SolusProject/doc/build_eopkg.md

132 lines
7.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Сборка eopkg пакета
[Официальная документация](https://getsol.us/articles/packaging/) по сборке пакетов `eopkg` для последующего размещения в официальном репозитории.
## Процесс сборки
* [Предварительная подготовка](#предварительная-подготовка)
* [Использование локального репозитория](#использование-локального-репозитория)
* [Подготовка сборки пакета](#подготовка-сборки-пакета)
## Предварительная подготовка
Для начала необходимо сконфигурировать файл `packager`, который используется для упаковщика в результирующем двоичном пакете. Для этого в домашней директории необходимо создать каталог `.solus` с содержащим внутри себя файлом `packager`:
```shell
mkdir ~/.solus
nano ~/.solus/packager
```
Внутри файла необходимо указать два ключа, идентифицирующие собирающего пакеты:
```shell
[Packager]
Name=Your Name Here
Email=your.email@address
```
Следующим действием необхоимо произвести установку [базового инструмента разработки](https://getsol.us/articles/package-management/basics/en/#base-development-tools) `system.devel`:
```shell
sudo eopkg install -c system.devel
```
Для сборки `eopkg` пакетов необходимо использовать инструмент `solbuild`:
```shell
sudo eopkg it solbuild
```
Если нужно использовать только [unstable](repositories.md#список-репозиториев) репозиторий по умолчанию, также [установить конфигурацию для нестабильного репозитория](https://getsol.us/articles/packaging/building-a-package/en/#initializing-solbuild) `solbuild-config-unstable`:
```shell
sudo eopkg it solbuild-config-unstable
```
Если нужно использовать только [local](repositories.md#инициализация-локального-репозитория) репозиторий по умолчанию, также [установить конфигурацию для локального нестабильного репозитория](https://getsol.us/articles/packaging/local-repository/en/#install-the-local-profile):
```shell
sudo eopkg install solbuild-config-local-unstable
```
Также понадобятся `git` и `arcanist`:
```shell
sudo eopkg it git arcanist
```
После установки необходимо инициализировать `solbuild`:
```shell
sudo solbuild init
```
Это займет некоторое время, так как будет производиться загрузка и подготовка образа. Рекомендуется обновлять `solbuild`, в противном случае обновления будут применяться при каждой сборке:
```shell
sudo solbuild update
```
Следующим шагом необходимо создать каталог для разработки, в котором будет находиться все конфигурационные файлы для сборки пакетов. К примеру, в домашней директории создать каталог `building`:
```shell
mkdir ~/building
```
Далее внутри каталога `building` произвести настройку инструментов для сборки. Нужно настроить `common` (набор сценариев создания), который позволяет более легко управлять, создавать, проверять и публиковать пакеты. Для этого нужно клонировать общий репозиторий с помощью `git`:
```shell
cd ~/building
git clone https://dev.getsol.us/source/common.git
```
Далее нужно настроить символические ссылки:
```shell
ln -sv common/Makefile.common .
ln -sv common/Makefile.toplevel Makefile
ln -sv common/Makefile.iso .
```
В результате выполненных действий каталог `building` примет следующий вид:
```shell
├── common
├── Makefile
├── Makefile.common
└── Makefile.iso
```
## Использование локального репозитория
После выполнения установки `solbuild-config-local-unstable` создаётся путь `/var/lib/solbuild/local/` локального репозитория. При использовании локального репозитория необходимо выполнить [индексацию](repositories.md#инициализация-локального-репозитория) списка:
```shell
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`, независимо от его номера выпуска.
Для того, чтобы изменить порядок следования репозиториев (их приоритетов) необходимо передобавить их в нужном порядке, например:
```shell
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`:
```shell
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` не будет знать, что новые пакеты доступны/были удалены из репозитория.
## Подготовка сборки пакета
Все пакеты создаются из [одного файла сборки](https://getsol.us/articles/packaging/package.yml/en/#format), который предоставляет все необходимые метаданные для менеджера пакетов, а также этапы упаковки, необходимые для создания пакета. Это соответствует спецификации YAML.