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

GNU Guix в вычислительной системе кафедры ИМО

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

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

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

Работа с Guix в системе кафедры

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

guix install hello

установит программу hello в профиль пользователя по умолчанию ~/.guix-profile (ссылка на /var/guix/profiles/per-user/$USER).

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

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

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

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

$ guix environment --ad-hoc gcc-toolchain@9.2    # создание окружения

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

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

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

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

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

После обновления 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, которая предоставляет остальным компьютерам подстановки (готовые бинарные сборки) для нужных пакетов. Также подключен официальный сервер подстановок ci.guix.gnu.org. Если готовая сборка пакета не доступна на серверах подстановок, пакет будет локально собираться из исходных кодов.

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

Created: 2020-11-04 Ср 01:19

Emacs 27.1 (Org mode 9.4)

Validate