Next: , Previous: , Up: Подстановки   [Contents][Index]


5.3.3 Получение заменителей с других серверов

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

Вы можете дать Guix список URL-адресов серверов с заменителями, и он проверит их в указанном порядке. Вам также необходимо явно авторизовать открытые ключи серверов с заменителями, чтобы Guix принял заменители, которые они подписывают.

В системе Guix это достигается путем изменения конфигурации службы guix. Поскольку служба guix является частью списков служб по умолчанию, %base-services и %desktop-services, вы можете использовать modify-services для изменения ее конфигурации и добавьте нужные URL-адреса и заменить ключи (see modify-services).

В качестве примера предположим, что вы хотите получить заменители из guix.example.org и авторизовать ключ этого сервера в дополнение к ci.guix.gnu.org. Полученная конфигурация операционной системы будет выглядеть примерно так:

(operating-system
  ;; …
  (services
    ;; Assume we're starting from '%desktop-services'.  Replace it
    ;; with the list of services you're actually using.
    (modify-services %desktop-services
      (guix-service-type config =>
                        (guix-configuration
                          (inherit config)
                          (substitute-urls
                            (append (list "https://guix.example.org")
                                    %default-substitute-urls))
                          (authorized-keys
                            (append (list (local-file "./key.pub"))
                                    %default-authorized-guix-keys)))))))

Предполагается, что файл key.pub содержит ключ подписи guix.example.org. После внесения этого изменения в файл конфигурации вашей операционной системы (например, /etc/config.scm) вы можете перенастроить и перезапустить службу guix-daemon или перезагрузиться, чтобы изменения вступили в силу:

$ sudo guix system reconfigure /etc/config.scm
$ sudo herd restart guix-daemon

Если вы используете Guix в качестве пакетного менеджера на другом дистрибутиве, вместо вышеописанного вы должны предпринять следующие шаги, чтобы получить заменители с дополнительных серверов:

  1. Отредактируйте файл конфигурации службы для guix-daemon; когда исользуете systemd, это обычно /etc/systemd/system/guix-daemon.service. Добавьте параметр --substitute-urls команды guix-daemon при вызове в командной строке и перечислите интересующие URL-адреса (see guix-daemon --substitute-urls):
    … --substitute-urls='https://guix.example.org https://ci.guix.gnu.org'
    
  2. Перезапустите демон. Пример для systemd:
    systemctl daemon-reload
    systemctl restart guix-daemon.service
    
  3. Авторизуйте ключ нового сервера (see Вызов guix archive):
    guix archive --authorize < key.pub
    

    Опять же, это предполагает key.pub, содержащий открытый ключ, который guix.example.org использует для подписи замененителей.

Теперь все готово! Замены предпочтительно брать из https://guix.example.org, используя ci.guix.gnu.org в качестве альтернативы. Конечно, вы можете указать столько серверов-заменителей, сколько захотите, но с оговоркой, что поиск замены может быть замедлен, если потребуется связаться со слишком большим количеством серверов.

Обратите внимание, что бывают также ситуации, когда можно добавить URL-адрес замещающего сервера без авторизации его ключа. See Аутентификация подстановок, чтобы понять этот тонкий момент.


Next: , Previous: , Up: Подстановки   [Contents][Index]