Репозиторий и сообщество
Пакеты (короткое повторение)
Пакет:
- Комплект файлов (архив)
 - Один 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)
 
Инварианты
Какие-то инварианты явно есть, но для их выявления надо посмотреть другие системы дистрибуции
- Кто пользователь дистрибутива?
 - Кто разработчик дистрибутива?
 - Кто разработчик компонентов?
 - Насколько и почему компоненты нуждаются в синхронезации?
 - Насколько часто и по какой причине нужна доставка?
 - Насколько сложен деплоймент и почему?
 - В чём заключается сопровождение?
 
