Проект GNU анонсировал выпуск пакетного менеджера GNU Guix 0.8 и построенного на его основе самодостаточного дистрибутива GNU/Linux. Дистрибутив может использоваться как в виртуализированных окружениях, так и на обычном оборудовании. При этом допускается установка не только в качестве обособленной ОС, но и запуск в уже установленных типовых окружениях GNU/Linux. Для загрузки доступны образы для установки на USB Flash и использования в QEMU (120 Мб).

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

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

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

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

По сравнению с прошлым выпуском добавлено 162 новых пакета, обновлены версии 117 пакетов. В частности, добавлены такие пакеты, как abiword, zsh, eudev, lm-sensors, openjpeg, perf, rrdtool, ruby. Задействованы новые версии программ, в том числе bash-4.3.30, coreutils-8.23, dbus-1.8.8, emacs-24.4, ffmpeg-2.4.3, gcc-4.9.2, glibc-2.20, gstreamer-1.0.10, gtk+-3.10.1, icecat-31.2.0, lua-5.2.3, mysql-5.1.73. Добавлена новая команда "guix environment" для подготовки рабочего окружения, содержащего компоненты, необходимые для сборки указанного пакета. Реализованы новые команды для разработчиков: guix lint и guix import. Добавлен новый сценарий ruby-build-system для сборки пакетов на языке Ruby.

Представлен альтернативный пользовательский интерфейс для управления пакетами, построенный с использованием Emacs (guix.el) и позволяющий просматривать, искать и устанавливать интересующие приложения без манипуляций с утилитой guix из командной строки. Реализован новый экспериментальный механизм быстрого развёртывания обновлений с устранением уязвимостей, без необходимости пересборки вышележащих зависимостей (например, после установки обновления к glibc или bash теперь не нужно пересобирать все остальные пакеты). В блоке настроек operating-system добавлены новые опции для определения раздела подкачки, маппинга блочных устройств, загрузки прошивок.

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