Работа с 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 отдельной строкой.
Принудительная перегенерация индексов
Astra Linux
Astra Linux использует APT, а её репозитории устроены так же, как репозитории Debian. Поэтому для Astra Linux подходит обычный Debian proxy-репозиторий — отдельная настройка не нужна.
У Astra Linux несколько репозиториев (main, update, base, extended), и у каждого свой адрес. Создайте отдельный proxy-репозиторий для каждого нужного адреса:
На клиенте замените в /etc/apt/sources.list адрес репозитория на адрес Save, а suite и компоненты оставьте как были:
Логин и пароль задаются так же, как для Debian, — в /etc/apt/auth.conf.d/save.conf. Save отдаёт подписи upstream без изменений, поэтому ключи Astra Linux, которые уже установлены в системе, продолжают работать — [trusted=yes] не нужен.
Адреса, suite и компоненты для вашей версии Astra Linux удобнее всего взять из /etc/apt/sources.list уже настроенной машины.
Миграция URL репозитория
Сценарий использования: миграция APT-репозитория с Nexus / Artifactory на CodeScoring.Save.
Suite и компоненты сохраняются без изменений; для proxy-репозитория Save отдаёт подписи upstream как есть, поэтому существующие signed-by-ключи (например, ключ Debian) продолжают работать.
Устранение неполадок
Проверка Release
В ответе — поля Suite, Components, Architectures и секция SHA256 со ссылками на Packages-индексы.
Проверка индекса Packages
Если пакет загружен, но отсутствует в индексе — подождите несколько секунд (индексация асинхронная) либо выполните rebuild-index.
