Изолированная сборка
Эта лекция ALT-специфична, но иначе нормально собрать пакет не получится
В любом случае потребуются права root
Базовая статья:
Рабочее окружение ≠ сборочное
- Другая платформа
- Постоянная установка пакетов, а кто удалять будет?
- Безопасность: сборка — это запуск произвольных команд
⇒ Развернуть чистое сборочное окружение сообразно сборочным зависимостям в пакете, собрать пакет
- Независимость от платформы
- Невозможность повлиять на хост-систему
Варианты:
- Виртуалки
- Изоляция а-ля docker
- Что делать с root?
- Изоляция + fakeroot
Проблемы:
- Долгое развёртывание
- Сеть / терминалы / количество ядер / иная системно-зависимая информация
Hasher
Пакет: hasher
- Принципы работы:
chroot и прочие изолированные namespaces
Два новых пользователя — «rooter» и «builder»; один заменяет root, другой — обычного пользователя
- Ограничение прав на запись / чтение для пользователя
- Начало работы
- Пользователи и перелогин
- TMPFS и настройки
- Основные команды — init, install, run, shell
- Проброс сети, процессов и терминалов
Сборка пакета в hasher
Итак,
- Формально — из .src.rpm
- Сборка из окружения хост-системы: spec + исходники → src.rpm → hasher
проблема: установка инструментальных зависимостей в хост-систему (они могут быть странные)
- проблема: долгая пересборка при фиксах
- Сборка непосредственно в окружении hsh-install + hsh-install src.rpm → hsh-shell
проблема: установка инструментальных зависимостей в сборочное окружение (каких? а они там хорошо работают?)
проблема: не все установленные зависимости — сборочные (buildreq)
- последующая «чистовая» пересборка
Репозиторий, образующийся при сборке
Настройка и использование sourcses.list
Тип репозитория rpm-dir
- Пересборка и установка пакета из локального репозитория
(если успеем) genbasedir
Д/З
Установить и настроить hasher для вашего пользователя
TODO собрать пакет из простого исходника (пока не придумал)
