Реестр пакетов Debian


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

В документации ниже встречается атрибут {домен_gitflic} На его место необходимо указать домен, в зависимости от версии:

  • для SaaS версии registry.gitflic.ru

  • для self-hosted localhost:8080

Домен и порт для self-hosted версии может отличаться.


Создание ключей

Перед тем как загружать deb пакеты в реестр, необходимо сгенерировать пару ключей: публичный и приватный. Эти ключи будут использоваться для подписи пакетов и их проверки. Для создания ключей можно воспользоваться утилитой gpg.

1. Установка утилиты gpg

Если GPG не установлен на вашей системе, установите его:

  • Для Ubuntu/Debian:
sudo apt-get update
sudo apt-get install gnupg
  • Для macOS:
brew install gnupg

2. Создание пары ключей

Выполните следующую команду для создания новой пары ключей:

gpg --full-generate-key

Вам будет предложено выбрать тип ключа, длину ключа, срок действия и ввести личные данные (имя, email и комментарий). Рекомендуется использовать следующие параметры:

  • Тип ключа: ECC (sign and encrypt) (по умолчанию)
  • Выберите эллиптическую кривую: Curve 25519 (по умолчанию)
  • Срок действия: без срока действия (оставьте пустым)
  • Личные данные: укажите свои актуальные данные, которые будут использованы для подписи.

После ввода данных система запросит пароль для защиты ключа. Введите надежный пароль и запомните его.

3. Экспорт ключей

После завершения создания ключей, экспортируйте их:

gpg --armor --export {your-key-id} > public-key.asc
gpg --armor --export-secret-keys {your-key-id} > private-key.asc

Замените {your-key-id} на идентификатор вашего ключа, который можно найти с помощью команды:

gpg --list-keys

4. Импорт ключей

Добавьте публичный и приватный ключ в настройках профиля GitFlic, в разделе “Ключи” -> “Ключевые пары GPG”.

5. Настройка реестра

Выберите вашу пару ключей в настройках реестра. Для этого перейдите в настройки проекта/компании -> “Настройки реестра” -> “Debian” -> в соответствующем поле выберите вашу пару ключей и нажмите “Сохранить изменения”.

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

Загрузить пакет в реестр можно через веб-интерфейс или через CLI.

Атрибут Описание
домен_gitflic registry.gitflic.ru, либо ваш для self-hosted
userAlias Имя пользователя в GitFlic (логин)
ownerAlias Имя владельца проекта в GitFlic, то же что в URL (пользователь/команда/компания)
projectAlias Имя проекта в GitFlic, то же что в URL
companyAlias Имя компании в GitFlic, то же что в URL
transportToken Транспортный токен
pathToFile Путь к файлу
Distribution Дистрибутив или версия операционной системы, к которой относится загружаемый пакет
Component Категория или раздел в конкретном дистрибутиве

Публикация пакета в реестр проекта:

Для публикации пакета в реестр на уровне проекта воспользуйтесь данным шаблоном:

curl --user {userAlias}:{transportToken} \
--upload-file {pathToFile}\
{домен_gitflic}/project/{ownerAlias}/{projectAlias}/package/-/deb/pool/{Distribution}/{Component}/upload

Пример команды для выполнения:

curl --user user:aaaaaaaa-bbbb-bbbb-bbbb-cccccccccccc \
--upload-file test.deb\
http://localhost:8080/project/user/testproject/package/-/deb/pool/buster/main/upload

Публикация пакета в реестр компании:

Для публикации пакета в реестр на уровне компании воспользуйтесь данным шаблоном:

curl --user {userAlias}:{transportToken} \
--upload-file {pathToFile}\
{домен_gitflic}/company/{companyAlias}/package/-/deb/pool/{Distribution}/{Component}/upload

Пример команды для выполнения:

curl --user user:aaaaaaaa-bbbb-bbbb-bbbb-cccccccccccc \
--upload-file test.deb\
http://localhost:8080/company/testcompany/package/-/deb/pool/buster/main/upload

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

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

1. Добавление репозитория

Перейдите в реестр пакетов и откройте необходимый deb пакет. Далее, скопируйте строку из первого шага настройки и добавьте её в ваш файл со списком репозиториев.

Пример команды для добавления репозитория из реестра проекта:

echo "deb [signed-by=/etc/apt/keyrings/test.asc] http://localhost:8080/project/user/test/package/-/deb buster main" | sudo tee -a /etc/apt/sources.list

Пример команды для добавления репозитория из реестра компании:

echo "deb [signed-by=/etc/apt/keyrings/test.asc] http://localhost:8080/company/testcompany/package/-/deb buster main" | sudo tee -a /etc/apt/sources.list

2. Получение публичного ключа

Для получения публичного ключа, скопируйте и выполните команду из второго шага настройки, указав свой логин и транспортный токен. По умолчанию ключ сохраняется по пути /etc/apt/keyrings/.

Пример команды для получения публичного ключа из реестра проекта:

curl --user user:aaaaaaaa-bbbb-bbbb-bbbb-cccccccccccc http://localhost:8080/project/user/test/package/-/deb/dists/buster/public-key.asc -o /etc/apt/keyrings/test.asc

Пример команды для получения публичного ключа из реестра компании:

curl --user user:aaaaaaaa-bbbb-bbbb-bbbb-cccccccccccc http://localhost:8080/company/testcompany/package/-/deb/dists/buster/public-key.asc -o /etc/apt/keyrings/test.asc

3. Добавьте данные для аутентификации в реестре (опционально)

Если в настройках реестра запрещен анонимный доступ, то необходимо создать файл для аутентификации в реестре в каталоге /etc/apt/auth.conf.d/

Шаблон команды для создания файла аутентификации:

echo "machine {домен_gitflic} login {userAlias} password {transportToken}" | sudo tee -a /etc/apt/auth.conf.d/gitflic.conf

Пример команды для создания файла аутентификации:

echo "machine http://localhost:8080 login user password aaaaaaaa-bbbb-bbbb-bbbb-cccccccccccc" | sudo tee -a /etc/apt/auth.conf.d/gitflic.conf

4. Обновите список пакетов

Обновите список пакетов, выполнив команду:

sudo apt update

5. Установите пакет

Выполните команду для установки пакета, указав его название:

sudo apt install test/buster