Next: Вызов guix describe
, Previous: Запуск guix time-machine
, Up: Управление пакетами [Contents][Index]
Примечание: Функциональность, описанная здесь, — это обзор технологии версии 1.4.0. Интерфейс может меняться.
Иногда вам может понадобиться перемешивать пакеты из ревизии Guix, которая работает в настоящий момент, с пакетами, доступными в другой ревизии Guix. Основания Guix inferiors позволяют вам получить это, составляя различные ревизии Guix произвольным образом.
Технически работа с ранними версиями — это в целом отдельный процесс Guix,
связанный с главным процессом Guix через REPL (see Вызов guix repl
). Модуль (guix inferior)
позволяет запускать ранние версии и
взаимодействовать с ними. Он также предоставляет высокоуровневый интерфейс
для обзора и управления пакетами, которые поставляет ранняя версия —
ранние версии пакетов.
When combined with channels (see Каналы), inferiors provide a simple
way to interact with a separate revision of Guix. For example, let’s assume
you want to install in your profile the current guile
package, along
with the guile-json
as it existed in an older revision of
Guix—perhaps because the newer guile-json
has an incompatible API
and you want to run your code against the old API. To do that, you could
write a manifest for use by guix package --manifest
(see Writing Manifests); in that manifest, you would create an inferior for that old
Guix revision you care about, and you would look up the guile-json
package in the inferior:
(use-modules (guix inferior) (guix channels) (srfi srfi-1)) ;for 'first' (define channels ;; This is the old revision from which we want to ;; extract guile-json. (list (channel (name 'guix) (url "https://git.savannah.gnu.org/git/guix.git") (commit "65956ad3526ba09e1f7a40722c96c6ef7c0936fe")))) (define inferior ;; An inferior representing the above revision. (inferior-for-channels channels)) ;; Now create a manifest with the current "guile" package ;; and the old "guile-json" package. (packages->manifest (list (first (lookup-inferior-packages inferior "guile-json")) (specification->package "guile")))
Далее запуск guix package --manifest
может вызвать сборку канала,
который вы обозначили ранее, и в результате это задействует раннюю
версию. Последовательные запуски будут быстрее, потому что ревизия Guix
будет кеширована.
Модуль (guix inferior)
предоставляет следующие процедуры для работы с
ранними версиями:
channels. Использует кеш в cache-directory, где компоненты могут восстанавливаться через ttl секунд. Эта процедура открывает новое соединение с демоном сборки.
Как побочный эффект, эта процедура может собирать или скачивать подстановки бинарников для channels, что может занять время.
запустив repl directory/command
или
эквивалент. Возвращает #f
, если ранняя версия не может быть запущена.
Процедуры, приведённые ниже, обеспечивают работу и управление ранними версиями пакетов.
Возвращает список пакетов, относящихся к ранней версии inferior.
inferior, содержащих имя name, поздняя версия - вначале. Если версия version задана, возвращает только пакеты с номером версии, начинающейся с version.
Возвращает true, если объект obj — это пакет ранней версии.
Эти процедуры являются двойниками метода доступа к записям пакетов
(see package
Ссылка). Большинство из них работают с запросами для
ранней версии, из которой происходит package, так что ранняя версия
должна оставаться живой, когда вы вызываете эти процедуры.
Пакеты ранних версий могут использоваться прозрачно, как любой другой пакет
или объект типа файл в выражении G-expressions (see G-Expressions). Они
также прозрачно используются в процедуре packages->manifest
, которая
обычно используется в манифестах (see the
--manifest option of guix package
). Так можно вставлять
пакет ранней версии в принципе куда угодно, как если вставлять обычный
пакет: в манифесты, в поле packages
вашего объявления
operating-system
и т.д.
Next: Вызов guix describe
, Previous: Запуск guix time-machine
, Up: Управление пакетами [Contents][Index]