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

Состоялся релиз пакетного менеджера GNU Guix 1.0 и построенного на его основе дистрибутива GuixSD GNU/Linux (Guix System Distribution). Значительная смена номера версии обусловлена завершением реализации всех целей, поставленных для формирования знакового релиза. Выпуск подвёл итог семи лет работы над проектом и признан готовым для повседневного использования. Для загрузки сформированы образы для установки на USB Flash (243 Мб)и использования в системах виртуализации (474 Мб). Поддерживается работа на архитектурах i686, x86_64, armv7 и aarch64.

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

Основные новшества:

  • Добавлен новый интерактивный инсталлятор, работающий в текстовом режиме; 0_1556830703.png
  • Подготовлен новый образ для виртуальных машин, пригодный как для ознакомления с дистрибутивом, так и для создания рабочих окружений для разработки;
  • Добавлены новые системные сервисы cups-pk-helper, imap4d, inputattach, localed, nslcd, zabbix-agent и zabbix-server;
  • Обновлены версии программ в 2104 пакетах, добавлено 1102 новых пакетов. В том числе обновлены версии clojure 1.10.0, cups 2.2.11, emacs 26.2, gcc 8.3.0, gdb 8.2.1, ghc 8.4.3, gimp 2.10.10, glibc 2.28, gnome 3.28.2, gnupg 2.2.15, go 1.12.1, guile 2.2.4, icecat 60.6.1-guix1, icedtea 3.7.0, inkscape 0.92.4, libreoffice 6.1.5.2, linux-libre 5.0.10, mate 1.22.0, ocaml 4.07.1, octave 5.1.0, openjdk 11.28, python 3.7.0, rust 1.34.0, r 3.6.0, sbcl 1.5.1, shepherd 0.6.0, xfce 4.12.1 и xorg-server 1.20.4;
  • Сервисный менеджер GNU Shepherd обновлён до версии 0.6, в которой реализован режим работы сервисов one-shot, при котором сервис сразу после успешного запуска помечается остановленным, что может потребоваться для запуска одноразовых работ перед другими сервисами, например, для выполнения чистки или инициализации;
  • Для команды «guix package» добавлены типичные для других пакетных менеджеров псевдонимы «install», «remove», «upgrade» и «search». Для поиска пакета можно использовать команду «guix search», для установки «guix install», а для обновления «guix pull» и «guix upgrade»;
  • В пакетный менеджер добавлен индикатор прогресса выполнения операций и подсветка цветами диагностических сообщений. По умолчанию большинство команд теперь запускается без детального вывода на экран, который включается отдельной опцией »-v» (--verbosity);
  • В пакетный менеджер guix добавлена новая команда «guix system delete-generations» и опции «guix pack --save-provenance», «guix pull --news», «guix environment --preserve», «guix gc --list-roots», «guix gc --delete-generations», «guix weather --coverage»;
  • Добавлены новые опции преобразования пакетов »--with-git-url» и »--with-branch»;
  • В дистрибутив добавлены конфигурационные поля «keyboard-layout» для определения раскладки клавиатуры, «xorg-configuration» для настройки X-сервера, «label» для метки раздела и «essential-services» для определения основных сервисов;
  • Добавлена команда «guix pack -RR» для создания tar-архивов с перемещаемыми исполняемыми файлами, которые могут запускаться как относительно путей в пространстве имён пользователя, так и относительно PRoot;
  • В «guix pull» обеспечено формирование кэша пакетов для ускорения операций поиска по имени и обеспечено встраивание пакета «glibc-utf8-locales»;
  • Обеспечена полная повторяемость (бит в бит) ISO-образов, генерируемых командой «guix system»;
  • В качестве менеджера входа задействован GDM вместо SLiM;
  • Прекращена поддержка сборки Guix с использованием Guile 2.0.

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

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

Сборочное окружение для пакетов формируется в виде контейнера, содержащего все необходимые для работы приложений компоненты, что позволяет сформировать набор пакетов, способный работать без оглядки на состав базового системного окружения дистрибутива, в котором Guix используется в качестве надстройки. Между пакетами Guix возможно определение зависимостей, при этом для поиска наличия уже установленных зависимостей используется сканирование хэшей-идентификаторов в директории установленных пакетов. Пакеты устанавливаются в отдельное дерево директорий или поддиректорию в каталоге пользователя, что позволяет обеспечить его параллельное сосуществование с другими пакетными менеджерами и обеспечить поддержку широкого спектра существующих дистрибутивов. Например, пакет устанавливается как /nix/store/f42d5878f3a0b426064a2b64a0c6f92-firefox-66.0.0/, где «f42d58…» является уникальным идентификатором пакета, используемым для контроля зависимостей.

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

© OpenNet