[devel] Использования зеркал хранилищ пакетов

Rx rx1513 на altlinux.org
Пн Июн 22 16:29:22 MSK 2026


Привет!

06.2026 20:59, Vladimir Romanov пишет:
>
> Всем привет. Прочитал новость про зеркала всяческих пакетных сайтов от 
> gitverse (https://gitverse.ru/docs/artifactory/registry-mirrors/): 
> Docker Hub, Maven Central, NPM, PyPI, Go Proxy, Crates.
>
> Хотел бы вынести на обсуждение, может стоит ли оверрайдить провайдеров 
> в пакетах python3(pip), cargo, go и т.д.? 

Есть пара вопросов:

 1. Какую проблему это решает? Чем это отличается от подключения напрямую?
 2. На ком лежит отвественность за сопровождение зеркала? Кого винить в
    случае, если зеркало будет содержать скомпрометированные зависимости?
 3. Предоставляет ли подобный механизм возможность исправления
    определённых зависимостей в случае обнаружения уязвимостей или
    проблем архитектуры не учитывающих особенностей дистрибутива?
 4. По какому принципу зависимости должны попадать/попадают в зеркало?
    Например для Rust некоторые зависимости могут располагаться вне
    crates.io
    <https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#specifying-dependencies-from-other-registries>,
    соотвественно зеркало для crates.io не решает проблему полностью.

На мой взгляд у вендоринга (по опыту сопровождения Rust пакетов) 
следующие проблемы:

 1. Раздувание srpm и gear. Многие пакеты дублируют одни и те же
    зависимости; многие пакеты, даже самые простые, могут содержать под
    300 зависимостей, что в сумме может на порядок превышать размер
    исходников собираемого пакета.
 2. Отсутсвие механизма исправления зависимости для всех пакетов которые
    её используют. В случае если зависимость получает исправление
    безопасности или критической ошибки, попадание исправления в пакет
    зависит напрямую от заинтересованности мейнтейнера копаться во всех
    зависимостях.

Автоматизация загрузки зависимостей/вендоринга на мой взгляд не является 
проблемой (по крайней мере для Rust), так как уже существует как минимум 
4 различных решения этой проблемы, со своими плюсами и минусами.

Решением обеих проблем является перенос зависимостей в собственное общее 
пространство:

Либо пространство пакетов, например через сборку noarch пакетов (подход 
Fedora для Rust 
<https://docs.fedoraproject.org/en-US/packaging-guidelines/Rust/>), либо 
пространство собственных зеркал.

Первый подход плох тем, что для него нужно создавать систему 
автоматизации, потому что непонятно у кого есть свободное время на 
упаковку 20000+ пакетов со всеми флагами и фичами, и засорением 
репозитория пакетами, которые непредставляют почти никакой пользы для 
пользователя.

Второй требует разработку новой инфраструктуры и правил эксплутации .

> Если с питоном можно просто ставить необходимые модули из репозитория, 
> то с go/rust/npm всё сложнее.
Для Rust можно адаптировать подход из Fedora. Если не ошибаюсь там есть 
политики и для других языков.
----------- следующая часть -----------
Вложение в формате HTML было удалено...
URL: <http://lists.altlinux.org/pipermail/devel/attachments/20260622/eb0be1f0/attachment.html>


Подробная информация о списке рассылки Devel