Перейти к основному содержимому

Обзор стандарта 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 │ ← Создание пакетов
│(сборщик) │
└───────────┘

Преимущества формата

Для пользователей

  1. Быстрая установка

    • Оптимизированная распаковка архивов
    • Минимальные проверки перед установкой
  2. Надежность

    • Проверка контрольных сумм
    • Управление зависимостями
    • Откат при ошибках
  3. Прозрачность

    • Видимость всех файлов пакета
    • Понятные метаданные
    • Логирование установки

Для разработчиков

  1. Простота создания

    • Автоматизация через apgbuild
    • Простая структура директорий
    • Минимум требований
  2. Гибкость

    • Пользовательские скрипты
    • Поддержка любых архитектур
    • Расширяемые метаданные
  3. Совместимость

    • Работа на любой Linux-системе
    • Стандартные инструменты
    • Открытый формат

Поддерживаемые архитектуры

APG поддерживает следующие архитектуры процессоров:

АрхитектураОписаниеСтатус
x86_6464-битные процессоры AMD/Intel✅ Полная поддержка
aarch6464-битные процессоры ARM✅ Полная поддержка
riscv6464-битные процессоры RISC-V✅ Полная поддержка
allАрхитектурно-независимые пакеты✅ Полная поддержка

Типы пакетов

binary

Скомпилированные бинарные файлы, готовые к использованию.

Примеры: программы, библиотеки, драйверы

source

Исходный код для компиляции на целевой системе.

Примеры: исходники программ, патчи

misc

Прочие файлы, не являющиеся программами.

Примеры: темы оформления, шрифты, документация, данные

Сравнение с другими форматами

APG vs DEB (Debian)

ХарактеристикаAPGDEB
Формат архиваtar.xz/tar.zstar + tar.gz
МетаданныеJSONControl файлы
СложностьПростойСредняя
СкриптыBashBash (debconf)
ЗависимостиПростыеСложные (alternatives)

APG vs RPM (Red Hat)

ХарактеристикаAPGRPM
Форматtar.xz/tar.zstcpio + rpm
МетаданныеJSONSpec файлы
СложностьПростойВысокая
База данныхJSON файлыBerkeley DB
ПодписьПланируетсяGPG

APG vs PKG (Arch)

ХарактеристикаAPGPKG
Форматtar.xz/tar.zsttar.xz/tar.zst
МетаданныеJSON.PKGINFO
СложностьПростойПростой
Сборкаapgbuildmakepkg
ФилософияПохожие подходыПохожие подходы

Лицензия и открытость

Лицензирование

Формат 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

Дальнейшее чтение

Ссылки