Next: , Previous: , Up: Управление пакетами   [Contents][Index]


5.6 Вызов guix pull

Packages are installed or upgraded to the latest version available in the distribution currently available on your local machine. To update that distribution, along with the Guix tools, you must run guix pull: the command downloads the latest Guix source code and package descriptions, and deploys it. Source code is downloaded from a Git repository, by default the official GNU Guix repository, though this can be customized. guix pull ensures that the code it downloads is authentic by verifying that commits are signed by Guix developers.

В частности, guix pull загружает код из channel (see Каналы), указанного одним из следующих способов, в следующем порядке:

  1. опция --channels;
  2. пользовательский файл ~/.config/guix/channels.scm;
  3. общесистемный файл /etc/guix/channels.scm file;
  4. встроенные по умолчанию каналы определены в переменной %default-channels.

После выполнения этой команды guix package будет использовать пакеты и те их версии, которые имеются в только что полученной копии Guix. Эта последняя версия будет источником также всех команд Guix, модулей Scheme. Из этого обновления станет доступен набор команд guix.

Any user can update their Guix copy using guix pull, and the effect is limited to the user who ran guix pull. For instance, when user root runs guix pull, this has no effect on the version of Guix that user alice sees, and vice versa.

Результат запуска guix pull — это профиль profile, доступный в ~/.config/guix/current, содержащий последний Guix. Так что обязательно добавьте этот адрес первым в пути поиска, чтобы использовать последнюю версию, а также для руководства Info (see Документация):

export PATH="$HOME/.config/guix/current/bin:$PATH"
export INFOPATH="$HOME/.config/guix/current/share/info:$INFOPATH"

The --list-generations or -l option lists past generations produced by guix pull, along with details about their provenance:

$ guix pull -l
Generation 1	Jun 10 2018 00:18:18
  guix 65956ad
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: origin/master
    commit: 65956ad3526ba09e1f7a40722c96c6ef7c0936fe

Generation 2	Jun 11 2018 11:02:49
  guix e0cc7f6
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: origin/master
    commit: e0cc7f669bec22c37481dd03a7941c7d11a64f1d
  2 new packages: keepalived, libnfnetlink
  6 packages upgraded: emacs-nix-mode@2.0.4,
    guile2.0-guix@0.14.0-12.77a1aac, guix@0.14.0-12.77a1aac,
    heimdal@7.5.0, milkytracker@1.02.00, nix@2.0.4

Generation 3	Jun 13 2018 23:31:07	(current)
  guix 844cc1c
    repository URL: https://git.savannah.gnu.org/git/guix.git
    branch: origin/master
    commit: 844cc1c8f394f03b404c5bb3aee086922373490c
  28 new packages: emacs-helm-ls-git, emacs-helm-mu, …
  69 packages upgraded: borg@1.1.6, cheese@3.28.0, …

Смотрите See guix describe, для информации о других способах получить информацию о текущем статусе Guix.

This ~/.config/guix/current profile works exactly like the profiles created by guix package (see Вызов guix package). That is, you can list generations, roll back to the previous generation—i.e., the previous Guix—and so on:

$ guix pull --roll-back
switched from generation 3 to 2
$ guix pull --delete-generations=1
deleting /var/guix/profiles/per-user/charlie/current-guix-1-link

Вы также можете использовать guix package (see Вызов guix package), чтобы управлять профилем, называя его явно:

$ guix package -p ~/.config/guix/current --roll-back
switched from generation 3 to 2
$ guix package -p ~/.config/guix/current --delete-generations=1
deleting /var/guix/profiles/per-user/charlie/current-guix-1-link

Команда guix pull обычно вызывается без аргументов, но поддерживает следующие опции:

--url=url
--commit=commit
--branch=branch

Скачать код канала guix из указанного url, относящийся к обозначенному коммиту commit (корректный ID коммита Git, представленный в виде шестнадцатеричной строки), или ветке branch.

Эти опции внедрены для удобства, но также можно задать конфигурационный файл ~/.config/guix/channels.scm или использовать опцию --channels (смотрите ниже).

--channels=file
-C file

Read the list of channels from file instead of ~/.config/guix/channels.scm or /etc/guix/channels.scm. file must contain Scheme code that evaluates to a list of channel objects. See Каналы, for more information.

--news
-N

Отображение списка пакетов, добавленных или обновленных со времени предыдущего поколения, а также, иногда, новостей, написанных авторами каналов для своих пользователей (see Writing Channel News).

The package information is the same as displayed upon guix pull completion, but without ellipses; it is also similar to the output of guix pull -l for the last generation (see below).

--list-generations[=pattern]
-l [pattern]

Вывести список всех поколений ~/.config/guix/current или, если предоставлен паттерн pattern, подмножество поколений, которые соответствуют pattern. Синтаксис pattern — такой же, как у guix package --list-generations (see Вызов guix package).

--roll-back

Roll back to the previous generation of ~/.config/guix/current—i.e., undo the last transaction.

--switch-generation=pattern
-S pattern

Переключиться на определённое поколение, опрделённое pattern.

pattern may be either a generation number or a number prefixed with “+” or “-”. The latter means: move forward/backward by a specified number of generations. For example, if you want to return to the latest generation after --roll-back, use --switch-generation=+1.

--delete-generations[=pattern]
-d [pattern]

Если pattern пропущен, удалит все поголения, кроме текущего.

This command accepts the same patterns as --list-generations. When pattern is specified, delete the matching generations. When pattern specifies a duration, generations older than the specified duration match. For instance, --delete-generations=1m deletes generations that are more than one month old.

If the current generation matches, it is not deleted.

Отметим, что удаление поколений делает невозможным откат к ним. Следовательно эта команда должна использоваться внимательно.

См. See Вызов guix describe, чтобы узнать, как вывести информацию только о текущем поколении.

--profile=profile
-p profile

Использовать профиль profile вместо ~/.config/guix/current.

--dry-run
-n

Показать, какие коммиты будут использоваться, и что будет собрано или скачано в виде подстановок, но не выполнять эту работу.

--allow-downgrades

Разрешить загружать более старые или несвязанные версии каналов, чем те, которые используются в настоящее время.

По умолчанию guix pull защищает от так называемых “атак на более раннюю версию”, когда репозиторий Git данного канала будет сброшен до более ранней или несвязанной версии, что может привести к установке более старых, известных уязвимых версий пакетов.

Примечание: Прежде чем использовать --allow-downgrades, убедитесь, что вы понимаете его последствия для безопасности.

--disable-authentication

Разрешить загрузку канала без его аутентификации.

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

Примечание: Прежде чем использовать --disable-authentication, убедитесь, что вы понимаете его последствия для безопасности.

--system=system
-s system

Предпринять попытку собрать систему system, т.е. i686-linux, вместо типа системы хоста сборки.

--bootstrap

Использовать бутстрап Guile для сорки последнего Guix. Эта опция полезна только для разработчиков.

Механизм каналов channel позволяет указать guix pull, из какого репозитория или ветки скачивать, а также какие дополнительные репозитории должны использоваться для развёртки. См. See Каналы для подробной информации.

В добавок guix pull поддерживает все стандартные опции сборки (see Стандартные параметры сборки).


Next: , Previous: , Up: Управление пакетами   [Contents][Index]