Репозитории формата Cargo используют sparse-индекс (Cargo 1.70 и новее).
В примерах используются условные имена cargo-hosted и cargo-proxy.
Подключение
Опишите реестр в ~/.cargo/config.toml;
для репозиториев, требующих аутентификации,
явно укажите провайдер учётных данных:
[registry]
global-credential-providers = ["cargo:token"]
[registries.galleon]
index = "sparse+https://<GALLEON_HOST>/repository/cargo-hosted/"Токен — готовая строка Basic <BASE64>; сохраните её командой cargo login:
printf 'Basic <BASE64>\n' | cargo login --registry galleonProxy для crates.io
Чтобы все публичные зависимости шли через Galleon, настройте подмену источника —
реестр объявляется и в [registries], чтобы к нему можно было привязать токен:
[registries.galleon-proxy]
index = "sparse+https://<GALLEON_HOST>/repository/cargo-proxy/"
[source.crates-io]
replace-with = "galleon-proxy"
[source.galleon-proxy]
registry = "sparse+https://<GALLEON_HOST>/repository/cargo-proxy/"Если proxy-репозиторий требует аутентификации,
сохраните токен и для него: cargo login --registry galleon-proxy
(та же строка Basic <BASE64>).
Использование
Зависимость из hosted-реестра указывается в Cargo.toml с именем реестра:
mycrate = { version = "1", registry = "galleon" }Публикация
Крейт отправляется в hosted-реестр по имени, объявленному в registries.galleon:
cargo publish --registry galleonОсобенности
Особенности формата:
- Повторная публикация существующей версии отклоняется с кодом
409; имена сравниваются без учёта регистра, а-и_считаются одним символом. cargo yankподдерживается: версия помечается в индексе, но файл не удаляется — сборки с точной версией вCargo.lockпродолжают работать. Требуется привилегияedit.cargo searchиcargo ownerне поддерживаются.