Менеджер пакетов Arch Linux Shelly 3.1 добавляет встроенную поддержку PKGBUILD
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.

Менеджер пакетов Arch Linux Shelly 3.1
Новая функциональность доступна через команду shelly build. Чтобы начать сборку, достаточно запустить ее в каталоге, содержащем PKGBUILD: shelly build. Кроме того, пользователи могут указать Shelly на PKGBUILD в другом месте: shelly build /path/to/PKGBUILD.
А если отсутствуют зависимости, новая опция --sync-deps позволяет Shelly разрешить и установить их перед началом сборки: shelly build --sync-deps /path/to/PKGBUILD.
Внутри Shelly теперь самостоятельно обрабатывает обычный жизненный цикл PKGBUILD. Она анализирует инструкции по сборке, просматривает соответствующие файлы, загружает и проверяет исходные коды, выполняет этапы сборки, такие как prepare(), build(), check() и package(), генерирует необходимые метаданные, создает архив пакета и при необходимости подписывает его. Полученные пакеты остаются стандартными пакетами Arch Linux.
Конструктор также поддерживает разделенные пакеты, зависимости и исходные файлы для конкретных архитектур, исходные файлы 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.
Редактор: AndreyEx