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

Проект GNU анонсировал выпуск пакетного менеджера GNU Guix 0.7 и построенного на его основе самодостаточного GNU/Linux дистрибутива. Начиная с выпуска 0.7 дистрибутив может использоваться, не только в виртуализированных окружениях, но и на реальном оборудовании, благодаря реализации инсталлятора. В дополнение к запускаемому в QEMU загрузочному образу (120 Мб) началось формирование сборки для установки на USB Flash. Дистрибутив включает только свободные компоненты и поставляется с ядром GNU Linux-Libre 3.15, очищенным от несвободных элементов бинарных прошивок. Для сборки применяется GCC 4.9.1. В качестве системы инициализации используется сервисный менеджер GNU dmd, развиваемый как альтернатива SysV-init с поддержкой зависимостей. Управляющий демон и утилиты dmd написаны на языке Guile (одна из реализаций языка Scheme), который также используется и для определения параметров запуска сервисов. Базовые образ поддерживает работу в консольном режиме, но для установки подготовлено более 500 готовых пакетов, среди которых и компоненты графического стека на базе X.Org, оконные менеджеры dwm и ratpoison, а также ряд программ на базе библиотеки GTK+.

По сравнению с прошлым выпуском добавлено 134 новых пакета, обновлены версии 87 пакетов. В частности, добавлены такие пакеты, как busybox, udev, vlc, transmission, sudo, fish, gconf, gimp, gnumeric, kmod, mplayer, openmpi, wireless-tools и wpa-supplicant. Задействованы новые версии программ dmd-0.2, ffmpeg-2.3, gcc-4.9.1, gnupg-2.0.25, gnutls-3.2.15, grep-2.20, gstreamer-0.10.36, gtk±3.10.1, lua-5.2.3, openssl-1.0.1h, python-2.7.6, qemu-2.0.0, qt-5.2.1, texlive-2014, tor-0.2.4.22. В дополнение к архитектурам x86_64-linux и i686-linux началось формирование бинарных сборок пакетов для платформы mips64el-linux.

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

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

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

По сравнению с прошлым выпуском для команды «guix package» реализована опция »--show», а для команды «guix refresh» — опция »--list-dependent». Представлен новый модуль «guix gexp» c реализацией G-выражений — нового механизма для встраивания операций управления сборкой в блоки кода, выполняемые на стороне хоста. Модуль «gnu system» и связанные с ним модули переведены на использование G-выражений, что позволило заметно упростить их код и обеспечить более качественный контроль зависимостей при сборке.

Добавлены новые модули:

guix build vm — поддержка образов виртуальных машин; guix build activation — активация системы; guix build syscalls; guix build install, gnu system install — компоненты инсталлятора; gnu system file-systems — для определения файловых систем; gnu — обобщает обращение к некоторым модулям «gnu *».

© OpenNet