Обзор стандарта APG
Что такое APG?
APG (APG Package) — собственный формат пакетов для операционной системы NurOS, разработанный для обеспечения быстрой установки, полной поддержки зависимостей и простоты создания пакетов.
APG был создан командой NurOS как альтернатива существующим форматам пакетов с целью обеспечить:
- Простоту в понимании и использовании
- Полный контроль над процессом установки
- Поддержку современных возможностей управления пакетами
- Легкую расширяемость для будущих нужд
Текущая версия: APGv2
Основные принципы
Простота
APG использует стандартные форматы и инструменты:
- Архив: tar с сжатием (xz, zst)
- Метаданные: JSON формат
- Скрипты: обычные shell-скрипты
- Контрольные суммы: CRC32 или MD5 (на выбор)
Прозрачность
Структура пакета полностью прозрачна и может быть просмотрена стандартными инструментами:
# Просмотр содержимого пакета
tar -tf package.apg
# Извлечение пакета
tar -xf package.apg
Расширяемость
Формат позволяет добавлять новые поля в метаданные без нарушения совместимости, использовать пользовательские скрипты установки и поддерживать множественные архитектуры.
Компоненты экосистемы
| Компонент | Описание |
|---|---|
| Формат пакетов | Базовая спецификация формата .apg файлов |
| Tulpar | Пакетный менеджер для установки и управления пакетами |
| apgbuild | Утилита для создания пакетов |
| Tulpar Server | Сервер для распространения пакетов |
| libapg | Библиотека для работы с APG пакетами |
Типы пакетов
| Тип | Описание | Примеры |
|---|---|---|
binary | Скомпилированные бинарные файлы, готовые к использованию | Программы, библиотеки, драйверы |
source | Исходный код для компиляции на целевой системе | Исходники программ, патчи |
misc | Прочие файлы, не являющиеся программами | Темы оформления, шрифты, документация, данные |
Поддерживаемые архитектуры
| Архитектура | Описание | Статус |
|---|---|---|
x86_64 | 64-битные процессоры AMD/Intel | ✅ Полная поддержка |
aarch64 | 64-битные процессоры ARM | ✅ Полная поддержка |
riscv64 | 64-битные процессоры RISC-V | ✅ Полная поддержка |
all | Архитектурно-независимые пакеты | ✅ Полная поддержка |
Преимущества формата
Для пользователей
Быстрая установка благодаря оптимизированной распаковке архивов и минимальным проверкам. Надежность обеспечивается проверкой контрольных сумм, управлением зависимостями и откатом при ошибках. Прозрачность достигается за счет видимости всех файлов пакета, понятных метаданных и логирования установки.
Для разработчиков
Простота создания пакетов обеспечивается автоматизацией через apgbuild, простой структурой директорий и минимумом требований. Гибкость проявляется в возможности использовать пользовательские скрипты, поддерживать любые архитектуры и расширять метаданные. Совместимость достигается работой на любой Linux-системе, использованием стандартных инструментов и открытым форматом.
Лицензирование
Формат 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
APG разработан с учетом опыта существующих форматов пакетов и предлагает баланс между простотой и функциональностью.
APGv1 является устаревшим форматом. Для новых пакетов используйте APGv2.