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


6.7 Einen Kanal erstellen

Sagen wir, Sie haben ein paar eigene Paketvarianten oder persönliche Pakete, von denen Sie meinen, dass sie nicht geeignet sind, ins Guix-Projekt selbst aufgenommen zu werden, die Ihnen aber dennoch wie andere Pakete auf der Befehlszeile zur Verfügung stehen sollen. Indem Sie einen Kanal damit anlegen, wird Ihre Sammlung von Paketen nutzbar und Sie können sie mit anderen teilen. Dazu sind folgende Schritte nötig:

  1. Kanäle werden in Git-Repositorys verwaltet, daher ist der erste Schritt beim Anlegen eines Kanals, dass Sie sein Repository erzeugen.
    mkdir my-channel
    cd my-channel
    git init
    
  2. Im nächsten Schritt erzeugen Sie Dateien für Paketmodule (siehe Paketmodule). In jeder können eine oder mehrere Paketdefinitionen stehen (siehe Pakete definieren). Über einen Kanal können Sie auch andere Dinge als nur Pakete bekommen, etwa Erstellungssysteme oder Dienste; hier geht es um Pakete, weil sie der häufigste Verwendungszweck sind.

    Ein Beispiel: Alice könnte ein Modul mit dem Namen (alice packages greetings) bereitstellen für ihre Lieblings-Hallo-Welt-Implementierungen. Zu diesem Zweck würde Alice ein Verzeichnis entsprechend dem Modulnamen erzeugen.

    mkdir -p alice/packages
    $EDITOR alice/packages/greetings.scm
    git add alice/packages/greetings.scm
    

    Welchen Namen Sie einem Paketmodul geben möchten, bleibt Ihnen überlassen. Behalten Sie nur die Einschränkung im Kopf, dass sich der Name von anderen Paketsammlungen unterscheiden muss, deshalb trifft Alice aus unserem Beispiel die weise Entscheidung für (alice packages …) als Namensraum.

    Es sei erwähnt, dass Sie Paketmodule auch in einem Unterverzeichnis innerhalb des Repositorys ablegen können; siehe dazu Paketmodule in einem Unterverzeichnis.

  3. Nachdem das erste Modul eingerichtet ist, geht es als nächster Schritt ans Testen der angebotenen Pakete. Dazu können Sie guix build verwenden, wobei Sie mitteilen, dass es die Module aus dem Git-Checkout verwenden soll. Nehmen wir zum Beispiel an, in (alice packages greetings) wird ein Paket namens hi-from-alice angeboten. Dann führt Alice aus dem Git-Checkout diesen Befehl aus:
    guix build -L. hi-from-alice
    

    Hier wird mit -L. das aktuelle Verzeichnis zu Guiles Ladepfad hinzugefügt (siehe Load Paths in Referenzhandbuch zu GNU Guile).

  4. Es kann ein paar Versuche dauern, aber bald ist Alice zufrieden mit ihren Paketdefinitionen und committet die Datei:
    git commit
    

    Als Kanalautor möchten Sie vielleicht Materialien mitliefern, damit dessen Nutzer ihn authentifizieren können. Siehe Kanalauthentifizierung und Kanalautorisierungen angeben für Informationen, wie das geht.

  5. Wenn jemand also Alice’ Kanal benutzen möchte, muss er diese Kanalautorisierungen nur in seiner Kanaldatei eintragen (siehe Weitere Kanäle angeben) und guix pull ausführen (siehe guix pull aufrufen):
    $EDITOR ~/.config/guix/channels.scm
    guix pull
    

    Von nun an verhält sich Guix so, als hätte man das Wurzelverzeichnis des Git-Repositorys jenes Kanals dauerhaft zu Guiles Ladepfad hinzugefügt. In Alice’ Fall wird also (alice packages greetings) automatisch durch den guix-Befehl gefunden.

Erledigt!

Warnung: Ehe Sie Ihren Kanal der Welt zur Verfügung stellen, möchten wir Ihnen auch ein paar Worte der Warnung mit auf den Weg geben:

Wir haben Sie gewarnt! Allerdings denken wir auch, dass externe Kanäle eine praktische Möglichkeit sind, die Paketsammlung von Guix zu ergänzen und Ihre Verbesserungen mit anderen zu teilen, wie es dem Grundgedanken freier Software entspricht. Bitte schicken Sie eine E-Mail an guix-devel@gnu.org, wenn Sie dies diskutieren möchten.


Nächste: Paketmodule in einem Unterverzeichnis, Vorige: Kanäle mit Substituten, Nach oben: Kanäle   [Inhalt][Index]