Перейти к основному содержимому

Stapler v0.0.29

· 4 мин. чтения

Выпущена версия Stapler v0.0.29.

Коротко (tl;dr)

  • Возможность отключения Firejail для приложений
  • Автоматическая очистка кэша
  • Улучшенная команда поиска с поддержкой CEL-синтаксиса
  • Новые команды для управления репозиториями
  • Новое: Система экспериментальных функций в Staplerfile (SFE)
  • Экспериментальная поддержка новых форматов архивов

Что нового

Гибкое управление Firejail

Теперь можно отключать Firejail как для новых, так и для уже установленных приложений. Это пригодится, если Firejail конфликтует с окружением или Firejail-профиль не подходит.

Для новых приложений используйте параметр firejailExclude:

stplr config set firejailExclude 'repo/*,repo2/pkg' # отключить для конкретных пакетов
stplr config set firejailExclude '*' # отключить для всех пакетов

Для установленных приложений отредактируйте конфигурационные файлы в /etc/stplr/firejailed/*:

$ cat /etc/stplr/firejailed/_usr_bin_yandex-browser-stable
# Включить подробный вывод (убирает --quiet из опций firejail)
#STPLRPKG_FIREJAIL_VERBOSE=1
# Отключить firejail
#STPLRPKG_FIREJAIL_DISABLE=1

Умная работа с кэшем

Раньше кэш мог разрастаться и требовал ручной очистки через stplr fix. Система кэширования была полностью переработана с добавлением автоматической очистки. Теперь stplr сам следит за своим «порядком», хотя команда stplr fix по-прежнему доступна.

Улучшенный поиск пакетов

Команда stplr search стала мощнее и удобнее!

Быстрый поиск по имени:

$ stplr search yandex
aides/yandex-browser-stable 25.12.1.1217-1
aides/yandex-disk 0.1.6.1080-3
aides/yandex-music 5.83.0-1

Расширенный поиск с CEL-синтаксисом:

$ stplr search --query "appstream_app_id == 'com.visualstudio.code' && repository == 'aides'"
aides/visual-studio-code 1.108.1-1

$ stplr search --query "name.contains('app') || desc.contains('декс')"
aides/apple-emoji-linux 18.4-1
aides/singularityapp 12.0.3-2
aides/yandex-browser-stable 25.12.1.1217-1
aides/yandex-music 5.83.0-1

Новая команда: repo import

Импортируйте репозитории из файлов конфигурации stapler-repo.toml. Команда автоматически загружает содержимое репозитория после импорта (как и repo add).

Примеры использования:

stplr repo import stplr-repo /path/to/stapler-repo.toml           # импорт из файла
cat stapler-repo.toml | stplr repo import stplr-repo - # импорт из stdin
stplr repo import stplr-repo stapler-repo.toml --no-pull # импорт без загрузки
stplr repo import stplr-repo stapler-repo.toml --ignore-existing # пропустить существующие

Новая команда: repo list

Простой способ посмотреть список подключенных репозиториев.

Примеры:

stplr repo list
stplr repo list --json
stplr repo list --format $'{{ .Name }}::{{ .URL }}\n'

Staplerfile Experiments (SFE)

В этой версии представлена новая система Staplerfile Experiments (SFE) — механизм для безопасного тестирования новых возможностей в Staplerfile перед тем, как они станут стандартным поведением Stapler.

Зачем нужны эксперименты?

SFE позволяет:

  • Протестировать новые функции заранее и дать обратную связь
  • Подготовиться к изменениям до того, как они станут обязательными
  • Влиять на развитие Stapler, опробовав функции на своих сценариях использования

Как использовать?

Экспериментальные функции включаются в Staplerfile. Каждый эксперимент имеет уникальный идентификатор (например, sfe_249_new_extractor).

warning

Экспериментальные функции нестабильны и могут менять свое поведение до момента, пока не станут функциональностью по умолчанию. Используйте их на свой риск.

Подробнее в документации.

[SFE-249] New extractor for sources

Первый доступный эксперимент добавляет поддержку множества новых форматов архивов для sources.

Поддерживаемые форматы:

  • Tar-архивы: .tar, .tar.gz (.tgz), .tar.bz2 (.tbz, .tbz2), .tar.xz (.txz), .tar.lz (.tlz), .tar.z (.tz)
  • Сжатые файлы: .gz, .gzip, .bz2, .xz, .lz, .lzip, .lzma, .z, .br, .brotli, .zlib, .zst, .zstd, .lz4, .snappy, .sz, .s2, .zz
  • Пакеты: .deb, .rpm
  • Образы: .iso, .cpio, .cpio.gz, .cpgz
  • Архивы: .zip, .7z, .7z.001, .rar, .r00, .ar

Как включить эксперимент:

sfe_249_new_extractor=1

sources=(
"https://example.com/package.rpm"
)

package() {
# Содержимое RPM уже распаковано автоматически
cp -R usr bin etc $pkgdir/
}

Планы: В версии v0.0.31 этот эксперимент станет поведением по умолчанию. Рекомендуется протестировать его уже сейчас, чтобы убедиться, что ваши пакеты будут работать после обновления.

Подробнее в задаче SFE-249.

Другие улучшения и исправления

  • Исправлен вывод команды list при использовании опции --format (#208)
  • Добавлена блокировка для предотвращения конфликтов при параллельном выполнении команд (#254)
  • Исправлено удаление пакетов по полному имени ({reponame}/{pkgname}) в команде remove (#213)
  • Добавлен epm в качестве резервного пакетного менеджера (#211)
  • Добавлена возможность переопределения rootCmd при сборке (#257)

Рекомендации по обновлению

  • Попробуйте SFE-249, чтобы заранее подготовиться к предстоящим изменениям в v0.0.31
  • Обратите внимание: команды stplr list и stplr search изменили поведение — проверьте ваши скрипты, если они используют эти команды