|
После более трёх лет разработки состоялся релиз пакетного менеджера GNU Guix 1.5 и построенного на его основе дистрибутива GNU/Linux - Guix System. В дальнейшем новые релизы GNU Guix решено выпускать раз в год. Для загрузки сформированы образы для установки на USB Flash (972 МБ) и использования в системах виртуализации (1.4 ГБ). Поддерживается работа на архитектурах i686, x86_64, Power9, armv7, riscv64 и aarch64.
Дистрибутив допускает установку как в качестве обособленной ОС в системах виртуализации, в контейнерах и на обычном оборудовании, так и запуск в уже установленных дистрибутивах GNU/Linux, выступая в роли платформы для развёртывания приложений. Пользователю предоставляются такие функции, как учёт зависимостей, воспроизводимая сборка, работа без root, откат на прошлые версии в случае проблем, управление конфигурацией и клонирование окружений (создание точной копии программного окружения на других компьютерах).
Основные новшества:
- Добавлена экспериментальная поддержка ядра GNU Hurd (x86_64-gnu). В инсталлятор добавлена опция для использования Hurd вместо ядра Linux.
- Добавлена поддержка архитектуры RISC-V (riscv64-linux).
- Сеанс GNOME обновлён до выпуска GNOME 46 (в прошлом релизе поставлялся GNOME 42) и переведён на использование по умолчанию Wayland. Расширена модульность сервиса gnome-desktop-service-type, в котором теперь можно настраивать список устанавливаемых по умолчанию приложений GNOME.
- Добавлен новый тип сервисов plasma-desktop-service-type для формирования окружения со средой рабочего стола KDE Plasma 6.5.
- Предоставлена возможность запуска фонового процесса Guix без привилегий root. При установке в дистрибутивах, отличных Guix System, по умолчанию задействован режим работы без прав root (rootless). В существующих установках данный режим можно активировать выставлением
"(privileged? #f)" в guix-configuration. Режим реализован с использованием пространства имён идентификаторов пользователей (user namespace) и профилей AppArmor.
- В команду "guix graph" добавлены бэкенды для GraphML и CycloneDX JSON, что позволяет использовать её для генерации полноценных SBOM (Software Bill of Material).
- В команду "guix shell" добавлены опции "--nesting" для использования Guix в контейнере и "--emulate-fhs" для запуска приложений с использованием структуры файловой системы, соответствующей спецификации FHS (Filesystem Hierarchy Standard).
- В команду "guix pack" добавлены бэкенды для создания пакетов в форматах RPM и AppImages, которые можно использовать в других дистрибутивах без Guix.
- Реализована команда "guix locate" для поиска пакетов, в которых присутствует указанный файл.
- Задействован новый выпуск системы инициализации GNU Shepherd 1.0, в котором появилась поддержка сервисов, периодически запускающих команды или код на языке Scheme по указанному расписанию. Добавлена возможность перезапуска ядра Linux с использованием механизма kexec. Реализованы новые сервисы log-rotation (ротация и удаление устаревших логов), system-log (замена syslogd), timer (запуск команд в указанное время) и transient (запуска команд в фоне). В Guix сервисы system-log и log-rotation задействованы вместо syslogd и
Rottlog.
- Реализована полная поддержка раскрутки (bootstrap) компиляторов Zig и Mono из исходного кода.
- Набор "setuid-programs" заменён на "privileged-programs" в спецификации "operating-system" (вместо suid-флага для получения привилегий задействованы Linux capabilities).
- Добавлено около 40 новых системных сервисов, среди которых Forgejo Runner, RabbitMQ, iwd и dhcpcd.
- Обновлены версии программ в 8911 пакетах, добавлено 12525 новых пакетов. Среди прочего обновлены версии GNOME 46.10, KDE Plasma 6.5, linux-libre 6.17.12, MATE 1.28.2, Xfce 4.20.0, lxde 0.99.3, xorg-server 21.1.21, GCC 15.2.0, LLVM 21.1.8, GIMP 3.0.4, glibc 2.41, go 1.25.3, Librewolf 140, icecat 140.6.0-gnu1 (firefox), icedtea 3.19.0, inkscape 1.3.2, julia 1.8.5, libreoffice 25.2.5.2, openjdk 25, perl 5.36.0, python 3.11.14, racket 8.18, rust 1.85.1, r 4.5.2,
sbcl 2.5.8.
Напомним, что пакетный менеджер GNU Guix основан на наработках проекта Nix и кроме типичных функций управления пакетами поддерживает такие возможности, как выполнение транзакционных обновлений, возможность отката обновлений, работа без получения привилегий суперпользователя, поддержка привязанных к отдельным пользователям профилей, возможность одновременной установки нескольких версий одной программы, средства уборки мусора (выявление и удаление неиспользуемых версий пакетов). Для определения сценариев сборки приложений и правил формирования пакетов предлагается использовать специализированный высокоуровневый предметно-ориентированный язык и компоненты Guile Scheme API, позволяющие выполнять все операции по управлению пакетами на функциональном языке программирования Scheme.
Поддерживается возможность использования пакетов, подготовленных для пакетного менеджера Nix и размещённых в репозитории
Nixpkgs. Кроме операций с пакетами возможно создание сценариев для управления конфигурацией приложений. При сборке пакета автоматически загружаются и собираются все связанные с ним зависимости. Возможна как загрузка готовых бинарных пакетов из репозитория, так и сборка из исходных текстов со всеми зависимостями. Реализованы средства для поддержания версий установленных программ в актуальном состоянии через организацию установки обновлений из внешнего репозитория.
Сборочное окружение для пакетов формируется в виде контейнера, содержащего все необходимые для работы приложений компоненты, что позволяет сформировать набор пакетов, способный работать без оглядки на состав базового системного окружения дистрибутива, в котором Guix используется в качестве надстройки. Между пакетами Guix возможно определение зависимостей, при этом для поиска наличия уже установленных зависимостей используется сканирование хэшей-идентификаторов в директории установленных пакетов. Пакеты устанавливаются в отдельное дерево директорий или поддиректорию в каталоге пользователя, что позволяет обеспечить его параллельное сосуществование с другими пакетными менеджерами и обеспечить поддержку различных дистрибутивов. Например, пакет устанавливается как /nix/store/452a4978f3b1b428064a2b64a0c6f41-firefox-147.0.1/, где "452a49..." является уникальным идентификатором пакета, используемым для контроля зависимостей.
Дистрибутив включает только свободные компоненты и поставляется с ядром GNU Linux-Libre, очищенным от несвободных элементов бинарных прошивок. Для сборки применяется GCC 15.2. В качестве системы инициализации используется сервисный менеджер GNU Shepherd (бывший dmd), развиваемый как альтернатива SysV-init с поддержкой зависимостей. Управляющий демон и утилиты Shepherd написаны на языке Guile (одна из реализаций языка Scheme), который также используется и для определения параметров запуска сервисов. Базовый образ поддерживает работу в консольном режиме, но для установки подготовлено 29932 готовых пакетов, среди которых и компоненты графического стека, оконные и композитные менеджеры, рабочие столы GNOME, KDE и Xfce, а также подборка графических приложений.
|