Проект 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 *".
|