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

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

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

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

  • Реалізовано початкову підтримку архітектури POWER9 (powerpc64le-linux).
  • Надано можливість використання декларативного режиму розгортання, при якому замість серії команд guix install і guix remove запускається одна команда guix package —manifest=manifest.scm з визначенням у файлі manifest.scm всіх додатків, які потрібно встановити. Для генерації маніфесту на основі наявного профілю установки в команді "guix package" запропоновані опції "-export-manifest" і "-export-channels".
  • Додана опція трансформації пакетів «with-latest», корисна для тих, хто хоче мати найсвіжіші версії програм, навіть якщо для програми ще не сформований готовий пакет для Guix. Також додано опцію «—with-patch» для складання серії пакетів із застосуванням патча до одного або кількох з них.
  • У командах «guix» реалізовано виведення рекомендацій із пропозицією замін у разі друкарської помилки або наявності альтернативних підкоманд. $ guix package —export-manifests guix package: error: export-manifests: unrecognized option hint: Did you mean 'export-manifest'?
  • У "guix refresh" додано підтримку завантаження оновлень з хостингу SourceForge, а також режим generic-html для отримання оновлення з домашньої сторінки проекту.
  • Додано нову команду «guix import go» для рекурсивного імпорту пакетів мовою Go з урахуванням залежностей. У команді "guix import opam" реалізовано підтримку пакетів Coq. У «guix import crate» забезпечено облік семантичного версіонування як рекурсивної завантаження. Видалено команду "guix import nix".
  • Проведено оптимізацію встановлення попередньо зібраних бінарних пакетів (substitute) та прискорено роботу команди «guix system init».
  • До команди «guix environment» додано опцію «profile».
  • У guix-daemon додана опція «discover» для виявлення в локальній мережі серверів, що віддають зібрані бінарні пакети (substitute), використовуючи протоколи mDNS/DNS-SD. Для надсилання анонсів із серверів до команди «guix publish» додано опцію «-advertise».
  • Реалізовано можливість використання алгоритму Zstd для стиснення пакетів.
  • У режимі «verbosity=1» припинено виведення завантажуваних URL.
  • Замість підкоманд «disk-image» та «vm-image» запропоновано спільну команду «guix system image».
  • В образі дистрибутива для віртуальних машин додано підтримку протоколу SPICE.
  • У скрипт установки додано режим автоматичної інсталяції.
  • Добавлен сервис lvm-device-mapping для поддержки менеджера томов LVM (Linux Logical Volumne Manager).
  • Доданий режим "guix system image -t rock64-raw" для створення образів дистрибутива для плат Rock64.
  • У initrd за замовчуванням включено підтримку bcachefs.
  • У сервері друку CUPS за замовчуванням увімкнено сервіс «brlaser» для підтримки принтерів Brother.
  • Добавлены новые системные сервисы agate, cuirass-remote-worker, ipfs, keepalived, laminar, radicale, syncthing, transmission-daemon, wireguard, xorg-server.
  • Оновлено версії програм у 3100 пакетах, додано 2009 нових пакетів. У тому числі оновлено версії gcc 10.3.0, glibc 2.31, GNOME 3.34.5, gnupg 2.2.27, go 1.14.15, guile 3.0.5, icecat 78.10.0-guix0-preview1, icedtea 3.7.0. 1.0.2, julia 1.5.3, libreoffice 6.4.7.2, linux-libre 5.11.15, ocaml 4.11.1, octave 6.2.0, openjdk 14.0, python 3.8.2, racket 8.0, rust 1.51.0. sbcl 4.0.4, Xfce 2.1.3 та xorg-server 4.16.0.
  • Усунена вразливість CVE-2021-27851 у guix-daemon, що дозволяє локальному користувачеві підняти свої привілеї в системі. Проблема пов'язана з тим, що під час виконання команди "guix build" складальний каталог залишався доступним всім на запис і користувач міг створити жорстке посилання на файл, що належить користувачеві root і розміщений поза складальним каталогом, наприклад, "/etc/shadow". Якщо при складанні була вказана опція «-keep-failed», то у разі збою guix-daemon змінював власника для всього складального дерева на поточного користувача, включаючи жорсткі посилання.

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

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

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

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

Джерело: opennet.ru

Купити надійний хостинг для сайтів із захистом від DDoS, VPS VDS сервери 🔥 Купити надійний хостинг для сайтів із захистом від DDoS, VPS VDS сервери | ProHoster