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

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

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

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

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

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

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

  • По сравнению с прошлым выпуском добавлено 543 новых пакета, в том числе пакеты с языком Idris и многие импортированные пакеты с компонентами для разработчиков на Haskell, Python и R;
  • Поддержка средств для автоматизации создания и запуска изолированных контейнеров;
  • Новый фреймворк для построения сервисов, позволяющий сформировать компоненты, необходимые для работы сервисов и системных надстроек, с учётом требуемых зависимостей. Пока не все задумки реализованы, но в будущем фреймворк поможет превращению дистрибутива в модульную систему.
  • Новая команда "guix challenge", позволяющая удостовериться, что исполняемый файл собран из имеющихся исходных текстов;
  • Новая команда "guix graph", позволяющая нарисовать граф зависимостей с различным уровнем детализации, команда "guix system extension-graph" для формирования графа взаимосвязи системных сервисов, и команда "guix system dmd-graph" для вывода графа зависимостей сервисов с позиции системного менеджера GNU dmd. 0_1446734265.png

© OpenNet