Структура пакета APGv2

APG (APG Package) — формат пакетов для NurOS. Пакет представляет собой tar-архив с дополнительным сжатием (например, .tar.xz, .tar.zst).

Структура архива

package.apg
├── metadata.json      # Метаданные пакета (обязательно)
├── md5sums            # MD5 контрольные суммы (обязательно, или crc32sums)
├── crc32sums          # CRC32 контрольные суммы (альтернатива md5sums)
├── data/              # Файлы для установки в / (обязательно)
│   ├── usr/
│   │   ├── bin/
│   │   └── lib/
│   └── etc/
├── scripts/           # Скрипты установки (опционально)
│   ├── pre-install
│   ├── post-install
│   ├── pre-remove
│   └── post-remove
└── home/              # Файлы для $HOME (опционально)
    └── .config/

Компоненты пакета

КомпонентОписаниеОбязательный
metadata.jsonИнформация о пакете: имя, версия, зависимостиДа
md5sums или crc32sumsКонтрольные суммы всех файлов пакетаДа (один из них)
data/Файлы, устанавливаемые в корень файловой системы /Да
scripts/Скрипты pre/post install/removeНет
home/Файлы, устанавливаемые в домашний каталог $HOMEНет

Описание компонентов

metadata.json

Содержит всю информацию о пакете в формате JSON. Подробнее см. Файл metadata.json.

md5sums / crc32sums

Текстовый файл с контрольными суммами всех файлов пакета. Пакет должен содержать один из этих файлов.

Формат md5sums:

d41d8cd98f00b204e9800998ecf8427e  data/usr/bin/example
e99a18c428cb38d5f260853678922e03  data/etc/example.conf

Формат crc32sums:

a1b2c3d4  data/usr/bin/example
e5f6a7b8  data/etc/example.conf

Выбор алгоритма:

  • MD5: Более надежная проверка целостности, стандарт для большинства пакетов
  • CRC32: Быстрая проверка, подходит для больших пакетов где важна скорость

data/

Каталог с файлами, которые будут распакованы в корень системы /. Структура внутри data/ повторяет структуру файловой системы.

Пример:

data/
├── usr/
│   ├── bin/
│   │   └── myapp
│   └── share/
│       └── myapp/
└── etc/
    └── myapp.conf

scripts/

Каталог со скриптами, выполняемыми при установке/удалении:

СкриптКогда выполняется
pre-installПеред распаковкой файлов
post-installПосле распаковки файлов
pre-removeПеред удалением файлов
post-removeПосле удаления файлов

Все скрипты должны быть исполняемыми (chmod +x) и использовать shebang (#!/bin/bash).

home/

Каталог с файлами для домашнего каталога пользователя. Работает аналогично data/, но относительно $HOME.

Пример:

home/
└── .config/
    └── myapp/
        └── config.ini

Информация

Используйте home/ для конфигурационных файлов пользователя, таких как .bashrc, .config/ и т.д.

Внимание

Убедитесь, что выбран только один файл контрольных сумм: md5sums или crc32sums. Наличие обоих файлов может привести к ошибкам при установке пакета.