Перейти к содержанию

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

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

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

  • для SaaS версии: registry.gitflic.ru
  • для Self-hosted: localhost:8080

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

Уровень CONDA_REGISTRY_URL
Проект http://{username}:{transport_token}@{домен_gitflic}/project/{ownerAlias}/{projectAlias}/package/-/conda
Компания http://{username}:{transport_token}@{домен_gitflic}/company/{companyAlias}/package/-/conda
Инстанс http://{username}:{transport_token}@{домен_gitflic}/registry/package/-/conda
Переменная в URL Описание
ownerAlias Псевдоним владельца проекта
projectAlias Псевдоним проекта
companyAlias Псевдоним компании
username Логин пользователя
transport_token Транспортный токен пользователя

Логин и транспортный токен используются только для работы с реестрами, у которых запрещен анонимный доступ.


Настройка реестра Conda

Для использования Conda реестра необходимо создать/отредактировать файл конфигурации ~/.condarc.

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

~/.condarc
channels:
  - {CONDA_REGISTRY_URL}/
default_channels:
  - {CONDA_REGISTRY_URL}/
channel_priority: strict

После настройки файла, Conda будет искать и устанавливать пакеты из реестра GitFlic по умолчанию, без указания каналов в каждой команде.

Именованные каналы

Именованные каналы (например $CONDA_REGISTRY_URL/main) поддерживаются, но в некоторых версиях libmamba возможны ошибки при их использовании. Рекомендуем обращаться к корневому каналу $CONDA_REGISTRY_URL/ или запускать команды с опцией: --solver=classic.


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

К загрузке в реестр принимаются пакеты формата .conda с именем в следующем формате: <name>-<version>-<build>.conda.

Для загрузки пакета транспортным путём используйте HTTP метод:

PUT $CONDA_REGISTRY_URL/{optional_channel}/{filename}

{optional_channel} — необязательный подкаталог канала (например, main). Если подкаталог не указан — публикация пакета выполняется в корневой канал.

Примеры использования:

curl --user "{username}:{transport_token}" \
    --upload-file dist/test-gf-0.1.1-py_0.conda \
    "$CONDA_REGISTRY_URL/test-gf-0.1.1-py_0.conda"
curl --user "{username}:{transport_token}" \
    --upload-file dist/test-gf-0.1.1-py_0.conda \
    "$CONDA_REGISTRY_URL/main/test-gf-0.1.1-py_0.conda"

Обновление индекса на клиентах

После загрузки пакет доступен сразу. Если клиент не видит новую версию, попробуйте очистить локальный кэш индекса: conda clean --index-cache -y


Поиск и установка пакетов

После настройки файла ~/.condarc используйте следующие команды для поиска и установки пакетов:

# Поиск пакета
conda search test-gf

# Установка пакета
conda install test-gf

# Установка пакета из именованного канала
conda install -c main test-gf 

Канал можно указывать явно без изменения глобальной конфигурации:

conda search  --override-channels -c "$CONDA_REGISTRY_URL/" test-gf
conda install --override-channels -c "$CONDA_REGISTRY_URL/" test-gf

Для пакетов в именованном канале:

conda search  --override-channels -c "$CONDA_REGISTRY_URL/main" test-gf
conda install --override-channels -c "$CONDA_REGISTRY_URL/main" test-gf

Версионирование пакетов

Conda учитывает семантические версии. При установке пакета без указания версии будет установлен пакет с самой высокой версией, даже если этот пакет является пререлизным.

# Установка максимально доступной версии
conda install test-gf

# Установка стабильной версии
conda install 'test-gf<1.0.0a0'

# Установка конкретной версии
conda install 'test-gf==1.0.0a1'

Зависимости

Реестр Conda полностью совместим со стандартным механизмом зависимостей. Если пакет и его зависимости опубликованы в одном и том же канале, они будут установлены оттуда без дополнительной настройки.

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

Пример метапакета:

recipe/meta.yaml
package:
  name: needs-test-gf
  version: 0.1.0
build:
  noarch: generic
requirements:
  run:
    - test-gf >=0.1.0

Метапакет публикуется как обычный пакет (.conda). После публикации вы можете установить его стандартным способом:

conda install needs-test-gf

Conda автоматически подберёт и установит подходящую версию пакета test-gf из того же канала (с учётом версионирования и приоритетов каналов в вашей конфигурации).