Реестр пакетов 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.
Пример конфигурации файла для использования реестра из корневого канала выбранного уровня:
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 полностью совместим со стандартным механизмом зависимостей. Если пакет и его зависимости опубликованы в одном и том же канале, они будут установлены оттуда без дополнительной настройки.
Для установки зависимостей вы можете использовать метапакеты. Такие пакеты не содержат файлов, а лишь объявляют требования. Установив метапакет, вы автоматически установите все его зависимости.
Пример метапакета:
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 из того же канала (с учётом версионирования и приоритетов каналов в вашей конфигурации).