Stapler v0.0.28
Выпущена версия Stapler v0.0.28.
В этом релизе мы продолжаем усиливать надёжность и предсказуемость Stapler: разделили вывод/логи, переписали песочницу на libcontainer, добавили инструменты для диагностики и расширили возможности формата Staplerfile.
Коротко (tl;dr)
- Переход на песочницу на основе libcontainer.
- Разделён вывод в консоль и логи (логи в systemd journal).
- Новое предупреждение при повышении привилегий (rootCmd).
- Добавлены команды
supportиmigrate. - Добавлено поле
report_urlвstapler-repo.toml. - Добавлены
appstream_app_idиappstream_metainfoвStaplerfile. - Новая опция
--no-suffixдляstplr build. - Исправлено несколько багов: fetch detached-коммитов, определение ALT-подобных дистрибутивов, проверка опциональных зависимостей, корректное завершение по Ctrl+C, версия в stdout.
- Подготовка к будущему D-Bus API (рефакторинг, интерфейсы).
Основные изменения
Переход песочницы на libcontainer
В этом релизе Stapler получил новый механизм изоляции — теперь вместо нашего старого самописного решения используется реализация на основе libcontainer. Это тот же фундамент, на котором строятся современные OCI-рантаймы, поэтому поведение стало более предсказуемым, а сам код — надёжнее и проще в сопровождении.
Для пользователя переход остаётся прозрачным: внешний runc не нужен, а системные требования не изменились.
Тем не менее, в отдельных нетривиальных сценариях работа с mounts, cgroups или capabilities может слегка отличаться от прежней версии. Мы не считаем это breaking change, но рекомендуем протестировать редкие, «хрупкие» сборки.
Технические детали
Ранее песочница была полностью самописной и строилась вокруг linux namespaces. С переходом на модель runc/libcontainer мы задействуем проверенную временем архитектуру из OCI-мирa. Это уменьшает количество низкоуровневого кода в Stapler, делает поведение ближе к стандартам, а безопасность — более предсказуемой.
Вывод и логирование
В этой версии мы серьёзно переработали то, как Stapler показывает информацию пользователю. Раньше почти весь вывод строился поверх структурированного лога, из-за чего CLI выглядел перегруженным техническими деталями, а гибкость отображения была сильно ограничена.
Теперь же вывод и логирование разделены:
- всё, что нужно пользователю, показывается в консоли в читаемом виде;
- технические сообщения и внутренние события записываются отдельно — в systemd journal, через
sd_journal(infoпо умолчанию).
Это позволило сделать интерфейс чище и понятнее, а диагностику — проще: все логи теперь доступны через journalctl, без лишнего шума в CLI.
Ниже можно увидеть разницу в выводе до и после обновления:
Предупреждение при повышении прав
Как можно было заметить из предыдущей демонстранции, теперь команды, требующие повышения привилегий, сопровождаются заметным жёлтым предупреждением:

Команда support
В версии 0.0.28 появилась команда для локального сбора диагностической информации:
stplr support
Она формирует архив stplr-support.tar.gz, содержащий сведения о системе, журналы работы stplr (включая записи из systemd journal), полезные файлы и прочие данные для анализа проблем.
При этом важно подчеркнуть: архив остаётся на вашей машине, ничего никуда не отправляется, никакой телеметрии нет. Это просто удобный способ подготовить данные для обращения за помощью.
Подробнее читайте в документации.
Команда migrate
Добавлена новая команда:
stplr migrate
Она пригодится при изменении форматов конфигурации и обновлении stplr.
Мейнтейнерам Stapler в репозиториях дистрибутивов рекомендуется добавлять вызов stplr migrate в postinstall для удобства пользователей.
Подробнее читайте в документации.
Поле report_url в stapler-repo.toml
Также в stapler-repo.toml стало доступно поле:
report_url = 'https://example.com/report?package={{ .BasePackageName }}'
Оно помогает формировать ссылки на баг-репорты:

Подробнее читайте в документации.
Новые поля в Staplerfile
Для интеграции с AppStream появились поля:
appstream_app_id="org.example.MyApp"
appstream_metainfo="org.example.MyApp.metainfo.xml"
Они позволяют передавать метаданные приложения в стандартном для AppStream формате.
Подробнее про appstream_app_id и appstream_metainfo читайте в документации.
Опция --no-suffix для stplr build
До этого Stapler автоматически добавлял к имени итогового пакета суффикс вроде:
<pkgname>+stplr-<repo>-1.0.0-1.x86_64
Теперь можно собирать артефакты без добавления +stplr-<repo>:
stplr build --no-suffix
Это делает Stapler удобнее для пользователей, которым нужно формировать «чистые» пакеты без дополнительного суффикса.
Улучшения и исправления
Эта версия включает набор практичных исправлений, которые повышают стабильность и совместимость Stapler:
- теперь корректно fetch-ятся detached-коммиты и коммиты вне веток;
- улучшено определение ALT-подобных — учитывается
ID_LIKE; - Stapler больше не предлагает устанавливать опциональные зависимости, если они уже есть в системе;
- устранены проблемы с завершением по
Ctrl+C— процессы завершаются корректно; - версия утилиты выводится в
stdout, что полезно для автоматизации.
Рефакторинг и подготовка к D-Bus API
В этой версии мы провели рефакторинг кода и заложили основу для D-Bus API, которое, скорее всего, появится в следующем релизе. D-Bus API позволит удобно создавать GUI-приложения для Stapler, чего пользователи давно ждали, и откроет новые возможности для визуальной работы с пакетами и сборкой.
Примечания по обновлению
- Переход на libcontainer прозрачен и дополнительных зависимостей не требует. В редких сценариях возможно слегка иное поведение песочницы, поэтому рекомендуется проверить нестандартные сборки.
- Если ваша автоматизация ожидала версию в
stderr, обновите скрипты — теперь она печатается вstdout.