Работа с Debian / APT
CodeScoring.Save реализует APT-совместимый репозиторий с префиксом /deb/<project>/<repository>/. Совместим со стандартными клиентами apt, apt-get и aptitude на Debian, Ubuntu и производных дистрибутивах.
Proxy-репозиторий
Proxy-репозиторий не генерирует собственные индексы — файлы InRelease, Release, Release.gpg и Packages* проксируются с upstream побайтно, чтобы подписи и контрольные суммы оставались валидными. Пакеты из pool/ кэшируются как неизменяемые артефакты; метаданные ревалидируются по истечении cache_ttl. Если upstream недоступен, Save отдаёт последнюю закэшированную копию метаданных. Загрузка пакетов в proxy-репозиторий запрещена — он read-only.
Hosted-репозиторий
При создании hosted-репозитория Save сразу публикует пустой suite stable (компонент main), поэтому apt-get update работает ещё до загрузки первого пакета. Индексы (Packages, Packages.gz, Release) перегенерируются автоматически после каждой загрузки или удаления пакета.
URL-схема
Настройка клиента
apt (подписанный репозиторий)
Если на сервере включена подпись метаданных (METADATA_SIGNING_ENABLED), Save публикует InRelease и Release.gpg, а публичный ключ доступен по адресу <repo>/repository.key:
apt (без подписи)
Если подпись метаданных не включена, используйте [trusted=yes]:
apt сначала запрашивает InRelease и при 404 откатывается на пару Release + Release.gpg. Это штатное поведение: 404 на InRelease у неподписанного репозитория — не ошибка.
Для CI/CD используйте robot-аккаунт: login = sa$<robot-name>, password = <api-key> в /etc/apt/auth.conf.d/save.conf. Подробнее — в общем разделе Аутентификация.
Публикация пакетов (hosted)
Загрузка выполняется PUT-запросом в канонический pool-путь. Suite и компонент передаются query-параметрами (по умолчанию — stable и main):
Имя файла должно соответствовать схеме <name>_<version>_<arch>.deb. Save валидирует контрольную структуру пакета и приводит путь к каноническому виду pool/<component>/<первая-буква>/<имя>/<имя>_<версия>_<арх>.deb — фактический путь возвращается в ответе.
Альтернатива — multipart POST на корень репозитория:
Пакеты с архитектурой all автоматически публикуются во все конкретные архитектуры suite (fan-out); псевдоархитектура all не публикуется в Release отдельной строкой.
Принудительная перегенерация индексов
Миграция URL репозитория
Сценарий использования: миграция APT-репозитория с Nexus / Artifactory на CodeScoring.Save.
Suite и компоненты сохраняются без изменений; для proxy-репозитория Save отдаёт подписи upstream как есть, поэтому существующие signed-by-ключи (например, ключ Debian) продолжают работать.
Устранение неполадок
Проверка Release
В ответе — поля Suite, Components, Architectures и секция SHA256 со ссылками на Packages-индексы.
Проверка индекса Packages
Если пакет загружен, но отсутствует в индексе — подождите несколько секунд (индексация асинхронная) либо выполните rebuild-index.
