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

Обзор стандарта 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_6464-битные процессоры AMD/Intel✅ Полная поддержка
aarch6464-битные процессоры ARM✅ Полная поддержка
riscv6464-битные процессоры RISC-V✅ Полная поддержка
allАрхитектурно-независимые пакеты✅ Полная поддержка

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

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

Быстрая установка благодаря оптимизированной распаковке архивов и минимальным проверкам. Надежность обеспечивается проверкой контрольных сумм, управлением зависимостями и откатом при ошибках. Прозрачность достигается за счет видимости всех файлов пакета, понятных метаданных и логирования установки.

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

Простота создания пакетов обеспечивается автоматизацией через apgbuild, простой структурой директорий и минимумом требований. Гибкость проявляется в возможности использовать пользовательские скрипты, поддерживать любые архитектуры и расширять метаданные. Совместимость достигается работой на любой Linux-системе, использованием стандартных инструментов и открытым форматом.

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

Формат APG и все связанные инструменты распространяются под свободными лицензиями:

КомпонентЛицензия
Спецификация форматаPublic Domain / CC0
TulparGNU GPL 3.0
apgbuildGNU GPL 3.0
Tulpar ServerGNU 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.