Nächste: , Vorige: , Nach oben: Substitute   [Inhalt][Index]


5.3.3 Substitute von anderen Servern holen

Guix kann auf unterschiedlichen Servern nach Substituten schauen und sie von dort laden. Das lohnt sich, wenn Sie Pakete von zusätzlichen Kanälen laden, für die es auf dem offiziellen Server keine Substitute gibt, auf einem anderen aber schon. Eine andere Situation, wo es sich anbietet, ist, wenn Sie Substitute lieber vom Substitutserver beziehen, der zu Ihrer Organisation gehört, und den offiziellen Server nur im Ausnahmefall einsetzen oder ganz weglassen möchten.

Sie können Guix eine Liste von URLs der Substitutserver mitgeben, damit es sie in der angegebenen Reihenfolge anfragt. Außerdem müssen Sie die öffentlichen Schlüssel der Substitutserver ausdrücklich autorisieren, damit Guix von ihnen signierte Substitute annimmt.

Auf Guix System ginge dies vonstatten, indem Sie die Konfiguration des guix-Dienstes modifizieren. Weil der guix-Dienst zu der Liste der vorgegebenen Dienste gehört, sowohl für %base-services als auch für %desktop-services, können Sie dessen Konfiguration mit modify-services ändern und dort die URLs und Substitutschlüssel eintragen, die Sie möchten (siehe modify-services).

Ein Beispiel: Nehmen wir an, Sie möchten Substitute zusätzlich zum vorgegebenen ci.guix.gnu.org von guix.example.org beziehen und den Signierschlüssel dieses Servers autorisieren. Die Betriebssystemkonfiguration, die sich damit ergibt, wird ungefähr so aussehen:

(operating-system
  ;; …
  (services
    ;; Wir nehmen hier '%desktop-services' als Grundlage; geben Sie
    ;; an deren Stelle die Liste der bei Ihnen benutzten Dienste an.
    (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)))))))

Dabei gehen wir davon aus, dass der Signierschlüssel von guix.example.org in der Datei key.pub steht. Sobald Sie diese Änderung an der Datei mit Ihrer Betriebssystemkonfiguration vorgenommen haben (etwa /etc/config.scm), können Sie rekonfigurieren und den guix-daemon-Dienst (oder den ganzen Rechner) neu starten, damit die Änderung in Kraft tritt:

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

Wenn Sie Guix auf einer „Fremddistribution“ laufen lassen, würden Sie stattdessen nach den folgenden Schritten vorgehen, um Substitute von zusätzlichen Servern zu bekommen:

  1. Bearbeiten Sie die Konfigurationsdatei für den guix-daemon; wenn Sie systemd benutzen, wäre das normalerweise /etc/systemd/system/guix-daemon.service. Schreiben Sie in die Konfigurationsdatei die Option --substitute-urls zur guix-daemon-Befehlszeile dazu und listen Sie dabei die gewünschten URLs auf (siehe guix-daemon --substitute-urls):
    … --substitute-urls='https://guix.example.org https://ci.guix.gnu.org'
    
  2. Starten Sie den Daemon neu. Bei systemd geht das so:
    systemctl daemon-reload
    systemctl restart guix-daemon.service
    
  3. Autorisieren Sie den Schlüssel des neuen Servers (siehe Aufruf von guix archive):
    guix archive --authorize < key.pub
    

    Wir nehmen auch hier an, dass key.pub den öffentlichen Schlüssel enthält, mit dem guix.example.org Substitute signiert.

Und wir sind fertig! Substitute werden bevorzugt von https://guix.example.org bezogen und ci.guix.gnu.org bleibt notfalls als Reserve. Natürlich können Sie so viele Substitutserver auflisten, wie Sie wollen, allerdings kann das Erfragen von Substituten etwas länger dauern, wenn zu viele Server kontaktiert werden müssen.

Aber bedenken Sie, es gibt auch Situationen, wo man nur die URL eines Substitutservers hinzufügen will, ohne den Schlüssel zu autorisieren. Siehe Substitutauthentifizierung, um diese bestimmten Gründe zu verstehen.


Nächste: , Vorige: , Nach oben: Substitute   [Inhalt][Index]