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

Stapler v0.2.0

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

Выпущена версия 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)