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

Обзор Tulpar

Общие сведения

Что такое Tulpar?

Tulpar — это высокоуровневый пакетный менеджер для операционной системы NurOS, предназначенный для работы с форматом пакетов APG. Написан на языке C и предоставляет удобные инструменты для установки, обновления и управления программным обеспечением.

Этимология названия

Тулпар (каз. Tulpar) — в тюркской мифологии крылатый конь, символизирующий скорость и надежность. Название отражает философию пакетного менеджера: быстрая и надежная доставка программного обеспечения.

Архитектура

Компоненты системы

┌─────────────────────────────────────────┐
│ Интерфейс командной строки │
│ (tulpar CLI) │
└──────────────┬──────────────────────────┘

┌───────▼────────┐
│ libapg │ ← Библиотека работы с APG
│ (ядро) │
└───────┬────────┘

┌───────────┼────────────┐
│ │ │
┌──▼──────┐ ┌─▼────────┐ ┌─▼──────┐
│Установка│ │Зависимости│ │ База │
│ пакетов │ │ │ │данных │
└─────────┘ └──────────┘ └────────┘

Основные возможности

  1. Управление пакетами

    • Установка пакетов
    • Удаление пакетов
    • Обновление пакетов
    • Поиск пакетов
  2. Управление зависимостями

    • Автоматическое разрешение зависимостей
    • Проверка конфликтов
    • Обработка виртуальных пакетов (provides)
    • Замена пакетов (replaces)
  3. Работа с репозиториями

    • Синхронизация с удаленными репозиториями
    • Поддержка множественных источников
    • Кэширование метаданных
    • Проверка целостности
  4. База данных пакетов

    • Учет установленных пакетов
    • История операций
    • Список файлов каждого пакета
    • Метаданные установленных пакетов

Технические характеристики

Требования к системе

  • Операционная система: Linux (NurOS или другие дистрибутивы)
  • Архитектура: x86_64, aarch64, riscv64
  • Зависимости:
    • libc (glibc или musl)
    • libarchive (для работы с архивами)
    • libcurl (для загрузки пакетов)
    • nlohmann/json (для парсинга JSON)

Технологии

  • Язык программирования: C (C11)
  • Система сборки: meson & ninja
  • Формат базы данных: JSON файлы
  • Сетевой протокол: HTTP/HTTPS

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

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

  1. Простота использования

    • Понятный интерфейс командной строки
    • Автоматическое разрешение зависимостей
    • Подробные сообщения об ошибках
  2. Надежность

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

    • Быстрая установка пакетов
    • Эффективное кэширование
    • Параллельная загрузка

Для системных администраторов

  1. Управляемость

    • Полный контроль над установленными пакетами
    • История операций
    • Простая интеграция в скрипты
  2. Гибкость

    • Настройка репозиториев
    • Конфигурируемые параметры
    • Поддержка локальных пакетов

Сравнение с другими менеджерами

Tulpar vs apt (Debian/Ubuntu)

ХарактеристикаTulparapt
Формат пакетовAPGDEB
ЗависимостиПростыеСложные
СкоростьВысокаяСредняя
База данныхJSONdpkg DB
КонфигурацияПростаяСложная

Tulpar vs pacman (Arch Linux)

ХарактеристикаTulparpacman
Формат пакетовAPGPKG.tar.zst
ФилософияПохожаяПохожая
СкоростьВысокаяВысокая
База данныхJSONТекстовые файлы
AUR аналогПланируетсяAUR

Tulpar vs dnf (Fedora)

ХарактеристикаTulpardnf
Формат пакетовAPGRPM
ЗависимостиПростыеОчень сложные
СкоростьВысокаяНизкая
ПамятьНизкое потреблениеВысокое потребление

Компоненты

tulpar (CLI)

Интерфейс командной строки для управления пакетами.

Основные команды:

tulpar install <пакет>   # Установка
tulpar remove <пакет> # Удаление
tulpar update # Обновление базы
tulpar upgrade # Обновление пакетов
tulpar search <запрос> # Поиск

libapg

Библиотека для работы с пакетами APG.

Возможности:

  • Чтение и запись APG пакетов
  • Парсинг метаданных
  • Проверка контрольных сумм
  • Управление зависимостями

Использование в других проектах:

#include <libapg/package.h>

apg_package_t *pkg = apg_package_open("package.apg");
apg_metadata_t *metadata = apg_package_get_metadata(pkg);
apg_package_install(pkg, "/");
apg_package_close(pkg);

База данных пакетов

Расположение

  • Установленные пакеты: /var/lib/apg/installed/
  • Локальный кэш: /var/cache/apg/packages/
  • Конфигурация: /etc/apg/tulpar.conf

Структура базы данных

/var/lib/apg/
├── installed/
│ ├── firefox-120.0-1/
│ │ ├── metadata.json # Метаданные пакета
│ │ ├── files.list # Список установленных файлов
│ │ └── install-date # Время установки
│ └── vim-9.0-1/
│ ├── metadata.json
│ ├── files.list
│ └── install-date
└── cache/
└── repositories/
└── official.json # Метаданные репозитория

Информация о проекте

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

Поддержка