Доступний пакетний менеджер GNU Guix 1.4 та дистрибутив на його основі

Відбувся реліз пакетного менеджера GNU Guix 1.4 та побудованого на його основі дистрибутива GNU/Linux. Для завантаження сформовані образи для встановлення на USB Flash (814 МБ) та використання у системах віртуалізації (1.1 ГБ). Підтримується робота на архітектурах i686, x86_64, Power9, armv7 та aarch64.

Дистрибутив допускає встановлення як як відокремлену ОС в системах віртуалізації, в контейнерах і на звичайному устаткуванні, так і запуск у вже встановлених дистрибутивах GNU/Linux, виступаючи в ролі платформи для розгортання додатків. Користувачеві надаються такі функції, як облік залежностей, повторювані зборки, робота без root, відкат на минулі версії у разі проблем, керування конфігурацією, клонування оточень (створення точної копії програмного оточення на інших комп'ютерах) тощо.

Основні нововведення:

  • Поліпшено керування програмними оточеннями. На зміну команді "guix environment" прийшла нова команда "guix shell", яка дозволяє не тільки формувати складальні оточення для розробників, але й використовуватися оточення для ознайомлення з програмами без відображення у профілі та без виконання "guix install". Наприклад, для завантаження та запуску гри supertuxkart можна виконати "guix shell supertuxkart - supertuxkart". Після завантаження пакет буде збережено в кеші і наступний запуск не вимагатиме його повторного вилучення.

    Для спрощення формувань оточень для розробників у «guix shell» надано підтримку файлів guix.scm і manifest.scm з описом складу оточення (для генерації файлів може використовуватися опція «—export-manifest»). Для створення контейнерів, у яких емулюється класична ієрархія системних каталогів, у «guix shell» запропоновані опції «container — emulate-fhs».

  • Додано команду «guix home» для керування домашнім оточенням. Guix дозволяє визначити всі компоненти домашнього оточення, включаючи пакети, сервіси та файли, що починаються з точки. За допомогою команди guix home екземпляри описаного домашнього оточення можуть бути відтворені в каталозі $HOME або в контейнері, наприклад, для перенесення свого оточення на новий комп'ютер.
  • До команди "guix pack" додано опцію "-f deb" для створення окремих deb-пакетів, які можуть бути встановлені в Debian.
  • Для створення різних типів системних образів (raw, QCOW2, ISO8660 CD/DVD, Docker та WSL2) запропоновано універсальну команду «guix system image», що дозволяє визначити тип сховища, розділи та операційну систему для створюваного образу.
  • У команди для збирання пакетів додано опцію «—tune», що дозволяє вказати мікроархітектуру процесора, для якої будуть включені специфічні оптимізації (наприклад, на нових CPU AMD та Intel можуть бути задіяні SIMD-інструкції AVX-512).
  • В інсталяторі реалізовано механізм для автоматичного збереження важливої ​​налагоджувальної інформації у разі аварійного завершення установки.
  • Скорочено час запуску додатків завдяки задіянню кешу при динамічному зв'язуванні, що дозволяє скоротити звернення до системних викликів stat і open під час пошуку бібліотек.
  • Задіяно новий випуск системи ініціалізації GNU Shepherd 0.9, в якому реалізовано концепцію тимчасових сервісів (transient) та з'явилася можливість створення сервісів, що активуються при мережній активності (в стилі systemd socket activation).
  • Додано новий інтерфейс для завдання розміру розділу підкачки у конфігурації операційної системи.
  • Перероблено інтерфейс для завдання статичної мережевої конфігурації, в якому тепер пропонується декларативний аналог налаштувань у стилі команди IP.
  • Додано 15 нових системних сервісів, включаючи Jami, Samba, fail2ban та Gitile.
  • Запущено сайт packages.guix.gnu.org для навігації пакетами.
  • Оновлено версії програм у 6573 пакетах, додано 5311 нових пакетів. Серед іншого оновлено версії GNOME 42, Qt 6, GCC 12.2.0, Glibc 2.33, Xfce 4.16, Linux-libre 6.0.10, LibreOffice 7.4.3.2, Emacs 28.2. Вилучено понад 500 пакетів, які використовують Python 2.

Доступний пакетний менеджер GNU Guix 1.4 та дистрибутив на його основі

Нагадаємо, що пакетний менеджер GNU Guix заснований на напрацюваннях проекту Nix і крім типових функцій управління пакетами підтримує такі можливості, як виконання транзакційних оновлень, можливість відкату оновлень, робота без отримання привілеїв суперкористувача, підтримка прив'язаних до окремих користувачів профілів, можливість одночасної установки кількох версій однієї програми, засоби прибирання сміття (виявлення та видалення версій пакетів, що не використовуються). Для визначення сценаріїв складання додатків та правил формування пакетів пропонується використовувати спеціалізовану високорівневу предметно-орієнтовану мову та компоненти Guile Scheme API, що дозволяють виконувати всі операції з керування пакетами функціональною мовою програмування Scheme.

Підтримується можливість використання пакетів, підготовлених для пакетного менеджера Nix та розміщених у репозиторії Nixpkgs. Крім операцій із пакетами можливе створення сценаріїв керувати конфігурацією додатків. При збиранні пакета автоматично завантажуються і збираються всі пов'язані з ним залежності. Можливе як завантаження готових бінарних пакетів з репозиторію, так і складання вихідних текстів з усіма залежностями. Реалізовано кошти для підтримки версій встановлених програм у актуальному стані через організацію встановлення оновлень із зовнішнього репозиторію.

Складальне оточення для пакетів формується у вигляді контейнера, що містить всі необхідні для додатків компоненти, що дозволяє сформувати набір пакетів, здатний працювати без огляду на склад базового системного оточення дистрибутива, в якому Guix використовується в якості надбудови. Між пакетами Guix можливе визначення залежностей, для пошуку наявності вже встановлених залежностей використовується сканування хеш-ідентифікаторів в директорії встановлених пакетів. Пакети встановлюються в окреме дерево директорій або піддиректорію в каталозі користувача, що дозволяє забезпечити його паралельне співіснування з іншими пакетними менеджерами та забезпечити широкий спектр існуючих дистрибутивів. Наприклад, пакет встановлюється як /nix/store/452a5978f3b1b426064a2b64a0c6f41-firefox-108.0.1/, де «452a59…» є унікальним ідентифікатором пакета, який використовується для контролю залежностей.

Дистрибутив включає лише вільні компоненти та поставляється з ядром GNU Linux-Libre, очищеним від невільних елементів бінарних прошивок. Для збирання застосовується GCC 12.2. Як система ініціалізації використовується сервісний менеджер GNU Shepherd (колишній dmd), що розвивається як альтернатива SysV-init з підтримкою залежностей. Керуючий демон та утиліти Shepherd написані мовою Guile (одна з реалізацій мови Scheme), яка також використовується і для визначення параметрів запуску сервісів. Базовий образ підтримує роботу в консольному режимі, але для встановлення підготовлено 20526 готових пакетів, серед яких і компоненти графічного стека на базі X.Org, віконні менеджери dwm та ratpoison, робочі столи GNOME та Xfce, а також добірка графічних програм.

Джерело: opennet.ru

Додати коментар або відгук