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

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

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

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

  • Додано нову команду «guix deploy», призначену для розгортання разом начинки кількох комп'ютерів, наприклад, нових оточень у VPS або віддалених систем, доступних SSH.
  • Авторам сторонніх репозиторіїв пакетів (каналів) надано кошти для написання повідомлень новин, які користувач може прочитати при виконанні команди «guix pull -news».
  • Додано команду «guix system describe», яка дає можливість при розгортанні оцінити зміни між двома різними екземплярами системи.
  • До команди «guix pack» додано підтримку генерації образів для Singularity та Docker.
  • Додано команду «guix time-machine», що дозволяє відкотитися до будь-якого випуску пакета, збереженого в архіві Програмне забезпечення спадщини.
  • У "guix system" додана опція "-target", що надає часткову підтримку крос-компіляції;
  • Забезпечено виконання Guix із використанням Хитрість 3що позитивно відбивається на продуктивності.
  • Граф залежностей пакетів обмежений скороченим набором бінарних вихідних компонентів збирання (seed), що є великим кроком до реалізації бутстрепінгу (bootstrap), що повністю перевіряється.
  • Реалізовано фреймворк для автоматизованого тестування графічного інсталятора. Інсталятор тепер збирається в системі безперервної інтеграції та тестується у різних конфігураціях (шифрований та звичайний кореневий розділ, установка з робочими столами тощо).
  • Додано складальні системи для Node.js, Julia та Qt, які спрощують написання пакетів для пов'язаних з цими проектами додатків.
  • Додані нові системні сервіси auditd, fontconfig-file-system, getmail, gnome-keyring, kernel-module-loader,
    knot-resolver, mumi, nfs, nftables, nix, pagekite, pam-mount, patchwork,
    polkit-wheel, provenance, pulseaudio, sane, singularity, usb-modeswitch

  • Оновлено версії програм у 3368 пакетах, додано 3514 нових пакетів. У тому числі оновлено версії xfce 4.14.0, gnome 3.32.2, mate 1.24.0, xorg-server 1.20.7, bash 5.0.7, binutils 2.32, cups 2.3.1, emacs 26.3, enlightenment 0.23.1.
    gcc 9.3.0, gimp 2.10.18, glibc 2.29,
    gnupg 2.2.20, go 1.13.9, guile 2.2.7,
    icecat 68.7.0-guix0-preview1, icedtea 3.7.0,
    libreoffice 6.4.2.2, linux-libre 5.4.31, , openjdk 12.33, perl 5.30.0, python 3.7.4,
    rust 1.39.0.

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

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

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

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

Джерело: opennet.ru

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