Репозиторий и сообщество
Пакеты (короткое повторение)
Пакет:
- Комплект файлов (архив)
- Один upstream
- «неделимый» — делить не нужно или не выходит
- для одного назначения (библиотеки/devel-библиотеки/документация разработчика; библиотеки/бинарники)
- архитектурно зависим/независим (лучше не смешивать в больших объёмах)
Пакет — термин «пользователя дистрибутива», то есть деталь конструктора.
Свойства:
- Архив (FHS и наследники)
- Установка/удаление (регистрация/дерегистрация) — общесистемные действия
- Установочные сценарии
- pre/post, install/config (например, активация в системе, потоковое редактирование файлов)
- триггеры (общесистемные действия на основании свойств пакета)
- Установочные зависимости
- на другие пакеты
- на файлы
- на «что-то«:
- пакет явно предоставляет (provides) «что-то»
- другой пакет это требует (requires)
- Например, модули Python
- Конфликты и альтернативы
Установка/удаление — установщик пакетов (rpm, dpkg, …)
Отслеживание зависимостей — свойство пакета, но
- где все пакеты-то? в репозитории (-ях)
- построение и обсчёт дерева зависимостей?
- доставка?
- рекурсивная установка / удаление
- обновление
⇒ пакетный диспетчер (apt, yum, DNF, …)
Итого: пакеты и инструменты работы с ними обеспечивают Top half (сторону пользователя) задач дистрибуции:
- Доставка
- Деплоймент
- Сопровождение
окончание повторения
Репозиторий
- Top half-задачи:
- Хранит: пакеты и индексы
- хранилище для доставки
- несколько репозиториев ⇒ возможно сравнение версий, обновление
Bottom half дистрибуции:
- разработка
- согласование
Сам процесс разработки и специализированные ресурсы
Сборка пакета
- rpm и собирает тоже (такое легаси!)
- проверка соответствия дисциплине оформления пакета
- чистота спецификации (ненужные команды, архитектура не та, …)
- качество собранных бинарников (RPATH, недолинковка, …)
- установка в правильные каталоги
- …
- Изолированная сборка из указанного репозитория
развёртывание изолированной сборочной среды из «чистого репозитория»
- чем плоха сборка в хост-системе
- (ALT hasher: доказанное отсутствие влияния предыдущих сборок/хост-системы)
- только сборочные зависимости в окружении
- ALT hasher: возможность сброки «с нуля» в таком окружении:
- установка произвольных пакетов
- hsh-shell — «войти в окружение, работать там» (+всякие пробросы X11, сети и т. п.)
- ALT buildreq: автопоиск сборочных зависимостей
ALT findprovides/findreq — автопоиск установочных provides и зависимостей (библиотеки с версиями, пакеты, модули ЯП, …)
- ALT RPM setversion: список предоставляемых библиотекой имён в виде provides / список требуемых бинарником имён в виде requires, сравнение списков
- ⇒ сломннное ABI
если требуемое ABI не пересекается с изменённым, зависимость не сломалась
- ALT RPM setversion: список предоставляемых библиотекой имён в виде provides / список требуемых бинарником имён в виде requires, сравнение списков
- получившийся набор файлов — сам репозиторий!
Сборка многих пакетов в репозиторий
Т. н. «сборочница» — сборочный ресурс сообщества:
- на входе только исходные пакеты + пересборка в текущем окружении
- параллелизм
- проверка свойств одного пакета (install check например)
- Проверка свойств пакетов в репозитории (например, не ломает ли чьё-нибудь ABI, нет ли конфликтов по ABI, по файлам и т. п.)
проверка свойств репозитория:
- контроль символов (всех!) + контроль изменения ABI
- контроль unmets (неудовлетворённых зависимостей)
- пакеты помещаются в репозиторий только кластерами, не ломающими его целостность (один пакет, например, библиотека с изменениями в ABI, нарушает целостность, значит, в одном кластере должны быть все пострадавшие пакеты)
информационные ресурсы (типа http://altlinux.org , списки рассылки )
информационно-технологические ресурсы (типа http://webery.altlinux.org , bugzilla )
- тусовки (форумы, ВК, Telegram/Jabber)
Инварианты
Какие-то инварианты явно есть, но для их выявления надо посмотреть другие системы дистрибуции
- Кто пользователь дистрибутива?
- Кто разработчик дистрибутива?
- Кто разработчик компонентов?
- Насколько и почему компоненты нуждаются в синхронезации?
- Насколько часто и по какой причине нужна доставка?
- Насколько сложен деплоймент и почему?
- В чём заключается сопровождение?