documentation/SolusProject/doc/build_eopkg.md

132 lines
7.9 KiB
Markdown
Raw Permalink Normal View History

2021-10-22 22:45:06 +00:00
# Сборка eopkg пакета
2021-10-22 23:04:30 +00:00
[Официальная документация](https://getsol.us/articles/packaging/) по сборке пакетов `eopkg` для последующего размещения в официальном репозитории.
2021-10-22 22:45:06 +00:00
## Процесс сборки
* [Предварительная подготовка](#предварительная-подготовка)
2021-10-23 20:37:44 +00:00
* [Использование локального репозитория](#использование-локального-репозитория)
2021-10-22 22:45:06 +00:00
* [Подготовка сборки пакета](#подготовка-сборки-пакета)
## Предварительная подготовка
Для начала необходимо сконфигурировать файл `packager`, который используется для упаковщика в результирующем двоичном пакете. Для этого в домашней директории необходимо создать каталог `.solus` с содержащим внутри себя файлом `packager`:
```shell
mkdir ~/.solus
nano ~/.solus/packager
```
Внутри файла необходимо указать два ключа, идентифицирующие собирающего пакеты:
2021-10-23 20:37:44 +00:00
```shell
2021-10-22 22:45:06 +00:00
[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
```
2021-10-23 20:37:44 +00:00
Если нужно использовать только [unstable](repositories.md#список-репозиториев) репозиторий по умолчанию, также [установить конфигурацию для нестабильного репозитория](https://getsol.us/articles/packaging/building-a-package/en/#initializing-solbuild) `solbuild-config-unstable`:
2021-10-22 22:45:06 +00:00
```shell
sudo eopkg it solbuild-config-unstable
```
2021-10-23 20:37:44 +00:00
Если нужно использовать только [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
```
2021-10-22 22:45:06 +00:00
После установки необходимо инициализировать `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` примет следующий вид:
2021-10-23 20:37:44 +00:00
```shell
2021-10-22 22:45:06 +00:00
├── common
├── Makefile
├── Makefile.common
└── Makefile.iso
```
2021-10-23 20:37:44 +00:00
## Использование локального репозитория
После выполнения установки `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` не будет знать, что новые пакеты доступны/были удалены из репозитория.
2021-10-22 22:45:06 +00:00
## Подготовка сборки пакета
2021-10-23 20:37:44 +00:00
Все пакеты создаются из [одного файла сборки](https://getsol.us/articles/packaging/package.yml/en/#format), который предоставляет все необходимые метаданные для менеджера пакетов, а также этапы упаковки, необходимые для создания пакета. Это соответствует спецификации YAML.