Кафедра ИМО ПетрГУ | М. А. Крышень

GNU Guix в вычислительной системе ИМИТ

На рабочих станциях вычислительной системы ИМИТ и на сервере kappa установлен пакетный менеджер GNU Guix («Гикс»).

Возможности:

Guix используется различными научными организациями (включая Институт исследований в информатике и автоматике INRIA, Центр молекулярной медицины имени Макса Дельбрюка, Центр биоинформатики Ультрехта) для создания воспроизводимых программных окружений для исследовательских проектов.

Работа с Guix в системе ИМИТ

  • Документация (русский, английский)
  • GNU Guix Cookbook
  • Локальная копия документации доступна в справочной системе info, для просмотра —
    команда info guix или C-h i m guix в Emacs.

Пользователи могут создавать свои профили пакетов и устанавливать туда желаемое ПО. Например, команда

guix install hello

установит программу hello в профиль пользователя по умолчанию ~/.guix-profile.

В системе размещен скрипт, который при входе в систему устанавливает переменные окружения для работы с ПО из системного и пользовательского профилей. После инициализации профиля пользователя или добавления пакетов, требующих установки дополнительных переменных окружения, нужно сделать это вручную или выполнить повторный вход в систему (команда guix install сообщит об этом).

В текущей конфигурации профили размещены локально (пакет будет установлен только на одном компьютере). Для синхронизации состояния профилей пользователей можно использовать манифесты (описания профилей).

Можно создавать временные окружения и изолированные контейнеры с требуемым ПО, например:

$ gcc --version                  # GCC из openSUSE
gcc (SUSE Linux) 7.5.0...

$ guix shell gcc-toolchain@11    # создание окружения

$ gcc --version                  # GCC из нового окружения
gcc (GCC) 11.2.0...

$ exit                           # возврат из окружения

См. документацию по использованию guix shell.

Код пакетного менеджера и определения пакетов (кроме добавленных локально) размещены в гит-репозитории проекта. Команда guix pull получает последнюю версию из репозитория, собирает и размещает обновленный Guix в профиле ~/.config/guix/current. Таким образом у каждого пользователя может быть своя версия (доступные пакеты и их версии определяются версией Guix).

По умолчанию используется версия Guix из профиля пользователя root, который периодически обновляется, так что необходимости выполнять guix pull для каждого пользователя нет.

После обновления Guix можно обновить и пакеты в профиле пользователя:

guix upgrade

Посмотреть историю изменений профиля:

guix package -l

И историю установленных пользователем версий Guix:

guix pull -l

Удалить старые версии профиля можно с помощью guix package -d. Сборки пакетов удаляются из хранилища сборщиком мусора (guix gc), если на них не ссылаются (непосредственно или через зависимости) никакие профили. Старые неактивные поколения профилей периодически удаляются.

Для поиска пакетов доступна команда guix search.

Помимо командного интерфейса есть еще интерфейс на основе Emacs (M-x guix-about). Его удобно использовать для поиска пакетов (M-x guix-packages-by-name, M-x guix-all-packages) и просмотра информации о них. Также можно быстро найти определение пакета в исходном коде (M-x guix-edit) и экспериментировать с Guix в интерактивной среде программирования REPL.

Установленное ПО

Сейчас в общий для всех пользователей системный профиль установлено:

Виртуальная машина для студентов

На базе Guix предоставляется готовый образ виртуальной машины, который можно запустить в программе виртуализации VirtualBox и использовать для выполнения лабораторных работ на собственном компьютере без необходимости самостоятельно устанавливать и настраивать ОС и требуемое программное обеспечение.

Инфраструктура

Под управлением дистрибутива Guix работает виртуальная машина guix.cs.prv, которая предоставляет остальным компьютерам подстановки (готовые бинарные сборки) для нужных пакетов в дополнение к официальным серверам. Если готовая сборка пакета не доступна на серверах подстановок, пакет будет локально собираться из исходных кодов.

Автор: М. А. Крышень

Created: 2022-03-21 Пн 15:49

Emacs 27.2 (Org mode 9.5.2)

Validate