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

APG v1 (Legacy) — Обзор

Устаревшая версия

APG v1 является устаревшей версией формата. Рекомендуется использовать APG v2.

О версии

APG v1 была первой версией формата пакетов для NurOS, разработанной в 2023-2024 годах. Это простой и понятный формат, основанный на tar-архивах с метаданными в JSON.

Основная информация

  • Дата создания: Декабрь 2023
  • Статус: Legacy (устаревший)
  • Поддержка: Для обратной совместимости
  • Формат архива: tar.xz, tar.gz
  • Расширение: .apg

Характеристики APGv1

Простота

APGv1 был разработан с акцентом на простоту:

  • Минимум обязательных полей в metadata.json
  • Понятная структура директорий
  • Стандартные инструменты (tar, md5sum)
  • Легко создавать вручную

Структура

package.apg (tar.xz архив)
├── metadata.json # JSON с информацией о пакете
├── md5sums # MD5 контрольные суммы
├── data/ # Файлы для установки в /
├── scripts/ # Скрипты установки (опционально)
└── home/ # Файлы для $HOME (опционально)

Метаданные

Минимальный metadata.json:

{
"name": "package-name",
"version": "1.0.0"
}

Полный metadata.json:

{
"name": "package-name",
"version": "1.0.0",
"architecture": "x86_64",
"description": "Package description",
"maintainer": "Name <email>",
"license": "MIT",
"homepage": "https://example.com",
"dependencies": ["dep1", "dep2"],
"conflicts": [],
"provides": [],
"replaces": []
}

Основные отличия от APGv2

ХарактеристикаAPGv1APGv2
Структура metadataПлоскаяВложенная (package объект)
Обязательные поляname, version+ release
Контрольные суммыТолько MD5MD5 или CRC32
Поле release❌ Отсутствует✅ Обязательное
Поле build_date❌ Отсутствует✅ Автоматическое
Поле install_size❌ Отсутствует✅ Опциональное
Операторы версийУказываются, но не работают✅ Полная поддержка
RISC-V архитектураrisc_vriscv64
Поддержка тегов✅ Есть✅ Улучшена

Ограничения APGv1

1. Зависимости

"dependencies": ["package >= 1.0.0"]

❌ Операторы версий (>=, <=, >, <, =) не проверяются ✅ Зависимости устанавливаются, но без проверки версий

2. Контрольные суммы

✅ Только MD5 (файл md5sums) ❌ Нет поддержки CRC32 ❌ Медленнее для больших файлов

3. Метаданные

❌ Отсутствует информация о релизе ❌ Нет даты сборки ❌ Нет информации о размере установки

4. Совместимость

⚠️ Старые версии Tulpar ⚠️ Может не работать с новыми инструментами

Миграция на APGv2

Зачем мигрировать?

✅ Полная поддержка зависимостей ✅ Быстрые CRC32 контрольные суммы ✅ Больше метаданных ✅ Лучшая совместимость с новыми версиями Tulpar ✅ Расширяемость формата

Процесс миграции

  1. Обновить metadata.json

    • Добавить поле release
    • Обернуть в объект package
    • Изменить risc_v на riscv64
  2. Заменить контрольные суммы

    apgbuild sums data crc32sums
    rm md5sums
  3. Пересобрать пакет

    apgbuild build .

Примеры пакетов

Официальный пример APGv1

Полный рабочий пример пакета в формате APGv1:

📦 Репозиторий: https://github.com/NurOS-Linux/APGexample 🌿 Ветка APGv1: https://github.com/NurOS-Linux/APGexample/tree/APGv1

# Скачать пример
git clone -b APGv1 https://github.com/NurOS-Linux/APGexample
cd APGexample

# Изучить структуру
tree
cat metadata.json
cat md5sums

Для сравнения: APGv2

📦 APGv2 пример (main ветка): https://github.com/NurOS-Linux/APGexample

# Скачать APGv2 пример
git clone https://github.com/NurOS-Linux/APGexample
cd APGexample

Поддержка

Текущий статус

  • ⚠️ Устаревший формат (Legacy)
  • Поддержка для обратной совместимости
  • Новые пакеты должны использовать APGv2
  • Документация доступна

Что делать?

Если у вас есть пакеты APGv1:

  1. Они продолжат работать (обратная совместимость)
  2. Рекомендуется мигрировать на APGv2
  3. Используйте инструменты миграции

Если создаете новый пакет:

  1. ✅ Используйте APGv2
  2. ❌ Не используйте APGv1
  3. Следуйте современным стандартам

Документация APGv1

Доступная документация:

Дополнительная информация