Repology — мониторинг пакетных репозиториев (Дмитрий Маракасов, OSSDEVCONF-2022)
Материал из 0x1.tv
- Докладчик
- Дмитрий Маракасов
В докладе будет освещена история и основные возможности проекта Repology, ведущего мониторинг более 350 пакетных репозиториев с целью обнаружения новых релизов, координации работы мантейнеров пакетов и авторов ПО между собой, выявления уязвимых пакетов и пакетов, требующих обновления.
Будут затронуты встретившиеся на пути проекта сложности и их решения, вылившиеся в побочные проекты, как-то универсальная библиотека сравнения версий libversion и агрегатор метаданных о Python модулях PyPICache.
Содержание
Видео
Презентация
Thesis
В мире насчитывается несколько сотен независимых открытых пакетных систем, но исторически разработка большинства из них происходит в своеобразной изоляции, поскольку разница в форматах пакетов и рецептов сборки, организационных и идеологических решениях не способствует не только прямому обмену кодом, но даже сравнительному анализу пакетных баз. Тем не менее, значительная часть работы (к примеру, подготовка патчей и банальный мониторинг новых релизов и уязвимостей) многократно дублируется и кажется, что вся экосистема значительно выиграла бы, будь у мантейнеров быстрый доступ к конфигурациям аналогичных пакетов в других системах и возможность сравнения с ними, равно как и «online» информация по полноте и актуальности собственной пакетной базы.
В попытке проверить эту гипотезу появился проект Repology. Сервис работает уже более 5 лет и на данный момент собирает информацию из более чем 350 источников, включающих основные и дополнительные пакетные репозитории большинства Linux и
- BSD дистрибутивов, сторонние пакетные менеджеры других систем (MacOSX, Windows, Android, AIX, Solaris), коллекции
модулей языков программирования (PyPI, RubyGems, crates.io, CPAN и др.), а также новостные сайты и каталоги СПО.
Собранная информация приводится к единому формату, нормализуется и агрегируется до уровня upstream проектов, нивелируя разницу в том, как именно они опакечены в отдельных репозиториях. На уровне проекта становится возможным сравнение номеров версий с определением актуальных и, соответственно, версий, требующих обновления, а из этой информации — составление широкого набора выборок, отчётов, atom лент и графических информеров в срезах по отдельным проектам, мантейнерам и репозиториям. Собирается и другая информация, например, описания и ссылки на upstream, рецепты пакетов, логи сборки и патчи.
Проект решает задачи сразу нескольких заинтересованных сторон. Для мантейнеров пакетов Repology позволяет:
- Получать полную и актуальную информацию о новых релизах проектов, пакеты для которых они поддерживают (доступную, например, сразу как список требующих обновления пакетов для конкретного мантейнера, или как ленту сообщений о новых релизах), об обнаруженных уязвимостях и других проблемах.
- Выявлять недостающие пакеты для популярных (по наличию в других дистрибутивах) или новых проектов.
- Находить контакты коллег-мантейнеров из других дистрибутивов для консультаций, обмена опытом и информирования о проблемах.
- Искать готовые решения проблем, например, в виде патчей или комбинаций флагов сборки.
Для дистрибутивов/репозиториев в целом:
- Иметь статистику по полноте и актуальности пакетной базы.
- Своевременно получать информацию об обновлениях и уязвимостях по всем пакетам, возможно, экономя собственные ресурсы на создании локальных инструментов для этой цели.
- Использовать предоставляемые Repology API готовые графические информеры в собственной инфраструктуре.
Для авторов ПО:
- Иметь возможно полное представление обо всей downstream инфраструктуре: в каких дистрибутивах и системах опакечен
проект, под какие архитектуры собирается, с какими настройками и патчами, с какими версиями зависимостей и т. д.
- Поддерживать двустороннюю связь с мантейнерами пакетов, как помогая исправлять недочёты в пакетах, так и улучшая собственную систему сборки и документацию для упрощения развёртывания и эксплуатации.
- Использовать готовые графические информеры на страницах проекта, информируя пользователей о доступности и актуальности готовых пакетов.
На текущий момент поток обратной связи и статистика использования позволяют делать выводы о популярности и
востребованности сервиса, а для кого-то он даже стал незаменимым инструментом. Развитие проекта продолжается как в
сторону добавления новых возможностей (например, в планах добавить прямую поддержку VCS хостингов типа GitHub как
источника информации о новых релизах), так и в сторону улучшения удобства сайта.