Пакеты, репозитории, установка программ
Общая идея:
- Свободное лицензирование
- ⇒ пакеты
- Открытая разработка
- ⇒ доработанные пакеты
- Доступность, в т. ч. коммуникаций
- ⇒ обновления
- Информационно-вычислительные ресурсы сообщества
- ⇒ совместимость, в т. ч глобальная
Пакет
- FHS ⇒ архив, распаковка
- + список файлов/контрольная сумма/назначение
- + сценарии при установке/удалении
- события: установка, (Debian: настройка), удаление
- до/после
+ стандартные сценарии (триггеры)
- + зависимости (что это такое)
- пакет → пакет
- метапакеты
- пакет → файл
- пакет → виртуальный пакет / сущность
- Provides
- Автогенератор зависимостей
- .so
- python, perl, ...
- сценарии на sh (запуск бинарников)
вообще /usr/lib/rpm/*req*
- пакет → пакет
- + конфликты/альтернативы
Установщик пакетов
Пример: rpm
- Установка из файла / информация / удаление
- Отслеживание зависимостей и конфликтов
- Обновление
Отступление о месте применения триггеров
- man / info
- .so
- desktop-файлы
- типы mime
вообще /usr/lib/rpm/*trigger
Достоинства и недостатки пакетов
- + Повторное использование
- ⇒ исправление ошибок
- + объём
- +/- единственность версий
- +/- возможность/необходимость совместимости
- - дерево зависимостей
- напр, Debian: 3 разных степени
- - синхронизация (проприетарщина, заброшенные проекты)
- ... что ещё?
Репозиторий
(См. выше о возможностях)
- Сборник
- Проверка на совместимость
- unmets
- символы в библиотеках
- файловые конфликты
- тестовая установка
- Изолированная сборка
- ⇒ воспроизводимая сборка
- Оповещение и групповые задания
Пакетный диспетчер
Пример: apt
- Построение индексов всех репозиториев
- Определение дерева зависимостей
- Вычисление списка обновлений
- Доставка
- Вызов установщика
Установка не из репозитория
Общая проблема: безопасность / надёжность?
- Чужой пакет (? обновление / не тестировался)
- Чужой бинарник (? зависимости, их версии)
- Чужой дистрибутив (? разноверсица)
- appimage
- flatpak
- ...
- «инсталлятор»… ох…
- Программа на Java или на скриптовом языке
Отдельная тема: внутренние системы распространения:
Плагины / модули больших программ (Firefiox / NetBeans / TexLive / ... )
- Модули скриптовых языков (Python/Perl/Ruby/whatever)
Отдельная тема: виртуалки, эмуляторы и приравненные к ним (не успеем точно)