Оновлення Shelly 3.1: новий менеджер пакетів для Arch Linux

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

Що таке Shelly?

Для тих, хто не знайомий, Shelly не є черговим обгортанням навколо Pacman. Це власний менеджер пакетів, створений на основі libalpm, тієї ж самої бібліотеки управління пакетами, що використовується Pacman. Shelly самостійно обробляє транзакції пакетів, вирішення залежностей, пакети з репозиторіїв і процеси AUR, доступний через командний інтерфейс і програму GTK.

Основні нововведення Shelly 3.1

До цього часу одна важлива частина процесу 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 тепер самостійно обробляє звичний життєвий цикл 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.

Крім нового збирача пакетів, реліз включає new run0 як інший підтримуваний бекенд підвищення привілеїв і містить поліпшення звітності про транзакції, завершення оболонки, відновлення кешу пакетів, хуки, обробку HTTP, ініціалізацію TLS і підтримку AppImage.

Для додаткових деталей зверніть увагу на changelog Shelly 3.1.