Обзор стандарта APG
Общие сведения
Что такое APG?
APG (Advanced Package) — рекурсивный акроним, расшифровывающийся как "APG Package". Это собственный формат пакетов для операционной системы NurOS, разработанный для обеспечения быстрой установки, полной поддержки зависимостей и простоты создания пакетов.
История создания
APG был разработан командой NurOS как альтернатива существующим форматам пакетов. Целью было создание формата, который:
- Прост в понимании и использовании
- Обеспечивает полный контроль над процессом установки
- Поддерживает современные возможности управления пакетами
- Легко расширяется для будущих нужд
Текущая версия
APGv2 — текущая версия формата, используемая в NurOS.
Основные принципы
Простота
APG использует стандартные форматы и инструменты:
- Архив: tar с сжатием (xz, zst)
- Метаданные: JSON формат
- Скрипты: обычные shell-скрипты
- Контрольные суммы: MD5
Прозрачность
Структура пакета полностью прозрачна и может быть просмотрена стандартными инструментами:
# Просмотр содержимого пакета
tar -tf package.apg
# Извлечение пакета
tar -xf package.apg
Расширяемость
Формат позволяет:
- Добавлять новые поля в метаданные без нарушения совместимости
- Использовать пользовательские скрипты установки
- Поддерживать множественные архитектуры
Компоненты экосистемы APG
Формат пакетов
Базовая спецификация формата .apg файлов.
Инструменты
| Инструмент | Назначение |
|---|---|
| Tulpar | Пакетный менеджер для установки и управления пакетами |
| apgbuild | Утилита для создания пакетов |
| Tulpar Server | Сервер для распространения пакетов |
| libapg | Библиотека для работы с APG пакетами |
Экосистема
┌─────────────────────────────────────────┐
│ Пользователь NurOS │
└──────────────┬──────────────────────────┘
│
┌───────▼────────┐
│ Tulpar │ ← Пакетный менеджер
│ (клиент) │
└───────┬────────┘
│
┌───────────┼────────────┐
│ │ │
┌──▼──┐ ┌───▼────┐ ┌───▼────────┐
│ APG │ │ Tulpar │ │ libapg │
│файл │ │ Server │ │(библиотека)│
└─────┘ └────────┘ └────────────┘
▲
│
┌──┴────────┐
│ apgbuild │ ← Создание пакетов
│(сборщик) │
└───────────┘
Преимущества формата
Для пользователей
-
Быстрая установка
- Оптимизированная распаковка архивов
- Минимальные проверки перед установкой
-
Надежность
- Проверка контрольных сумм
- Управление зависимостями
- Откат при ошибках
-
Прозрачность
- Видимость всех файлов пакета
- Понятные метаданные
- Логирование установки
Для разработчиков
-
Простота создания
- Автоматизация через apgbuild
- Простая структура директорий
- Минимум требований
-
Гибкость
- Пользовательские скрипты
- Поддержка любых архитектур
- Расширяемые метаданные
-
Совместимость
- Работа на любой Linux-системе
- Стандартные инструменты
- Открытый формат
Поддерживаемые архитектуры
APG поддерживает следующие архитектуры процессоров:
| Архитектура | Описание | Статус |
|---|---|---|
x86_64 | 64-битные процессоры AMD/Intel | ✅ Полная поддержка |
aarch64 | 64-битные процессоры ARM | ✅ Полная поддержка |
riscv64 | 64-битные процессоры RISC-V | ✅ Полная поддержка |
all | Архитектурно-независимые пакеты | ✅ Полная поддержка |
Типы пакетов
binary
Скомпилированные бинарные файлы, готовые к использованию.
Примеры: программы, библиотеки, драйверы
source
Исходный код для компиляции на целевой системе.
Примеры: исходники программ, патчи
misc
Прочие файлы, не являющиеся программами.
Примеры: темы оформления, шрифты, документация, данные
Сравнение с другими форматами
APG vs DEB (Debian)
| Характеристика | APG | DEB |
|---|---|---|
| Формат архива | tar.xz/tar.zst | ar + tar.gz |
| Метаданные | JSON | Control файлы |
| Сложность | Простой | Средняя |
| Скрипты | Bash | Bash (debconf) |
| Зависимости | Простые | Сложные (alternatives) |
APG vs RPM (Red Hat)
| Характеристика | APG | RPM |
|---|---|---|
| Формат | tar.xz/tar.zst | cpio + rpm |
| Метаданные | JSON | Spec файлы |
| Сложность | Простой | Высокая |
| База данных | JSON файлы | Berkeley DB |
| Подпись | Планируется | GPG |
APG vs PKG (Arch)
| Характеристика | APG | PKG |
|---|---|---|
| Формат | tar.xz/tar.zst | tar.xz/tar.zst |
| Метаданные | JSON | .PKGINFO |
| Сложность | Простой | Простой |
| Сборка | apgbuild | makepkg |
| Философия | Похожие подходы | Похожие подходы |
Лицензия и открытость
Лицензирование
Формат APG и все связанные инструменты распространяются под свободными лицензиями:
- Спецификация формата: Public Domain / CC0
- Tulpar: GNU GPL 3.0
- apgbuild: GNU GPL 3.0
- Tulpar Server: GNU GPL 3.0
Открытый стандарт
APG является открытым стандартом:
- Полная спецификация доступна публично
- Возможность создания альтернативных реализаций
- Приветствуется обратная связь и предложения
Примеры пакетов
Официальный пример APGv2
Полный рабочий пример пакета в формате APGv2:
📦 Репозиторий: https://github.com/NurOS-Linux/APGexample
# Клонировать пример
git clone https://github.com/NurOS-Linux/APGexample
cd APGexample
# Изучить структуру
tree
cat metadata.json
cat crc32sums
# Собрать пакет (если установлен apgbuild)
apgbuild build .
Пример APGv1 (Legacy)
Для сравнения доступен пример в устаревшем формате APGv1:
📦 Ветка APGv1: https://github.com/NurOS-Linux/APGexample/tree/APGv1
# Клонировать APGv1 пример
git clone -b APGv1 https://github.com/NurOS-Linux/APGexample
cd APGexample
Дальнейшее чтение
Ссылки
- Репозиторий спецификации: https://github.com/NurOS-Linux/apg-docs
- Tulpar: https://github.com/NurOS-Linux/Tulpar
- apgbuild: https://github.com/NurOS-Linux/apgbuild
- Tulpar Server: https://github.com/NurOS-Linux/tulpar-server
- Пример пакета APGv2: https://github.com/NurOS-Linux/APGexample
- Пример пакета APGv1: https://github.com/NurOS-Linux/APGexample/tree/APGv1