Работа с DEB-пакетами

Info

GitVerse предоставляет собственные APT-совместимые репозитории для распространения DEB-пакетов. Поддерживаются Ubuntu, Debian и другие совместимые дистрибутивы.

Репозитории DEB-пакетов в GitVerse структурированы по Дистрибутиву (distribution) и Компоненту (component).
Один пакет может быть доступен в разных ветках одновременно.

Подключение DEB-репозитория

Для проверки подлинности пакетов обычно используется публичный ключ, предоставленный владельцем репозитория.

Добавьте PGP-ключ репозитория, если он предоставлен владельцем

        sudo mkdir -p /etc/apt/keyrings
        sudo curl -fsSL https://gitverse.ru/api/packages/<owner>/debian/repository.key \
        -o /etc/apt/keyrings/gitverse-<owner>.asc

Добавьте источник пакетов

Создайте файл конфигурации /etc/apt/sources.list.d/gitverse-<owner>.list с указанием нужного дистрибутива и компонента.

Добавьте репозиторий в список источников пакетов

    echo "deb [signed-by=/etc/apt/keyrings/gitverse-<owner>.asc] \
          https://gitverse.ru/api/packages/<owner>/debian <distribution> <component>" \
        | sudo tee /etc/apt/sources.list.d/gitverse-<owner>.list

Параметры:

<distribution> — например: focal, jammy, bookworm;
<component> — обычно: main.

Обновите индексы APT

sudo apt update

Публикация DEB-пакета

Загрузка .deb файла выполняется через HTTP PUT:

curl \
--user <username>:<token> \
--upload-file ./myapp_1.0.0_amd64.deb \
https://gitverse.ru/api/packages/<owner>/debian/pool/<distribution>/<component>/upload

Требования:

  • уникальная комбинация имя + версия + архитектура + distribution + component;\;
  • повторная загрузка невозможна без удаления предыдущей версии.

Установка DEB-пакетов

Установить последнюю версию

sudo apt install {package_name}

Установить конкретную версию

sudo apt install {package_name}={package_version}

Удаление DEB-пакета

curl --user <username>:<token> -X DELETE \
  https://gitverse.ru/api/packages/<owner>/debian/pool/<distribution>/<component>/<package>/<version>/<architecture>

Использование DEB-репозитория в CI/CD

steps:
  - name: Install repo key
    run: |
      sudo curl -fsSL https://gitverse.ru/api/packages/myorg/debian/repository.key \
        -o /etc/apt/keyrings/myorg.asc
 
  - name: Add repo
    run: |
      echo "deb [signed-by=/etc/apt/keyrings/myorg.asc] \
      https://gitverse.ru/api/packages/myorg/debian stable main" \
      | sudo tee /etc/apt/sources.list.d/myorg.list
 
  - run: sudo apt update
  - run: sudo apt install -y myapp
ОшибкаПричинаРешение
APT «ругается» на подписьключ не добавлендобавить keyring
404/Not Foundневерный путь distribution/componentпроверить значения
пакет не обновляетсяверсия не измениласьувеличьте версию