Доступен пакетный менеджер 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 основан на наработках проекта 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, а также подборка графических приложений.

Источник: http://www.opennet.ru/opennews/art.shtml?num=58358