Cargo
NORA реализует протокол Cargo Sparse Index для хранения и проксирования Rust-крейтов. Публикуйте приватные крейты и кешируйте публичные из crates.io.
Настройка клиента
Заголовок раздела «Настройка клиента»Добавьте NORA как альтернативный реестр в ~/.cargo/config.toml:
[registries.nora]index = "sparse+http://nora.example.com:4000/cargo/"Использование реестра:
# Публикацияcargo publish --registry nora
# Установкаcargo install my-crate --registry noraЧтобы использовать NORA как источник по умолчанию для пакетов crates.io, добавьте:
[source.crates-io]replace-with = "nora"
[source.nora]registry = "sparse+http://nora.example.com:4000/cargo/"Проксирование upstream
Заголовок раздела «Проксирование upstream»NORA проксирует запросы к индексу и скачивание крейтов из upstream-реестра, если крейт не найден локально.
config.toml:
[cargo]enabled = trueproxy = "https://crates.io"proxy_timeout = 30Переменные окружения:
| Переменная | Описание | По умолчанию |
|---|---|---|
NORA_CARGO_ENABLED | Включить реестр Cargo | true |
NORA_CARGO_PROXY | URL upstream-реестра | https://crates.io |
NORA_CARGO_PROXY_AUTH | Аутентификация upstream (user:pass) | — |
NORA_CARGO_PROXY_TIMEOUT | Таймаут upstream в секундах | 30 |
Возможности
Заголовок раздела «Возможности»| Функция | Статус | Примечание |
|---|---|---|
config.json | Полная | Поля dl и api |
| Sparse index lookup | Полная | Правила префиксов (1/2/3/ab/cd) |
| Скачивание крейтов | Полная | Файлы .crate по версии |
cargo publish | Полная | JSON с длиной (length-prefixed) + .crate |
| Метаданные зависимостей | Полная | Трансформация req, package |
| Проверка SHA256 | Полная | При публикации |
| Заголовки Cache-Control | Полная | immutable для скачивания, max-age=300 для индекса |
| Yank/unyank | — | Не реализовано |
| Управление владельцами | — | Не реализовано |
| Категории/ключевые слова | Частичная | Сохраняются, но не доступны для поиска |
Известные ограничения
Заголовок раздела «Известные ограничения»- Yank и unyank не поддерживаются — опубликованные версии нельзя пометить как отозванные.
- Управление владельцами не реализовано.
- Категории и ключевые слова сохраняются в метаданных, но не доступны для поиска.