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
| Характеристика | APGv1 | APGv2 |
|---|---|---|
| Структура metadata | Плоская | Вложенная (package объект) |
| Обязательные поля | name, version | + release |
| Контрольные суммы | Только MD5 | MD5 или CRC32 |
| Поле release | ❌ Отсутствует | ✅ Обязательное |
| Поле build_date | ❌ Отсутствует | ✅ Автоматическое |
| Поле install_size | ❌ Отсутствует | ✅ Опциональное |
| Операторы версий | Указываются, но не работают | ✅ Полная поддержка |
| RISC-V архитектура | risc_v | riscv64 |
| Поддержка тегов | ✅ Есть | ✅ Улучшена |
Ограничения APGv1
1. Зависимости
"dependencies": ["package >= 1.0.0"]
❌ Операторы версий (>=, <=, >, <, =) не проверяются
✅ Зависимости устанавливаются, но без проверки версий
2. Контрольные суммы
✅ Только MD5 (файл md5sums)
❌ Нет поддержки CRC32
❌ Медленнее для больших файлов
3. Метаданные
❌ Отсутствует информация о релизе ❌ Нет даты сборки ❌ Нет информации о размере установки
4. Совместимость
⚠️ Старые версии Tulpar ⚠️ Может не работать с новыми инструментами
Миграция на APGv2
Зачем мигрировать?
✅ Полная поддержка зависимостей ✅ Быстрые CRC32 контрольные суммы ✅ Больше метаданных ✅ Лучшая совместимость с новыми версиями Tulpar ✅ Расширяемость формата
Процесс миграции
-
Обновить metadata.json
- Добавить поле
release - Обернуть в объект
package - Изменить
risc_vнаriscv64
- Добавить поле
-
Заменить контрольные суммы
apgbuild sums data crc32sums
rm md5sums -
Пересобрать пакет
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:
- Они продолжат работать (обратная совместимость)
- Рекомендуется мигрировать на APGv2
- Используйте инструменты миграции
Если создаете новый пакет:
- ✅ Используйте APGv2
- ❌ Не используйте APGv1
- Следуйте современным стандартам
Документация APGv1
Доступная документация:
- Структура пакета APGv1 — полное описание формата
- Файл metadata.json — все поля и примеры
- Официальный пример — рабочий пример пакета
Дополнительная информация
- Обзор APGv2 — современный формат
- История проекта — итоги 2025 года