Stapler v0.2.0
Выпущена версия Stapler v0.2.0. В этой версии можно подменять источники пакета при сборке, песочница работает с полными диапазонами подчинённых uid/gid, появились сборки для aarch64. Также исправлен ряд ошибок.
Коротко (tl;dr)
- Флаг
--sourceдляstplr installиstplr build: подмена источников из Staplerfile на локальные файлы или URL - Песочница сборки отображает полные диапазоны подчинённых uid/gid, поэтому
chownвнутри сборки работает. - В релизах теперь публикуются сборки для arm64
- Ряд исправлений в песочнице, интерфейсе и работе Stapler
Что нового
Подмена источников
Теперь источники, указанные в Staplerfile, можно заменить при установке или сборке пакета — например, чтобы
собрать пакет из уже скачанного архива или проверить исправленную версию исходников, не правя сам скрипт.
Источник указывается по индексу (начиная с 0, в порядке следования в sources):
# заменить первый источник на локальный файл
stplr install pkg --source 0:/home/user/Downloads/foo.tar.gz
# заменить несколько источников сразу
stplr install pkg --source 0:./foo.deb --source 1:https://example.com/bar.zip
# то же самое при локальной сборке
stplr build -s ./Staplerfile --source 0:/home/user/src/custom.tar.gz
Заменённый файл сохраняется под тем же именем, что и исходный, поэтому prepare(), build() и package()
менять не нужно.
Контрольная сумма по умолчанию сверяется с указанной в Staplerfile. Если вы подставляете другой файл,
отключите проверку для заменённых источников:
stplr install pkg --source 0:/tmp/custom.tar.gz --ignore-overriden-source-checksum
Полные диапазоны uid/gid в песочнице сборки
Раньше в песочнице сборки отображался только один uid/gid. Из-за этого сборка падала, если внутри неё
нужно было сменить владельца файла — например, при распаковке архива через tar.
Теперь песочница отображает полные диапазоны подчинённых uid и gid из /etc/subuid и /etc/subgid.
Для сборки от root достаточно выполнить новую команду setup, которая выделит диапазоны пользователю
stapler-builder:
$ sudo stplr setup
--> Добавлен диапазон 100000-165535 в /etc/subuid для stapler-builder
--> Добавлен диапазон 100000-165535 в /etc/subgid для stapler-builder
При установке пакета stplr команда вызывается автоматически.
При сборке от обычного пользователя используются его собственные диапазоны и утилиты newuidmap/newgidmap.
Если их нет, сборка всё равно выполнится, но chown внутри песочницы работать не будет, о чём Stapler предупредит.
Сборки для aarch64
Помимо x86_64, к релизам теперь прикладывается архив для aarch64: stplr-0.2.0-linux-aarch64.tar.gz.
install.sh сам определяет архитектуру и сообщает, если сборки для неё нет. Раньше версия была зашита
в скрипт, теперь он ставит последнюю стабильную. Конкретную версию можно задать через STPLR_VERSION:
curl -fsSL get.stplr.dev | STPLR_VERSION=0.2.0 bash
Исправления
- Stapler выбирает пакетный менеджер дистрибутива по
IDиID_LIKEиз/etc/os-release, а не первый найденный вPATH. Раньше на ALT Linux с установленной игройpacmanвместоapt-getзапускалась игра (#482, #499) stplr list,stplr searchиstplr infoбольше не падают с ошибкойunable to open database file (14), если база данных ещё не создана (#420)stplr migrateбольше не создаёт базу данных, если её не было до миграции (#419)- Исправлено сравнение с
nullв CEL-запросахstplr search(#433) - Исправлена локализация описания из AppStream-метаданных (#439)
- Длинные строки при обновлении репозиториев теперь переносятся, а не обрезаются (#441)
- Песочница:
/tmpтеперь общий для перенаправлений оболочки и команд внутри контейнера (#421) - Песочница: каталог сокетов плагинов изолирован для каждого запуска (#424)
- При ошибке Stapler теперь завершается с ненулевым кодом возврата (#423)
- В архив
stplr supportдобавлена версия Stapler (#500) install.shпроверяет ОС и архитектуру перед установкой (#487)- Исправлена установка автодополнения для bash и zsh в
install.sh - Обновлены зависимости
⚠️ Важные изменения
- Для разработчиков, использующих Stapler как библиотеку:
dl.Downloadизgo.stplr.dev/stplr/pkg/dlтеперь возвращает(DownloadResult, error)вместоerror(#436)