Shelly, самостоятельный пакетный менеджер для Arch Linux, вышел в версии 3.1 с серьёзным расширением возможностей для AUR. Теперь он умеет собирать пакеты Arch напрямую из PKGBUILD без вызова makepkg.

Для тех, кто не знаком с проектом: Shelly не очередная обёртка над Pacman. Это самостоятельный пакетный менеджер, построенный на libalpm, той же библиотеке управления пакетами, что использует сам Pacman. Shelly сам обрабатывает транзакции пакетов, разрешение зависимостей, пакеты из репозиториев и операции с AUR. Он доступен в виде интерфейса командной строки и GTK-приложения.

До сих пор важная часть работы с AUR зависела от внешнего инструмента Arch. Shelly находил пакеты AUR, разрешал зависимости, показывал их пользователям для проверки и устанавливал, но фактическое выполнение PKGBUILD передавал makepkg. В Shelly 3.1 это изменилось.

В новом выпуске появился встроенный сборщик пакетов в составе библиотеки управления пакетами Shelly. Теперь Shelly сам управляет всем процессом сборки: от проверки PKGBUILD до создания готового архива пакета, совместимого с pacman.

Новая функция доступна через команду shelly build. Достаточно запустить её в каталоге с PKGBUILD, чтобы начать сборку: shelly build. Пользователи также могут указать Shelly путь к PKGBUILD в другом месте: shelly build /path/to/PKGBUILD.

Если зависимостей не хватает, новая опция --sync-deps позволяет Shelly разрешить и установить их перед началом сборки: shelly build --sync-deps /path/to/PKGBUILD.

Shelly 3.1 Arch Linux Package Manager
Shelly 3.1 Arch Linux Package Manager

Внутри Shelly теперь сам обрабатывает обычный жизненный цикл PKGBUILD. Он разбирает инструкции сборки, проверяет связанные файлы, скачивает и проверяет исходники, запускает этапы сборки, такие как prepare(), build(), check() и package(), создаёт необходимые метаданные и формирует архив пакета, а также может подписать его. Полученные пакеты остаются стандартными пакетами Arch Linux.

Сборщик также поддерживает split-пакеты, архитектурно-зависимые зависимости и исходники, Git-источники, контрольные суммы, подписи пакетов, динамические версии пакетов, переименованные исходники и многие другие возможности PKGBUILD, которые часто встречаются в AUR.

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

В Shelly 3.1 также появилась необязательная изоляция файловой системы на основе Landlock для выполнения PKGBUILD. Если она включена, скрипты сборки пакетов получают доступ к каталогу сборки и нужным системным путям, но не могут свободно обращаться к остальным частям домашнего каталога пользователя. Функция необязательна и по умолчанию отключена.

Обработка зависимостей также улучшилась. С опцией --sync-deps пакетный менеджер Shelly теперь сам разрешает недостающие зависимости, а не передаёт эту задачу Pacman. Это значит, что Shelly может устанавливать пакеты из обычных репозиториев Arch, а также находить и собирать зависимости, доступные только в AUR.

Помимо нового сборщика пакетов, выпуск добавляет run0 как ещё один поддерживаемый механизм повышения привилегий. Также улучшены отчёты о транзакциях, автодополнение командной оболочки, восстановление кэша пакетов, хуки, обработка HTTP, инициализация TLS и поддержка AppImage.

Подробнее можно посмотреть в списке изменений Shelly 3.1.