guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

01/01: bootstrap: Break automake dependency on generated files.


From: guix-commits
Subject: 01/01: bootstrap: Break automake dependency on generated files.
Date: Fri, 26 Apr 2019 05:25:41 -0400 (EDT)

roptat pushed a commit to branch master
in repository guix.

commit 9ca5ff882e2ac4eaab02eb0fde545bd784af478b
Author: Miguel Ángel Arruga Vivas <address@hidden>
Date:   Tue Apr 23 11:30:32 2019 +0200

    bootstrap: Break automake dependency on generated files.
    
    * bootstrap: Generate stub files for the manual translations whose
    generated files are not included in the VCS.
    * doc/contributing.de.texi: Remove file.
    * doc/contributing.es.texi: Remove file.
    * doc/contributing.fr.texi: Remove file.
    * doc/contributing.zh_CN.texi: Remove file.
    * doc/guix.de.texi: Remove file.
    * doc/guix.es.texi: Remove file.
    * doc/guix.fr.texi: Remove file.
    * doc/guix.zh_CN.texi: Remove file.
    * .gitignore: Add them.
    
    Signed-off-by: Julien Lepiller <address@hidden>
---
 .gitignore                  |     2 +
 bootstrap                   |    14 +
 doc/contributing.de.texi    |  1055 --
 doc/contributing.es.texi    |  1016 --
 doc/contributing.fr.texi    |  1007 --
 doc/contributing.zh_CN.texi |   897 --
 doc/guix.de.texi            | 26536 ------------------------------------------
 doc/guix.es.texi            | 26015 -----------------------------------------
 doc/guix.fr.texi            | 26504 -----------------------------------------
 doc/guix.zh_CN.texi         | 25352 ----------------------------------------
 10 files changed, 16 insertions(+), 108382 deletions(-)

diff --git a/.gitignore b/.gitignore
index 2ffb438..93d2ec9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -28,6 +28,7 @@
 /configure
 /doc/*.1
 /doc/.dirstamp
+/doc/contributing.*.texi
 /doc/guix.*.aux
 /doc/guix.*.cp
 /doc/guix.*.cps
@@ -43,6 +44,7 @@
 /doc/guix.*.tp
 /doc/guix.*.vr
 /doc/guix.*.vrs
+/doc/guix.*.texi
 /doc/guix.aux
 /doc/guix.cp
 /doc/guix.cps
diff --git a/bootstrap b/bootstrap
index cb774bc..c0b5af7 100755
--- a/bootstrap
+++ b/bootstrap
@@ -2,4 +2,18 @@
 # Create the build system.
 
 set -e -x
+
+# Generate stubs for translations.
+langs=`find po/doc -type f -name '*.po' \
+        | sed -e 's,guix-manual\.,,' \
+        | xargs -n 1 -I{} basename {} .po`
+for lang in ${langs}; do
+    if [ ! -e "doc/guix.${lang}.texi" ]; then
+       echo "@setfilename guix.${lang}.info" > "doc/guix.${lang}.texi"
+       echo "@include version-${lang}.texi" >> "doc/guix.${lang}.texi"
+       # Ensure .po file is newer.
+       touch "po/doc/guix-manual.${lang}.po"
+    fi
+done
+
 exec autoreconf -vfi
diff --git a/doc/contributing.de.texi b/doc/contributing.de.texi
deleted file mode 100644
index 6a999ba..0000000
--- a/doc/contributing.de.texi
+++ /dev/null
@@ -1,1055 +0,0 @@
address@hidden Mitwirken
address@hidden Mitwirken
-
-Dieses Projekt basiert auf Kooperation, daher benötigen wir Ihre Hilfe, um
-es wachsen zu lassen! Bitte kontaktieren Sie uns auf
address@hidden@@gnu.org} und @code{#guix} im Freenode-IRC-Netzwerk. Wir
-freuen uns auf Ihre Ideen, Fehlerberichte, Patches und alles, was hilfreich
-für das Projekt sein könnte. Besonders willkommen ist Hilfe bei der
-Erstellung von Paketen (siehe @ref{Paketrichtlinien}).
-
address@hidden Verhaltensregeln, für Mitwirkende
address@hidden Verhaltenskodex für Mitwirkende
-Wir möchten eine angenehme, freundliche und von Belästigungen freie Umgebung
-bereitstellen, so dass jeder Beiträge nach seinen Fähigkeiten leisten
-kann. Zu diesem Zweck verwendet unser Projekt einen »Verhaltenskodex für
-Mitwirkende«, der von @url{http://contributor-covenant.org/} übernommen
-wurde. Eine übersetzte Fassung finden Sie auf
address@hidden://www.contributor-covenant.org/de/version/1/4/code-of-conduct}
-sowie eine mitgelieferte, englische Fassung in der Datei
address@hidden im Quellbaum.
-
-Von Mitwirkenden wird nicht erwartet, dass sie in Patches oder in der
-Online-Kommunikation ihre echten Namen preisgeben. Sie können einen
-beliebigen Namen oder ein Pseudonym ihrer Wahl verwenden.
-
address@hidden
-* Erstellung aus dem Git::   Das Neueste und Beste.
-* Guix vor der Installation ausführen::  Hacker-Tricks.
-* Perfekt eingerichtet::     Die richtigen Werkzeuge.
-* Paketrichtlinien::         Die Distribution wachsen lassen.
-* Code-Stil::                Wie Mitwirkende hygienisch arbeiten.
-* Einreichen von Patches::   Teilen Sie Ihre Arbeit.
address@hidden menu
-
address@hidden Erstellung aus dem Git
address@hidden Erstellung aus dem Git
-
-Wenn Sie an Guix selbst hacken wollen, ist es empfehlenswert, dass Sie die
-neueste Version aus dem Git-Softwarebestand verwenden:
-
address@hidden
-git clone https://git.savannah.gnu.org/git/guix.git
address@hidden example
-
-Wenn Sie Guix aus einem Checkout erstellen, sind außer den bereits in den
-Installationsanweisungen genannten Paketen weitere nötig (siehe
address@hidden).
-
address@hidden
address@hidden @url{http://gnu.org/software/autoconf/, GNU Autoconf};
address@hidden @url{http://gnu.org/software/automake/, GNU Automake};
address@hidden @url{http://gnu.org/software/gettext/, GNU Gettext};
address@hidden @url{http://gnu.org/software/texinfo/, GNU Texinfo};
address@hidden @url{http://www.graphviz.org/, Graphviz};
address@hidden @url{http://www.gnu.org/software/help2man/, GNU Help2man 
(optional)}.
address@hidden itemize
-
-Der einfachste Weg, eine Entwicklungsumgebung für Guix einzurichten, ist
-natürlich, Guix zu benutzen! Der folgende Befehl startet eine neue Shell, in
-der alle Abhängigkeiten und Umgebungsvariablen bereits eingerichtet sind, um
-an Guix zu arbeiten:
-
address@hidden
-guix environment guix
address@hidden example
-
-In @ref{Aufruf von guix environment} finden Sie weitere Informationen zu
-diesem Befehl. Zusätzliche Abhängigkeiten können mit @option{--ad-hoc}
-hinzugefügt werden:
-
address@hidden
-guix environment guix --ad-hoc help2man git strace
address@hidden example
-
-Führen Sie @command{./bootstrap} aus, um die Infrastruktur des
-Erstellungssystems mit Autoconf und Automake zu erzeugen. Möglicherweise
-erhalten Sie eine Fehlermeldung wie diese:
-
address@hidden
-configure.ac:46: error: possibly undefined macro: PKG_CHECK_MODULES
address@hidden example
-
address@hidden
-Das bedeutet wahrscheinlich, dass Autoconf @file{pkg.m4} nicht finden
-konnte, welches von pkg-config bereitgestellt wird. Stellen Sie sicher, dass
address@hidden verfügbar ist. Gleiches gilt für den von Guile
-bereitgestellten Makrosatz @file{guile.m4}. Wenn Sie beispielsweise Automake
-in @file{/usr/local} installiert haben, würde in @file{/usr/share} nicht
-nach @file{.m4}-Dateien geschaut. In einem solchen Fall müssen Sie folgenden
-Befehl aufrufen:
-
address@hidden
-export ACLOCAL_PATH=/usr/share/aclocal
address@hidden example
-
-In @ref{Macro Search Path,,, automake, The GNU Automake Manual} finden Sie
-weitere Informationen.
-
-Dann führen Sie wie gewohnt @command{./configure} aus. Achten Sie darauf,
address@hidden@var{Verzeichnis}} zu übergeben, wobei
address@hidden der von Ihrer aktuellen Installation verwendete
address@hidden ist (weitere Informationen siehe @ref{Der Store}).
-
-Zum Schluss müssen Sie @code{make check} aufrufen, um die Tests auszuführen
-(siehe @ref{Den Testkatalog laufen lassen}). Falls etwas fehlschlägt, werfen 
Sie
-einen Blick auf die Installationsanweisungen (siehe @ref{Installation}) oder
-senden Sie eine E-Mail an die @email{guix-devel@@gnu.org, Mailingliste}.
-
-
address@hidden Guix vor der Installation ausführen
address@hidden Guix vor der Installation ausführen
-
-Um eine gesunde Arbeitsumgebung zu erhalten, ist es hilfreich, die im
-lokalen Quellbaum vorgenommenen Änderungen zunächst zu testen, ohne sie
-tatsächlich zu installieren. So können Sie zwischen Ihrem
-Endnutzer-»Straßenanzug« und Ihrem »Faschingskostüm« unterscheiden.
-
-Zu diesem Zweck können alle Befehlszeilenwerkzeuge auch schon benutzt
-werden, ohne dass Sie @code{make install} laufen lassen.  Dazu müssen Sie
-sich in einer Umgebung befinden, in der alle Abhängigkeiten von Guix
-verfügbar sind (siehe @ref{Erstellung aus dem Git}) und darin einfach vor jeden
-Befehl @command{./pre-inst-env} schreiben (das Skript @file{pre-inst-env}
-befindet sich auf oberster Ebene im Verzeichnis, wo Guix erstellt wird, wo
-es durch @command{./configure} erzeugt wird), zum Beispiel address@hidden
-Befehlszeilenoption @option{-E} von @command{sudo} stellt sicher, dass
address@hidden richtig gesetzt wird, damit @command{guix-daemon} und
-die davon benutzten Werkzeuge die von ihnen benötigten Guile-Module finden
-können.}:
-
address@hidden
-$ sudo -E ./pre-inst-env guix-daemon --build-users-group=guixbuild
-$ ./pre-inst-env guix build hello
address@hidden example
-
address@hidden
-Entsprechend, um eine Guile-Sitzung zu öffnen, die die Guix-Module benutzt:
-
address@hidden
-$ ./pre-inst-env guile -c '(use-modules (guix utils)) (pk (%current-system))'
-
-;;; ("x86_64-linux")
address@hidden example
-
address@hidden
address@hidden REPL
address@hidden Lese-Auswerten-Schreiben-Schleife
address@hidden und auf einer REPL (siehe @ref{Using Guile Interactively,,, 
guile,
-Guile Reference Manual}):
-
address@hidden
-$ ./pre-inst-env guile
-scheme@@(guile-user)> ,use(guix)
-scheme@@(guile-user)> ,use(gnu)
-scheme@@(guile-user)> (define snakes
-                       (fold-packages
-                         (lambda (package lst)
-                           (if (string-prefix? "python"
-                                               (package-name package))
-                               (cons package lst)
-                               lst))
-                         '()))
-scheme@@(guile-user)> (length snakes)
-$1 = 361
address@hidden example
-
-Das @command{pre-inst-env}-Skript richtet alle Umgebungsvariablen ein, die
-nötig sind, um dies zu ermöglichen, einschließlich @env{PATH} und
address@hidden
-
-Beachten Sie, dass @command{./pre-inst-env guix pull} den lokalen Quellbaum
address@hidden aktualisiert; es aktualisiert lediglich die symbolische
-Verknüpfung @file{~/.config/guix/current} (siehe @ref{Aufruf von guix pull}). 
Um Ihren lokalen Quellbaum zu aktualisieren, müssen Sie stattdessen
address@hidden pull} benutzen.
-
-
address@hidden Perfekt eingerichtet
address@hidden Perfekt eingerichtet
-
-Um perfekt für das Hacken an Guix eingerichtet zu sein, brauchen Sie an sich
-dasselbe wie um perfekt für das Hacken mit Guile (siehe @ref{Using Guile in
-Emacs,,, guile, Guile Reference Manual}). Zunächst brauchen Sie mehr als ein
-Textverarbeitungsprogramm, Sie brauchen
address@hidden://www.gnu.org/software/emacs, Emacs} zusammen mit den vom
-wunderbaren @url{http://nongnu.org/geiser/, Geiser} verliehenen Kräften. Um
-diese zu installieren, können Sie Folgendes ausführen:
-
address@hidden
-guix package -i emacs guile emacs-geiser
address@hidden example
-
-Geiser ermöglicht interaktive und inkrementelle Entwicklung aus Emacs
-heraus: Code kann in Puffern kompiliert und ausgewertet werden. Zugang zu
-Online-Dokumentation (Docstrings) steht ebenso zur Verfügung wie
-kontextabhängige Vervollständigung, @kbd{M-.} um zu einer Objektdefinition
-zu springen, eine REPL, um Ihren Code auszuprobieren, und mehr (siehe
address@hidden,,, geiser, Geiser User Manual}). Zur bequemen
-Guix-Entwicklung sollten Sie Guiles Ladepfad so ergänzen, dass die
-Quelldateien in Ihrem Checkout gefunden werden.
-
address@hidden
-;; @r{Angenommen das Guix-Checkout ist in ~/src/guix.}
-(with-eval-after-load 'geiser-guile
-  (add-to-list 'geiser-guile-load-path "~/src/guix"))
address@hidden lisp
-
-Um den Code tatsächlich zu bearbeiten, bietet Emacs schon einen netten
-Scheme-Modus. Aber Sie dürfen auch
address@hidden://www.emacswiki.org/emacs/ParEdit, Paredit} nicht verpassen. Es
-bietet Hilfsmittel, um direkt mit dem Syntaxbaum zu arbeiten, und kann so
-zum Beispiel einen S-Ausdruck hochheben oder ihn umhüllen, ihn verschlucken
-oder den nachfolgenden S-Ausdruck verwerfen, etc.
-
address@hidden Code-Schnipsel
address@hidden Vorlagen
address@hidden Tipparbeit sparen
-Wir bieten auch Vorlagen für häufige Git-Commit-Nachrichten und
-Paketdefinitionen im Verzeichnis @file{etc/snippets}. Diese Vorlagen können
-mit @url{http://joaotavora.github.io/yasnippet/, YASnippet} zusammen benutzt
-werden, um kurze Auslöse-Zeichenketten zu interaktiven Textschnipseln
-umzuschreiben. Vielleicht möchten Sie das Schnipselverzeichnis zu Ihrer
address@hidden in Emacs hinzufügen.
-
address@hidden
-;; @r{Angenommen das Guix-Checkout ist in ~/src/guix.}
-(with-eval-after-load 'yasnippet
-  (add-to-list 'yas-snippet-dirs "~/src/guix/etc/snippets"))
address@hidden lisp
-
-Die Schnipsel für Commit-Nachrichten setzen @url{https://magit.vc/, Magit}
-voraus, um zum Commit vorgemerkte Dateien anzuzeigen. Wenn Sie eine
-Commit-Nachricht bearbeiten, können Sie @code{add} gefolgt von @kbd{TAB}
-eintippen, um eine Commit-Nachrichten-Vorlage für das Hinzufügen eines
-Pakets zu erhalten; tippen Sie @code{update} gefolgt von @kbd{TAB} ein, um
-eine Vorlage zum Aktualisieren eines Pakets zu bekommen; tippen Sie
address@hidden gefolgt von @kbd{TAB} ein, um eine Vorlage zum Ändern der
-Homepage-URI eines Pakets auf HTTPS einzufügen.
-
-Das Hauptschnipsel für @code{scheme-mode} wird ausgelöst, indem Sie
address@hidden gefolgt von @kbd{TAB} eintippen. Dieses Snippet fügt auch
-die Auslöse-Zeichenkette @code{origin...} ein, die danach weiter
-umgeschrieben werden kann. Das @code{origin}-Schnipsel kann wiederum andere
-Auslöse-Zeichenketten einfügen, die alle auf @code{...} enden, was selbst
-wieder weiter umgeschrieben werden kann.
-
-
address@hidden Paketrichtlinien
address@hidden Paketrichtlinien
-
address@hidden Pakete definieren
-Die GNU-Distribution ist noch sehr jung und einige Ihrer Lieblingspakete
-könnten noch fehlen. Dieser Abschnitt beschreibt, wie Sie dabei helfen
-können, die Distribution wachsen zu lassen.
-
-Pakete mit freier Software werden normalerweise in Form von @dfn{Tarballs
-mit dem Quellcode} angeboten — typischerweise in
address@hidden, in denen alle Quelldateien enthalten sind. Ein
-Paket zur Distribution hinzuzufügen, bedeutet also zweierlei Dinge: Zum
-einen fügt man ein @dfn{Rezept} ein, das beschreibt, wie das Paket erstellt
-werden kann, einschließlich einer Liste von anderen Paketen, die für diese
-Erstellung gebraucht werden, zum anderen fügt man @dfn{Paketmetadaten} zum
-Rezept hinzu, wie zum Beispiel eine Beschreibung und Lizenzinformationen.
-
-In Guix sind all diese Informationen ein Teil der
address@hidden In Paketdefinitionen hat man eine abstrahierte,
-hochsprachliche Sicht auf das Paket. Sie werden in der Syntax der
-Scheme-Programmiersprache verfasst; tatsächlich definieren wir für jedes
-Paket eine Variable und binden diese an dessen Definition, um die Variable
-anschließend aus einem Modul heraus zu exportieren (siehe @ref{Paketmodule}). 
Allerdings ist @emph{kein} tiefgehendes Wissen über Scheme
-erforderlich, um Pakete zu erstellen. Mehr Informationen über
-Paketdefinitionen finden Sie im Abschnitt @ref{Pakete definieren}.
-
-Eine fertige Paketdefinition kann, nachdem sie in eine Datei im
-Quell-Verzeichnisbaum von Guix eingesetzt wurde, mit Hilfe des Befehls
address@hidden build} getestet werden (siehe @ref{Aufruf von guix build}). Wenn
-das Paket zum Beispiel den Namen @code{gnew} trägt, können Sie folgenden
-Befehl aus dem Erstellungs-Verzeichnisbaum von Guix heraus ausführen (siehe
address@hidden vor der Installation ausführen}):
-
address@hidden
-./pre-inst-env guix build gnew --keep-failed
address@hidden example
-
-Wenn Sie @code{--keep-failed} benutzen, ist es leichter, fehlgeschlagene
-Erstellungen zu untersuchen, weil dann der Verzeichnisbaum der
-fehlgeschlagenen Erstellung zugänglich bleibt. Eine andere nützliche
-Befehlszeilenoption bei der Fehlersuche ist @code{--log-file}, womit das
-Erstellungsprotokoll eingesehen werden kann.
-
-Wenn der @command{guix}-Befehl das Paket nicht erkennt, kann es daran
-liegen, dass die Quelldatei einen Syntaxfehler hat oder ihr eine
address@hidden fehlt, die die Paketvariable exportiert. Um das
-herauszufinden, können Sie das Modul aus Guile heraus laden, um mehr
-Informationen über den tatsächlichen Fehler zu bekommen:
-
address@hidden
-./pre-inst-env guile -c '(use-modules (gnu packages gnew))'
address@hidden example
-
-Sobald Ihr Paket erfolgreich erstellt werden kann, schicken Sie uns bitte
-einen Patch (siehe @ref{Einreichen von Patches}). Wenn Sie dabei Hilfe brauchen
-sollten, helfen wir gerne. Ab dem Zeitpunkt, zu dem der Patch als Commit ins
-Guix-Repository eingepflegt wurde, wird das neue Paket automatisch durch
address@hidden://hydra.gnu.org/jobset/gnu/master, unser System zur
-Kontinuierlichen Integration} auf allen unterstützten Plattformen erstellt.
-
address@hidden Substituierer
-Benutzern steht die neue Paketdefinition zur Verfügung, nachdem sie das
-nächste Mal @command{guix pull} ausgeführt haben (siehe @ref{Aufruf von guix 
pull}). Wenn @address@hidden selbst damit fertig ist, das
-Paket zu erstellen, werden bei der Installation automatisch Binärdateien von
-dort heruntergeladen (siehe @ref{Substitute}). Menschliches Eingreifen muss
-nur stattfinden, um den Patch zu überprüfen und anzuwenden.
-
-
address@hidden
-* Software-Freiheit::        Was in die Distribution aufgenommen werden 
-                               darf.
-* Paketbenennung::           Was macht einen Namen aus?
-* Versionsnummern::          Wenn der Name noch nicht genug ist.
-* Zusammenfassungen und Beschreibungen::  Den Nutzern helfen, das richtige 
-                                            Paket zu finden.
-* Python-Module::            Ein Touch britischer Comedy.
-* Perl-Module::              Kleine Perlen.
-* Java-Pakete::              Kaffeepause.
-* Schriftarten::             Schriften verschriftlicht.
address@hidden menu
-
address@hidden Software-Freiheit
address@hidden Software-Freiheit
-
address@hidden 
===========================================================================
address@hidden
address@hidden This file was generated with po4a. Translate the source file.
address@hidden
address@hidden 
===========================================================================
address@hidden Adapted from http://www.gnu.org/philosophy/philosophy.html.
address@hidden freie Software
-Das GNU-Betriebssystem wurde entwickelt, um Menschen Freiheit bei der
-Nutzung ihrer Rechengeräte zu ermöglichen. GNU ist @dfn{freie Software}, was
-bedeutet, dass Benutzer die
address@hidden://www.gnu.org/philosophy/free-sw.de.html,vier wesentlichen
-Freiheiten} haben: das Programm auszuführen, es zu untersuchen, das Programm
-in Form seines Quellcodes anzupassen und exakte Kopien ebenso wie
-modifizierte Versionen davon an andere weiterzugeben. Die Pakete, die Sie in
-der GNU-Distribution finden, stellen ausschließlich solche Software zur
-Verfügung, die Ihnen diese vier Freiheiten gewährt.
-
-Außerdem befolgt die GNU-Distribution die
address@hidden://www.gnu.org/distros/free-system-distribution-guidelines.de.html,Richtlinien
-für freie Systemverteilungen}. Unter anderem werden unfreie Firmware sowie
-Empfehlungen von unfreier Software abgelehnt und Möglichkeiten zum Umgang
-mit Markenzeichen und Patenten werden diskutiert.
-
-Ansonsten freier Paketquellcode von manchen Anbietern enthält einen kleinen
-und optionalen Teil, der diese Richtlinien verletzt. Zum Beispiel kann
-dieser Teil selbst unfreier Code sein. Wenn das vorkommt, wird der sie
-verletzende Teil mit angemessenen Patches oder Code-Schnipseln innerhalb der
address@hidden des Pakets entfernt (siehe @ref{Pakete definieren}). Dadurch 
liefert Ihnen @code{guix build --source} nur den
-»befreiten« Quellcode und nicht den unmodifizierten Quellcode des Anbieters.
-
-
address@hidden Paketbenennung
address@hidden Paketbenennung
-
address@hidden Paketname
-Tatsächlich sind mit jedem Paket zwei Namen assoziiert: Zum einen gibt es
-den Namen der @emph{Scheme-Variablen}, der direkt nach @code{define-public}
-im Code steht. Mit diesem Namen kann das Paket im Scheme-Code nutzbar
-gemacht und zum Beispiel als Eingabe eines anderen Pakets benannt
-werden. Zum anderen gibt es die Zeichenkette im @code{name}-Feld einer
-Paketdefinition. Dieser Name wird von Paketverwaltungsbefehlen wie
address@hidden package} und @command{guix build} benutzt.
-
-Meistens sind die beiden identisch und ergeben sich aus einer Umwandlung des
-vom Anbieter verwendeten Projektnamens in Kleinbuchstaben, bei der
-Unterstriche durch Bindestriche ersetzt werden. Zum Beispiel wird GNUnet
-unter dem Paketnamen @code{gnunet} angeboten und SDL_net als @code{sdl-net}.
-
-An Bibliothekspakete hängen wir vorne kein @code{lib} als Präfix an, solange
-es nicht Teil des offiziellen Projektnamens ist. Beachten Sie aber die
-Abschnitte @ref{Python-Module} und @ref{Perl-Module}, in denen
-Sonderregeln für Module der Programmiersprachen Python und Perl beschrieben
-sind.
-
-Auch Pakete mit Schriftarten werden anders behandelt, siehe @ref{Schriftarten}.
-
-
address@hidden Versionsnummern
address@hidden Versionsnummern
-
address@hidden Paketversion
-Normalerweise stellen wir nur für die neueste Version eines
-Freie-Software-Projekts ein Paket bereit. Manchmal gibt es allerdings Fälle
-wie zum Beispiel untereinander inkompatible Bibliotheksversionen, so dass
-zwei (oder mehr) Versionen desselben Pakets angeboten werden müssen. In
-diesem Fall müssen wir verschiedene Scheme-Variablennamen benutzen. Wir
-benutzen dann für die neueste Version den Namen, wie er im Abschnitt
address@hidden festgelegt wird, und geben vorherigen Versionen
-denselben Namen mit einem zusätzlichen Suffix aus @code{-} gefolgt vom
-kürzesten Präfix der Versionsnummer, mit dem noch immer zwei Versionen
-unterschieden werden können.
-
-Der Name innerhalb der Paketdefinition ist hingegen derselbe für alle
-Versionen eines Pakets und enthält keine Versionsnummer.
-
-Zum Beispiel können für GTK in den Versionen 2.24.20 und 3.9.12 Pakete wie
-folgt geschrieben werden:
-
address@hidden
-(define-public gtk+
-  (package
-    (name "gtk+")
-    (version "3.9.12")
-    ...))
-(define-public gtk+-2
-  (package
-    (name "gtk+")
-    (version "2.24.20")
-    ...))
address@hidden example
-Wenn wir auch GTK 3.8.2 wollten, würden wir das Paket schreiben als
address@hidden
-(define-public gtk+-3.8
-  (package
-    (name "gtk+")
-    (version "3.8.2")
-    ...))
address@hidden example
-
address@hidden See 
<https://lists.gnu.org/archive/html/guix-devel/2016-01/msg00425.html>,
address@hidden for a discussion of what follows.
address@hidden Versionsnummer, bei Snapshots aus Versionskontrolle
-Gelegentlich fügen wir auch Pakete für Snapshots aus dem
-Versionskontrollsystem des Anbieters statt formaler Veröffentlichungen zur
-Distribution hinzu. Das sollte die Ausnahme bleiben, weil die Entwickler
-selbst klarstellen sollten, welche Version als die stabile Veröffentlichung
-gelten sollte, ab und zu ist es jedoch notwendig. Was also sollten wir dann
-im @code{version}-Feld eintragen?
-
-Offensichtlich muss der Bezeichner des Commits, den wir als Snapshot aus dem
-Versionskontrollsystem nehmen, in der Versionszeichenkette zu erkennen sein,
-aber wir müssen auch sicherstellen, dass die Version monoton steigend ist,
-damit @command{guix package --upgrade} feststellen kann, welche Version die
-neuere ist. Weil Commit-Bezeichner, insbesondere bei Git, nicht monoton
-steigen, müssen wir eine Revisionsnummer hinzufügen, die wir jedes Mal
-erhöhen, wenn wir das Paket auf einen neueren Snapshot aktualisieren. Die
-sich ergebende Versionszeichenkette sieht dann so aus:
-
address@hidden
-2.0.11-3.cabba9e
-  ^    ^    ^
-  |    |    `-- Commit-ID beim Anbieter
-  |    |
-  |    `--- Revisionsnummer des Guix-Pakets
-  |
-die neueste Version, die der Anbieter veröffentlicht hat
address@hidden example
-
-Es ist eine gute Idee, die Commit-Bezeichner im @code{version}-Feld auf,
-sagen wir, 7 Ziffern zu beschränken. Das sieht besser aus (angenommen, das
-sollte hier eine Rolle spielen) und vermeidet Probleme, die mit der
-maximalen Länge von Shebangs zu tun haben (127 Bytes beim Linux-Kernel). Am
-besten benutzt man jedoch den vollständigen Commit-Bezeichner in
address@hidden, um Mehrdeutigkeiten zu vermeiden. Eine typische
-Paketdefinition könnte so aussehen:
-
address@hidden
-(define mein-paket
-  (let ((commit "c3f29bc928d5900971f65965feaae59e1272a3f7")
-        (revision "1"))          ;Guix-Paketrevision
-    (package
-      (version (git-version "0.9" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "git://example.org/mein-paket.git")
-                      (commit commit)))
-                (sha256 (base32 "address@hidden"))
-                (file-name (git-file-name name version))))
-      ;; @dots{}
-      )))
address@hidden example
-
address@hidden Zusammenfassungen und Beschreibungen
address@hidden Zusammenfassungen und Beschreibungen
-
address@hidden Paketbeschreibung
address@hidden Paketzusammenfassung
-Wie wir bereits gesehen haben, enthält jedes Paket in address@hidden eine (im
-Code englischsprachige) Zusammenfassung (englisch: Synopsis) und eine
-Beschreibung (englisch: Description; siehe @ref{Pakete definieren}). 
Zusammenfassungen und Beschreibungen sind wichtig: Sie werden
-mit @command{guix package --search} durchsucht und stellen eine
-entscheidende Informationsquelle für Nutzer dar, die entscheiden wollen, ob
-das Paket Ihren Bedürfnissen entspricht, daher sollten Paketentwickler Acht
-geben, was sie dort eintragen.
-
-Zusammenfassungen müssen mit einem Großbuchstaben beginnen und dürfen nicht
-mit einem Punkt enden. Sie dürfen nicht mit den Artikeln »a« oder »the«
-beginnen, die meistens ohnehin nichts zum Verständnis beitragen. Zum
-Beispiel sollte »File-frobbing tool« gegenüber »A tool that frobs files«
-vorgezogen werden. Die Zusammenfassung sollte aussagen, um was es sich beim
-Paket handelt — z.B.@: »Core GNU utilities (file, text, shell)« —, oder
-aussagen, wofür es benutzt wird — z.B.@: ist die Zusammenfassung für
address@hidden »Print lines matching a pattern«.
-
-Beachten Sie, dass die Zusammenfassung für eine sehr große Leserschaft einen
-Sinn ergeben muss. Zum Beispiel würde »Manipulate alignments in the SAM
-format« vielleicht von einem erfahrenen Forscher in der Bioinformatik
-verstanden, könnte für die Nicht-Spezialisten in Guix’ Zielgruppe aber wenig
-hilfreich sein oder würde diesen sogar eine falsche Vorstellung geben. Es
-ist eine gute Idee, sich eine Zusammenfassung zu überlegen, die eine
-Vorstellung von der Anwendungsdomäne des Pakets vermittelt. Im Beispiel hier
-würden sich die Nutzer mit »Manipulate nucleotide sequence alignments«
-hoffentlich ein besseres Bild davon machen können, ob das Paket ist, wonach
-sie suchen.
-
-Beschreibungen sollten zwischen fünf und zehn Zeilen lang sein. Benutzen Sie
-vollständige Sätze und vermeiden Sie Abkürzungen, die Sie nicht zuvor
-eingeführt haben. Vermeiden Sie bitte Marketing-Phrasen wie »world-leading«
-(»weltweit führend«), »industrial-strength« (»industrietauglich«) und
-»next-generation« (»der nächsten Generation«) ebenso wie Superlative wie
-»the most advanced« (»das fortgeschrittenste«) — davon haben Nutzer nichts,
-wenn sie ein Paket suchen, und es könnte sogar verdächtig klingen. Versuchen
-Sie stattdessen, bei den Fakten zu bleiben und dabei Anwendungszwecke und
-Funktionalitäten zu erwähnen.
-
address@hidden Texinfo-Auszeichnungen, in Paketbeschreibungen
-Beschreibungen können wie bei Texinfo ausgezeichneten Text enthalten. Das
-bedeutet, Text kann Verzierungen wie @code{@@code} oder @code{@@dfn},
-Auflistungen oder Hyperlinks enthalten (siehe @ref{Overview,,, texinfo, GNU
-Texinfo}). Sie sollten allerdings vorsichtig sein, wenn Sie bestimmte
-Zeichen wie @samp{@@} und geschweifte Klammern schreiben, weil es sich dabei
-um die grundlegenden Sonderzeichen in Texinfo handelt (siehe @ref{Special
-Characters,,, texinfo, GNU Texinfo}). Benutzungsschnittstellen wie
address@hidden package --show} kümmern sich darum, solche Auszeichnungen
-angemessen darzustellen.
-
-Zusammenfassungen und Beschreibungen werden von Freiwilligen
address@hidden://translationproject.org/domain/guix-packages.html, beim
-Translation Project} übersetzt, damit so viele Nutzer wie möglich sie in
-ihrer Muttersprache lesen können. Mit Schnittstellen für Benutzer können sie
-in der von der aktuell eingestellten Locale festgelegten Sprache durchsucht
-und angezeigt werden.
-
-Damit @command{xgettext} sie als übersetzbare Zeichenketten extrahieren
-kann, @emph{müssen} Zusammenfassungen und Beschreibungen einfache
-Zeichenketten-Literale sein. Das bedeutet, dass Sie diese Zeichenketten
-nicht mit Prozeduren wie @code{string-append} oder @code{format}
-konstruieren können:
-
address@hidden
-(package
-  ;; @dots{}
-  (synopsis "This is translatable")
-  (description (string-append "This is " "*not*" " translatable.")))
address@hidden lisp
-
-Übersetzen ist viel Arbeit, also passen Sie als Paketentwickler bitte umso
-mehr auf, wenn Sie Ihre Zusammenfassungen und Beschreibungen formulieren,
-weil jede Änderung zusätzliche Arbeit für Übersetzer bedeutet. Um den
-Übersetzern zu helfen, können Sie Empfehlungen und Anweisungen für diese
-sichtbar machen, indem Sie spezielle Kommentare wie in diesem Beispiel
-einfügen (siehe @ref{xgettext Invocation,,, gettext, GNU Gettext}):
-
address@hidden
-;; TRANSLATORS: "X11 resize-and-rotate" should not be translated.
-(description "ARandR is designed to provide a simple visual front end
-for the X11 resize-and-rotate (RandR) extension. @dots{}")
address@hidden example
-
-
address@hidden Python-Module
address@hidden Python-Module
-
address@hidden python
-Zur Zeit stellen wir ein Paket für Python 2 und eines für Python 3 jeweils
-über die Scheme-Variablen mit den Namen @code{python-2} und @code{python}
-zur Verfügung, entsprechend der Erklärungen im Abschnitt 
@ref{Versionsnummern}. Um Verwirrungen und Namenskollisionen mit anderen
-Programmiersprachen zu vermeiden, erscheint es als wünschenswert, dass der
-Name eines Pakets für ein Python-Modul auch das Wort @code{python} enthält.
-
-Manche Module sind nur mit einer Version von Python kompatibel, andere mit
-beiden. Wenn das Paket Foo nur mit Python 3 kompiliert werden kann, geben
-wir ihm den Namen @code{python-foo}, wenn es nur mit Python 2 kompilierbar
-ist, wählen wir den Namen @code{python2-foo}. Ist es mit beiden Versionen
-kompatibel, erstellen wir zwei Pakete jeweils mit dem entsprechenden Namen.
-
-Wenn ein Projekt bereits das Wort @code{python} im Namen hat, lassen wir es
-weg; zum Beispiel ist das Modul python-dateutil unter den Namen
address@hidden und @code{python2-dateutil} verfügbar. Wenn der
-Projektname mit @code{py} beginnt (z.B.@: @code{pytz}), behalten wir ihn bei
-und stellen das oben beschriebene Präfix voran.
-
address@hidden Abhängigkeiten angeben
address@hidden Eingaben, für Python-Pakete
-
-Informationen über Abhängigkeiten von Python-Paketen, welche mal mehr und
-mal weniger stimmen, finden sich normalerweise im Verzeichnisbaum des
-Paketquellcodes: in der Datei @file{setup.py}, in @file{requirements.txt}
-oder in @file{tox.ini}.
-
-Wenn Sie ein Rezept für ein Python-Paket schreiben, lautet Ihr Auftrag,
-diese Abhängigkeiten auf angemessene Arten von »Eingaben« abzubilden (siehe
address@hidden, inputs}). Obwohl der @code{pypi}-Importer hier
-normalerweise eine gute Arbeit leistet (siehe @ref{Aufruf von guix import}),
-könnten Sie die folgende Prüfliste durchgehen wollen, um zu bestimmen, wo
-welche Abhängigkeit eingeordnet werden sollte.
-
address@hidden
-
address@hidden
-Derzeit ist unser Python-2-Paket so geschrieben, dass es @code{setuptools}
-und @code{pip} installiert, wie es auch in den Vorgaben zu Python 3.4
-gemacht wird. Sie müssen also keines der beiden als Eingabe angeben. Wenn
-Sie es doch tun, wird @command{guix lint} Sie darauf mit einer Warnung
-aufmerksam machen.
-
address@hidden
-Python-Abhängigkeiten, die zur Laufzeit gebraucht werden, stehen im
address@hidden Solche werden typischerweise mit dem
-Schlüsselwort @code{install_requires} in @file{setup.py} oder in der Datei
address@hidden definiert.
-
address@hidden
-Python-Pakete, die nur zur Erstellungszeit gebraucht werden — z.B.@: jene,
-die mit dem Schlüsselwort @code{setup_requires} in @file{setup.py}
-aufgeführt sind — oder die nur zum Testen gebraucht werden — also die in
address@hidden —, stehen in @code{native-inputs}. Die Begründung ist,
-dass (1) sie nicht propagiert werden müssen, weil sie zur Laufzeit nicht
-gebraucht werden, und (2) wir beim Cross-Kompilieren die »native« Eingabe
-des Wirtssystems wollen.
-
-Beispiele sind die Testrahmen @code{pytest}, @code{mock} und
address@hidden Wenn natürlich irgendeines dieser Pakete auch zur Laufzeit
-benötigt wird, muss es doch in @code{propagated-inputs} stehen.
-
address@hidden
-Alles, was nicht in die bisher genannten Kategorien fällt, steht in
address@hidden, zum Beispiel Programme oder C-Bibliotheken, die zur
-Erstellung von Python-Paketen mit enthaltenen C-Erweiterungen gebraucht
-werden.
-
address@hidden
-Wenn ein Python-Paket optionale Abhängigkeiten hat (@code{extras_require}),
-ist es Ihnen überlassen, sie hinzuzufügen oder nicht hinzuzufügen, je
-nachdem wie es um deren Verhältnis von Nützlichkeit zu anderen Nachteilen
-steht (siehe @ref{Einreichen von Patches, @command{guix size}}).
-
address@hidden itemize
-
-
address@hidden Perl-Module
address@hidden Perl-Module
-
address@hidden perl
-Eigenständige Perl-Programme bekommen einen Namen wie jedes andere Paket,
-unter Nutzung des Namens beim Anbieter in Kleinbuchstaben. Für Perl-Pakete,
-die eine einzelne Klasse enthalten, ersetzen wir alle Vorkommen von
address@hidden::} durch Striche und hängen davor das Präfix @code{perl-} an. Die
-Klasse @code{XML::Parser} wird also zu @code{perl-xml-parser}. Module, die
-mehrere Klassen beinhalten, behalten ihren Namen beim Anbieter, in
-Kleinbuchstaben gesetzt, und auch an sie wird vorne das Präfix @code{perl-}
-angehängt. Es gibt die Tendenz, solche Module mit dem Wort @code{perl}
-irgendwo im Namen zu versehen, das wird zu Gunsten des Präfixes
-weggelassen. Zum Beispiel wird aus @code{libwww-perl} bei uns
address@hidden
-
-
address@hidden Java-Pakete
address@hidden Java-Pakete
-
address@hidden java
-Eigenständige Java-Programme werden wie jedes andere Paket benannt, d.h.@:
-mit ihrem in Kleinbuchstaben geschriebenen Namen beim Anbieter.
-
-Um Verwirrungen und Namenskollisionen mit anderen Programmiersprachen zu
-vermeiden, ist es wünschenswert, dass dem Namem eines Pakets zu einem
-Java-Paket das Präfix @code{java-} vorangestellt wird. Wenn ein Projekt
-bereits das Wort @code{java} im Namen trägt, lassen wir es weg; zum Beispiel
-befindet sich das Java-Paket @code{ngsjava} in einem Paket namens
address@hidden
-
-Bei Java-Paketen, die eine einzelne Klasse oder eine kleine
-Klassenhierarchie enthalten, benutzen wir den Klassennamen in
-Kleinbuchstaben und ersetzen dabei alle Vorkommen von @code{.} durch Striche
-und setzen das Präfix @code{java-} davor. Die Klasse
address@hidden wird also zum Paket
address@hidden
-
-
address@hidden Schriftarten
address@hidden Schriftarten
-
address@hidden Schriftarten
-Wenn Schriftarten in der Regel nicht von Nutzern zur Textbearbeitung
-installiert werden oder als Teil eines größeren Software-Pakets mitgeliefert
-werden, gelten dafür die allgemeinen Paketrichtlinien für Software. Zum
-Beispiel trifft das auf als Teil des X.Org-Systems ausgelieferte
-Schriftarten zu, oder auf Schriftarten, die ein Teil von TeX Live sind.
-
-Damit es Nutzer leichter haben, nach Schriftarten zu suchen, konstruieren
-wir die Namen von anderen Paketen, die nur Schriftarten enthalten, nach dem
-folgenden Schema, egal was der Paketname beim Anbieter ist.
-
-Der Name eines Pakets, das nur eine Schriftfamilie enthält, beginnt mit
address@hidden Darauf folgt der Name des Schriftenherstellers und ein Strich
address@hidden, sofern bekannt ist, wer der Schriftenhersteller ist, und dann 
der
-Name der Schriftfamilie, in dem Leerzeichen durch Striche ersetzt werden
-(und wie immer mit Großbuchstaben statt Kleinbuchstaben). Zum Beispiel
-befindet sich die von SIL hergestellte Gentium-Schriftfamilie im Paket mit
-dem Namen @code{font-sil-gentium}.
-
-Wenn ein Paket mehrere Schriftfamilien enthält, wird der Name der Sammlung
-anstelle des Schriftfamiliennamens benutzt. Zum Beispiel umfassen die
-Liberation-Schriftarten drei Familien: Liberation Sans, Liberation Serif und
-Liberation Mono. Man könnte sie getrennt voneinander mit den Namen
address@hidden und so weiter in Pakete einteilen, da sie aber
-unter einem gemeinsamen Namen angeboten werden, packen wir sie lieber
-zusammen in ein Paket mit dem Namen @code{font-liberation}.
-
-Für den Fall, dass mehrere Formate derselben Schriftfamilie oder
-Schriftartensammlung in separate Pakete kommen, wird ein Kurzname für das
-Format mit einem Strich vorne zum Paketnamen hinzugefügt. Wir benutzen
address@hidden für TrueType-Schriftarten, @code{-otf} für OpenType-Schriftarten
-und @code{-type1} für PostScript-Typ-1-Schriftarten.
-
-
address@hidden Code-Stil
address@hidden Code-Stil
-
-Im Allgemeinen folgt unser Code den GNU Coding Standards (siehe @ref{Top,,,
-standards, GNU Coding Standards}). Da diese aber nicht viel über Scheme zu
-sagen haben, folgen hier einige zusätzliche Regeln.
-
address@hidden
-* Programmierparadigmen::    Wie Sie Ihre Elemente zusammenstellen.
-* Module::                   Wo Sie Ihren Code unterbringen.
-* Datentypen und Mustervergleich::  Implementierung von Datenstrukturen.
-* Formatierung von Code::    Schreibkonventionen.
address@hidden menu
-
address@hidden Programmierparadigmen
address@hidden Programmierparadigmen
-
-Scheme-Code wird in Guix auf rein funktionale Weise geschrieben. Eine
-Ausnahme ist Code, der mit Ein- und Ausgabe zu tun hat, und Prozeduren, die
-grundlegende Konzepte implementieren, wie zum Beispiel die Prozedur
address@hidden
-
address@hidden Module
address@hidden Module
-
-Guile-Module, die beim Erstellen nutzbar sein sollen, müssen im Namensraum
address@hidden(guix build @dots{})} leben. Sie dürfen auf keine anderen Guix- 
oder
-GNU-Module Bezug nehmen. Jedoch ist es in Ordnung, wenn ein »wirtsseitiges«
-Modul ein erstellungsseitiges Modul benutzt.
-
-Module, die mit dem weiteren GNU-System zu tun haben, sollten im Namensraum
address@hidden(gnu @dots{})} und nicht in @code{(guix @dots{})} stehen.
-
address@hidden Datentypen und Mustervergleich
address@hidden Datentypen und Mustervergleich
-
-Im klassischen Lisp gibt es die Tendenz, Listen zur Darstellung von allem zu
-benutzen, und diese dann »händisch« zu durchlaufen mit @code{car},
address@hidden, @code{cadr} und so weiter. Dieser Stil ist aus verschiedenen
-Gründen problematisch, insbesondere wegen der Tatsache, dass er schwer zu
-lesen, schnell fehlerbehaftet und ein Hindernis beim Melden von Typfehlern
-ist.
-
-Guix-Code sollte angemessene Datentypen definieren (zum Beispiel mit
address@hidden) statt Listen zu missbrauchen. Außerdem sollte er
-das @code{(ice-9 match)}-Modul von Guile zum Mustervergleich benutzen,
-besonders mit Listen.
-
address@hidden Formatierung von Code
address@hidden Formatierung von Code
-
address@hidden Formatierung von Code
address@hidden Code-Stil
-Beim Schreiben von Scheme-Code halten wir uns an die üblichen
-Gepflogenheiten unter Scheme-Programmierern. Im Allgemeinen bedeutet das,
-dass wir uns an @url{http://mumble.net/~campbell/scheme/style.txt,
-Riastradh's Lisp Style Rules} halten. Es hat sich ergeben, dass dieses
-Dokument auch die Konventionen beschreibt, die im Code von Guile
-hauptsächlich verwendet werden. Es ist gut durchdacht und schön geschrieben,
-also lesen Sie es bitte.
-
-Ein paar in Guix eingeführte Sonderformen, wie zum Beispiel das
address@hidden, haben abweichende Regeln für die Einrückung. Diese
-sind in der Datei @file{.dir-locals.el} definiert, die Emacs automatisch
-benutzt. Beachten Sie auch, dass Emacs-Guix einen Modus namens
address@hidden bereitstellt, der Guix-Code richtig einrückt und
-hervorhebt (siehe @ref{Entwicklung,,, emacs-guix, The Emacs-Guix Reference
-Manual}).
-
address@hidden Einrückung, Code-
address@hidden Formatierung, Code-
-Falls Sie nicht Emacs verwenden, sollten Sie sicherstellen, dass Ihr Editor
-diese Regeln kennt. Um eine Paketdefinition automatisch einzurücken, können
-Sie auch Folgendes ausführen:
-
address@hidden
-./etc/indent-code.el gnu/packages/@var{Datei}.scm @var{Paket}
address@hidden example
-
address@hidden
-Dadurch wird die Definition von @var{Paket} in
address@hidden/packages/@var{Datei}.scm} automatisch eingerückt, indem Emacs im
-Batch-Modus läuft. Um die Einrückung in einer gesamten Datei vorzunehmen,
-lassen Sie das zweite Argument weg:
-
address@hidden
-./etc/indent-code.el gnu/services/@var{Datei}.scm
address@hidden example
-
address@hidden Vim, zum Editieren von Scheme-Code
-Wenn Sie Code mit Vim bearbeiten, empfehlen wir, dass Sie @code{:set
-autoindent} ausführen, damit Ihr Code automatisch eingerückt wird, während
-Sie ihn schreiben. Außerdem könnte Ihnen
address@hidden://www.vim.org/scripts/script.php?script_id=3998,
address@hidden dabei helfen, mit all diesen Klammern fertigzuwerden.
-
-Wir fordern von allen Prozeduren auf oberster Ebene, dass sie über einen
-Docstring verfügen. Diese Voraussetzung kann jedoch bei einfachen, privaten
-Prozeduren im Namensraum @code{(guix build @dots{})} aufgeweicht werden.
-
-Prozeduren sollten nicht mehr als vier positionsbestimmte Parameter
-haben. Benutzen Sie Schlüsselwort-Parameter für Prozeduren, die mehr als
-vier Parameter entgegennehmen.
-
-
address@hidden Einreichen von Patches
address@hidden Einreichen von Patches
-
-Die Entwicklung wird mit Hilfe des verteilten Versionskontrollsystems Git
-durchgeführt. Daher ist eine ständige Verbindung zum Repository nicht
-unbedingt erforderlich. Wir begrüßen Beiträge in Form von Patches, die
-mittels @code{git format-patch} erstellt und an die Mailingliste
address@hidden@@gnu.org} geschickt werden.
-
-Diese Mailing-Liste setzt auf einer Debbugs-Instanz auf, die zugänglich ist
-unter @uref{https://bugs.gnu.org/guix-patches}, wodurch wir den Überblick
-über Eingereichtes behalten können. Jede an diese Mailing-Liste gesendete
-Nachricht bekommt eine neue Folgenummer zugewiesen, so dass man eine
-Folge-Email zur Einreichung an @address@hidden@@debbugs.gnu.org} senden
-kann, wobei @var{NNN} für die Folgenummer steht (siehe @ref{Senden einer 
Patch-Reihe}).
-
-Bitte schreiben Sie Commit-Logs im ChangeLog-Format (siehe @ref{Change
-Logs,,, standards, GNU Coding Standards}); dazu finden Sie Beispiele unter
-den bisherigen Commits.
-
-Bevor Sie einen Patch einreichen, der eine Paketdefinition hinzufügt oder
-verändert, gehen Sie bitte diese Prüfliste durch:
-
address@hidden
address@hidden
-Wenn die Autoren der verpackten Software eine kryptografische Signatur
-bzw. Beglaubigung für den Tarball der Veröffentlichung anbieten, so machen
-Sie sich bitte die Mühe, die Echtheit des Archivs zu überprüfen. Für eine
-abgetrennte GPG-Signaturdatei würden Sie das mit dem Befehl @code{gpg
---verify} tun.
-
address@hidden
-Nehmen Sie sich die Zeit, eine passende Zusammenfassung und Beschreibung für
-das Paket zu verfassen. Unter @ref{Zusammenfassungen und Beschreibungen} 
finden Sie
-dazu einige Richtlinien.
-
address@hidden
-Verwenden Sie @code{guix lint @var{Paket}}, wobei @var{Paket} das neue oder
-geänderte Paket bezeichnet, und beheben Sie alle gemeldeten Fehler (siehe
address@hidden von guix lint}).
-
address@hidden
-Stellen Sie sicher, dass das Paket auf Ihrer Plattform erstellt werden kann,
-indem Sie @code{guix build @var{Paket}} ausführen.
-
address@hidden
-Wir empfehlen, dass Sie auch versuchen, das Paket auf anderen unterstützten
-Plattformen zu erstellen. Da Sie vielleicht keinen Zugang zu echter Hardware
-für diese Plattformen haben, empfehlen wir, den
address@hidden zu benutzen, um sie zu emulieren. Um ihn zu
-aktivieren, fügen Sie den folgenden Dienst in die Liste der Dienste
-(»services«) in Ihrer @code{operating-system}-Konfiguration ein:
-
address@hidden
-(service qemu-binfmt-service-type
- (qemu-binfmt-configuration
-   (platforms (lookup-qemu-platforms "arm" "aarch64" "mips64el"))
-   (guix-support? #t)))
address@hidden example
-
-Rekonfigurieren Sie anschließend Ihr System.
-
-Sie können Pakete für andere Plattformen erstellen lassen, indem Sie die
-Befehlszeilenoption @code{--system} angeben. Um zum Beispiel das Paket
-»hello« für die Architekturen armhf, aarch64 oder mips64 erstellen zu
-lassen, würden Sie jeweils die folgenden Befehle angeben:
address@hidden
-guix build --system=armhf-linux --rounds=2 hello
-guix build --system=aarch64-linux --rounds=2 hello
-guix build --system=mips64el-linux --rounds=2 hello
address@hidden example
-
address@hidden
address@hidden gebündelt
-Achten Sie darauf, dass im Paket keine Software gebündelt mitgeliefert wird,
-die bereits in separaten Paketen zur Verfügung steht.
-
-Manchmal enthalten Pakete Kopien des Quellcodes ihrer Abhängigkeiten, um
-Nutzern die Installation zu erleichtern. Als eine Distribution wollen wir
-jedoch sicherstellen, dass solche Pakete die schon in der Distribution
-verfügbare Fassung benutzen, sofern es eine gibt. Dadurch wird sowohl der
-Ressourcenverbrauch optimiert (die Abhängigkeit wird so nur einmal erstellt
-und gespeichert) als auch der Distribution die Möglichkeit gegeben,
-ergänzende Änderungen durchzuführen, um beispielsweise
-Sicherheitsaktualisierungen für ein bestimmtes Paket an nur einem Ort
-einzuspielen, die aber das gesamte System betreffen — gebündelt
-mitgelieferte Kopien würden dies verhindern.
-
address@hidden
-Schauen Sie sich das von @command{guix size} ausgegebene Profil an (siehe
address@hidden von guix size}). Dadurch können Sie Referenzen auf andere Pakete
-finden, die ungewollt vorhanden sind. Dies kann auch dabei helfen, zu
-entscheiden, ob das Paket aufgespalten werden sollte (siehe @ref{Pakete mit 
mehreren Ausgaben.}) und welche optionalen Abhängigkeiten verwendet
-werden sollten. Dabei sollten Sie es wegen seiner enormen Größe insbesondere
-vermeiden, @code{texlive} als eine Abhängigkeit hinzuzufügen; benutzen Sie
-stattdessen @code{texlive-tiny} oder @code{texlive-union}.
-
address@hidden
-Achten Sie bei wichtigen Änderungen darauf, dass abhängige Pakete (falls
-vorhanden) nicht von der Änderung beeinträchtigt werden; @code{guix refresh
---list-dependent @var{Paket}} hilft Ihnen dabei (siehe @ref{Aufruf von guix 
refresh}).
-
address@hidden See 
<https://lists.gnu.org/archive/html/guix-devel/2016-10/msg00933.html>.
address@hidden Branching-Strategie
address@hidden Neuerstellungs-Zeitplan
-Je nachdem, wieviele abhängige Pakete es gibt, und entsprechend wieviele
-Neuerstellungen dadurch nötig würden, finden Commits auf anderen Branches
-statt, nach ungefähr diesen Regeln:
-
address@hidden @asis
address@hidden 300 abhängige Pakete oder weniger
address@hidden (störfreie Änderungen).
-
address@hidden zwischen 300 und 1200 abhängige Pakete
address@hidden (störfreie Änderungen). Dieser Branch wird circa alle
-3 Wochen mit @code{master} zusammengeführt. Themenbezogene Änderungen
-(z.B.@: eine Aktualisierung der GNOME-Plattform) können stattdessen auch auf
-einem eigenen Branch umgesetzt werden (wie @code{gnome-updates}).
-
address@hidden mehr als 1200 abhängige Pakete
address@hidden (kann auch größere und womöglich andere Software
-beeinträchtigende Änderungen umfassen). Dieser Branch wird planmäßig in
address@hidden alle 2,5 Monate oder so gemerget.
address@hidden table
-
-All diese Branches werden kontinuierlich
address@hidden://hydra.gnu.org/project/gnu, auf unserer Build-Farm} erstellt
-und in @code{master} gemerget, sobald alles erfolgreich erstellt worden
-ist. Dadurch können wir Probleme beheben, bevor sie bei Nutzern auftreten,
-und zudem das Zeitfenster, während dessen noch keine vorerstellten
-Binärdateien verfügbar sind, verkürzen.
-
address@hidden TODO: It would be good with badges on the website that tracks 
these
address@hidden branches.  Or maybe even a status page.
-Im Allgemeinen werden Branches außer @code{master} als @emph{unveränderlich}
-angesehen, wenn sie kürzlich ausgewertet wurden oder ein entsprechender
address@hidden existiert. Bitte fragen Sie auf der Mailing-Liste oder
-IRC, wenn Sie sich nicht sicher sind, wo ein Patch eingespielt werden
-sollte.
-
address@hidden
address@hidden Determinismus, von Erstellungsprozessen
address@hidden Reproduzierbare Erstellungen, Überprüfung
-Überprüfen Sie, ob der Erstellungsprozess deterministisch ist. Dazu prüfen
-Sie typischerweise, ob eine unabhängige Erstellung des Pakets genau dasselbe
-Ergebnis wie Ihre Erstellung hat, Bit für Bit.
-
-Dies können Sie leicht tun, indem Sie dasselbe Paket mehrere Male
-hintereinander auf Ihrer Maschine erstellen (siehe @ref{Aufruf von guix 
build}):
-
address@hidden
-guix build --rounds=2 mein-paket
address@hidden example
-
-Dies reicht aus, um eine ganze Klasse häufiger Ursachen von
-Nichtdeterminismus zu finden, wie zum Beispiel Zeitstempel oder
-zufallsgenerierte Ausgaben im Ergebnis der Erstellung.
-
-Eine weitere Möglichkeit ist, @command{guix challenge} (siehe @ref{Aufruf von 
guix challenge}) zu benutzen. Sie können es ausführen, sobald ein Paket
-commitet und von @address@hidden erstellt wurde, um zu
-sehen, ob dort dasselbe Ergebnis wie bei Ihnen geliefert wurde. Noch besser:
-Finden Sie eine andere Maschine, die das Paket erstellen kann, und führen
-Sie @command{guix publish} aus. Da sich die entfernte Erstellungsmaschine
-wahrscheinlich von Ihrer unterscheidet, können Sie auf diese Weise Probleme
-durch Nichtdeterminismus erkennen, die mit der Hardware zu tun haben — zum
-Beispiel die Nutzung anderer Befehlssatzerweiterungen — oder mit dem
-Betriebssystem-Kernel — zum Beispiel, indem @code{uname} oder
address@hidden/proc}-Dateien verwendet werden.
-
address@hidden
-Beim Schreiben von Dokumentation achten Sie bitte auf eine
-geschlechtsneutrale Wortwahl, wenn Sie sich auf Personen beziehen, wie
address@hidden://en.wikipedia.org/wiki/Singular_they, address@hidden
address@hidden »them« im Singular} und so weiter.
-
address@hidden
-Stelllen Sie sicher, dass Ihr Patch nur einen Satz zusammengehöriger
-Änderungen umfasst. Das Zusammenfassen nicht zusammengehöriger Änderungen
-erschwert und bremst das Durchsehen Ihres Patches.
-
-Beispiele für nicht zusammengehörige Änderungen sind das Hinzufügen mehrerer
-Pakete auf einmal, oder das Aktualisieren eines Pakets auf eine neue Version
-zusammen mit Fehlerbehebungen für das Paket.
-
address@hidden
-Bitte befolgen Sie unsere Richtlinien für die Code-Formatierung, womöglich
-wollen Sie dies automatisch tun lassen durch das Skript
address@hidden/indent-code.el} (siehe @ref{Formatierung von Code}).
-
address@hidden
-Benutzen Sie, wenn möglich, Spiegelserver (Mirrors) in der Quell-URL (siehe
address@hidden von guix download}). Verwenden Sie verlässliche URLs, keine
-automatisch generierten. Zum Beispiel sind Archive von GitHub nicht immer
-identisch von einer Generation auf die nächste, daher ist es in diesem Fall
-besser, als Quelle einen Klon des Repositorys zu verwenden. Benutzen Sie
address@hidden das @command{name}-Feld beim Angeben der URL; er hilft nicht
-wirklich und wenn sich der Name ändert, stimmt die URL nicht mehr.
-
address@hidden enumerate
-
-Bitte benutzen Sie @samp{[PATCH] @dots{}} als Betreff, wenn Sie einen Patch
-an die Mailing-Liste schicken. Sie können dazu Ihr E-Mail-Programm oder den
-Befehl @command{git send-email} benutzen (siehe @ref{Senden einer 
Patch-Reihe}). Wir bevorzugen es, Patches als reine Textnachrichten zu erhalten,
-entweder eingebettet (inline) oder als MIME-Anhänge. Sie sind dazu
-angehalten, zu überprüfen, ob Ihr Mail-Programm solche Dinge wie
-Zeilenumbrüche oder die Einrückung verändert, wodurch die Patches womöglich
-nicht mehr funktionieren.
-
-Wenn dadurch ein Fehler behoben wurde, schließen Sie bitte den Thread, indem
-Sie eine E-Mail an @address@hidden@@debbugs.gnu.org} senden.
-
address@hidden Senden einer Patch-Reihe
address@hidden einer Patch-Reihe}
address@hidden Patch-Reihe
address@hidden @code{git send-email}
address@hidden @code{git-send-email}
-
address@hidden Debbugs bug: https://debbugs.gnu.org/db/15/15361.html
-Wenn Sie eine Patch-Reihe senden (z.B.@: mit @code{git send-email}),
-schicken Sie bitte als Erstes eine Nachricht an
address@hidden@@gnu.org} und dann nachfolgende Patches an
address@hidden@var{NNN}@@debbugs.gnu.org}, um sicherzustellen, dass sie zusammen
-bearbeitet werden. Siehe @uref{https://debbugs.gnu.org/Advanced.html, die
-Debbugs-Dokumentation} für weitere Informationen.
diff --git a/doc/contributing.es.texi b/doc/contributing.es.texi
deleted file mode 100644
index 0529917..0000000
--- a/doc/contributing.es.texi
+++ /dev/null
@@ -1,1016 +0,0 @@
address@hidden Contribuir
address@hidden Contribuir
-
-Este proyecto es un esfuerzo colaborativo, y ¡necesitamos su ayuda para que
-crezca! Por favor, contacte con nosotras en @email{guix-devel@@gnu.org} y en
address@hidden en la red IRC Freenode. Estamos abiertas a ideas, informes de
-errores, parches y cualquier cosa que pueda ser de ayuda para el
-proyecto. Especialmente se agradece ayuda en empaquetamiento
-(@pxref{Guías de empaquetamiento}).
-
address@hidden código de conducta, de contribuidoras
address@hidden acuerdo de contribución
-Queremos proporcionar un entorno cálido, amistoso y libre de acoso, para que
-cualquiera pueda contribuir al máximo de sus capacidades. Para este fin
-nuestro proyecto usa un ``Acuerdo de Contribución'', que fue adaptado de
address@hidden://contributor-coventant.org}. Se puede encontrar una versión 
local
-en el fichero @file{CODE-OF-CONDUCT} del árbol de fuentes.
-
-Las contribuidoras no están obligadas a usar su nombre legal en los parches
-ni en la comunicación on-line; pueden usar cualquier nombre o seudónimo de
-su elección.
-
address@hidden
-* Construcción desde Git::  Lo último y mejor.
-* Ejecución de Guix antes de estar instalado::  Trucos de hacker.
-* La configuración perfecta::  Las herramientas adecuadas.
-* Guías de empaquetamiento::  Crecimiento de la distribución.
-* Estilo de codificación::  Higiene de la contribuidora.
-* Envío de parches::        Comparta su trabajo.
address@hidden menu
-
address@hidden Construcción desde Git
address@hidden Construcción desde Git
-
-Si quiere picar en el mismo Guix se recomienda usar la última versión del
-repositorio Git:
-
address@hidden
-git clone https://git.savannah.gnu.org/git/guix.git
address@hidden example
-
-Cuando se compila Guix de una copia de trabajo local (checkout), se
-requieren los siguientes paquetes, además de los mencionados en las
-instrucciones de instalación (@pxref{Requisitos}).
-
address@hidden
address@hidden @url{http://gnu.org/software/autoconf/, GNU Autoconf};
address@hidden @url{http://gnu.org/software/automake/, GNU Automake};
address@hidden @url{http://gnu.org/software/gettext/, GNU Gettext};
address@hidden @url{http://gnu.org/software/texinfo/, GNU Texinfo};
address@hidden @url{http://www.graphviz.org/, Graphviz};
address@hidden @url{http://www.gnu.org/software/help2man/, GNU Help2man 
(opcional)}.
address@hidden itemize
-
-El modo más fácil de preparar un entorno de desarrollo para Guix es, por
-supuesto, ¡usando Guix! Las siguientes órdenes inician un nuevo intérprete
-donde todas las dependencias y las variables de entorno apropiadas están
-listas para picar código en Guix:
-
address@hidden
-guix environment guix
address@hidden example
-
address@hidden de guix environment}, para más información sobre esa orden. Se
-pueden añadir dependencias adicionales con la opción @option{--ad-hoc}:
-
address@hidden
-guix environment guix --ad-hoc help2man git strace
address@hidden example
-
-Ejecute @command{./bootstrap} para generar la infraestructura del sistema de
-construcción usando Autoconf y Automake. Si obtiene un error como este:
-
address@hidden
-configure.ac:46: error: possibly undefined macro: PKG_CHECK_MODULES
address@hidden example
-
address@hidden
-probablemente significa que Autoconf no pudo encontrar el fichero pkg.m4,
-que proporciona pkg-config. Asegurese de que @file{pkg.m4} está
-disponible. Lo mismo aplica para el conjunto de macros @file{guile.m4} que
-proporciona Guile. Por ejemplo, si ha instalado Automake en
address@hidden/usr/local}, no va a buscar ficheros @file{.m4} en
address@hidden/usr/share}. En ese caso tiene que ejecutar la siguiente orden:
-
address@hidden
-export ACLOCAL_PATH=/usr/share/aclocal
address@hidden example
-
address@hidden Search Path,,, automake, The GNU Automake Manual} para más
-información.
-
-Entonces, ejecute @command{./configure} como siempre. Asegurese de pasar
address@hidden@var{directorio}}, donde @var{directorio} es el valor
-de @code{localstatedir} usado por su instalación actual (@pxref{El almacén},
-para información sobre esto).
-
-Finalmente, tiene que ejecutar @code{make check} para iniciar las pruebas
-(@pxref{Ejecución de la batería de pruebas}). Si algo falla, eche un vistazo a 
las
-instrucciones de instalación (@pxref{Instalación}) o envíe un mensaje---en
-Inglés---a la @email{guix-devel@@gnu.org, lista de correo}.
-
-
address@hidden Ejecución de Guix antes de estar instalado
address@hidden Ejecución de Guix antes de estar instalado
-
-Para mantener un entorno de trabajo estable, encontrará útil probar los
-cambios hechos en su copia de trabajo local sin instalarlos realmente. De
-esa manera, puede distinguir entre su sombrero de ``usuaria final'' y el
-traje de ``harapos''.
-
-Para dicho fin, todas las herramientas de línea de órdenes pueden ser usadas
-incluso si no ha ejecutado @code{make install}. Para hacerlo, primero
-necesita tener un entorno con todas las dependencias disponibles
-(@pxref{Construcción desde Git}), y entonces añada al inicio de cada orden
address@hidden/pre-inst-env} (el guión @file{pre-inst-env} se encuentra en la
-raíz del árbol de compilación de Guix, como address@hidden opción
address@hidden a @command{sudo} asegura que @code{GUILE_LOAD_PATH} contiene la
-información correcta para que @command{guix-daemon} y las herramientas que
-usa puedan encontrar los módulos Guile que necesitan.}:
-
address@hidden
-$ sudo -E ./pre-inst-env guix-daemon --build-users-group=guixbuild
-$ ./pre-inst-env guix build hello
address@hidden example
-
address@hidden
-De manera similar, para una sesión de Guile que use los módulos Guix:
-
address@hidden
-$ ./pre-inst-env guile -c '(use-modules (guix utils)) (pk (%current-system))'
-
-;;; ("x86_64-linux")
address@hidden example
-
address@hidden
address@hidden REPL
address@hidden entorno interactivo
address@hidden y para un entorno interactivo (REPL) (@pxref{Using Guile
-Interactively,,, guile, Guile Reference Manual}):
-
address@hidden
-$ ./pre-inst-env guile
-scheme@@(guile-user)> ,use(guix)
-scheme@@(guile-user)> ,use(gnu)
-scheme@@(guile-user)> (define serpientes
-                       (fold-packages
-                         (lambda (paquete lst)
-                           (if (string-prefix? "python"
-                                               (package-name paquete))
-                               (cons paquete lst)
-                               lst))
-                         '()))
-scheme@@(guile-user)> (length serpientes)
-$1 = 361
address@hidden example
-
-El guión @command{pre-inst-env} fija todas las variables de entorno
-necesarias para permitir esto, incluyendo @env{PATH} y
address@hidden
-
-Fíjese que la orden @command{./pre-inst-env guix pull} @emph{no} actualiza
-el árbol de fuentes local; simplemente actualiza el enlace
address@hidden/.config/guix/latest} (@pxref{Invocación de guix pull}). Ejecute
address@hidden pull} si quiere actualizar su árbol de fuentes local.
-
-
address@hidden La configuración perfecta
address@hidden La configuración perfecta
-
-La configuración perfecta para hackear en Guix es básicamente la
-configuración perfecta para hacerlo en Guile (@pxref{Using Guile in Emacs,,,
-guile, Guile Reference Manual}). Primero, necesita más que un editor,
-necesita @url{http://www.gnu.org/software/emacs, Emacs}, empoderado por el
-maravilloso @url{http://nongnu.org/geiser, Geiser}. Para configurarlo,
-ejecute:
-
address@hidden
-guix package -i emacs guile emacs-geiser
address@hidden example
-
-Geiser permite desarrollo incremental e interactivo dentro de Emacs:
-compilación y evaluación de código dentro de los buffers, acceso a
-documentación en línea (docstrings), completado dependiente del contexto,
address@hidden para saltar a la definición de un objeto, una consola interactiva
-(REPL) para probar su código, y más (@pxref{Introducción,,, geiser, Geiser
-User Manual}). Para desarrollar Guix adecuadamente, asegúrese de aumentar la
-ruta de carga de Guile (load-path) para que encuentre los ficheros fuente de
-su copia de trabajo:
-
address@hidden
-;; @r{Suponiendo que la copia de trabajo de Guix está en ~/src/guix.}
-(with-eval-after-load 'geiser-guile
-  (add-to-list 'geiser-guile-load-path "~/src/guix"))
address@hidden lisp
-
-Para realmente editar el código, Emacs tiene un modo limpio para
-Scheme. Pero además de eso, no debe perderse
address@hidden://www.emacswiki.org/emacs/ParEdit, Paredit}. Provee de 
facilidades
-para operar directamente en el árbol sintáctico como elevar una expresión S
-o recubrirla, embeber o expulsar la siguiente expresión S, etc.
-
address@hidden fragmentos de código
address@hidden plantillas
address@hidden reducir la verborrea
-También proporcionamos plantillas para los mensajes de revisión de git
-comunes y definiciones de paquetes en el directorio
address@hidden/snippets}. Estas plantillas pueden ser usadas con
address@hidden://joaotavora.github.io/yasnippet, YASnippet} para expandir
-mnemotécnicos a fragmentos interactivos de texto. Puedes querer añadir el
-directorio de fragmentos a la variable @var{yas-snippet-dirs} en Emacs.
-
address@hidden
-;; @r{Suponiendo que la copia de trabajo de Guix está en ~/src/guix.}
-(with-eval-after-load 'yasnippet
-  (add-to-list 'yas-snippet-dirs "~/src/guix/etc/snippets"))
address@hidden lisp
-
-Los fragmentos de mensajes de la revisión dependen de
address@hidden://magit.vc/, Magit} para mostrar los ficheros preparados. En la
-edición del mensaje de la revisión teclee @code{add} seguido de @kbd{TAB}
-(el tabulador) para insertar la plantilla del mensaje de la revisión de
-adición de un paquete; teclee @code{update} seguido de @kbd{TAB} para
-insertar una plantilla de actualización de un paquete; teclee @code{https}
-seguido de @kbd{TAB} para insertar una plantilla para cambiar la URI de la
-página de un paquete a HTTPS.
-
-El fragmento principal para @code{scheme-mode} es activado al teclear
address@hidden seguido de @kbd{TAB}. Este fragmento también inserta el
-lanzador @code{origin...} que puede ser expandido de nuevo. El fragmento
address@hidden puede a su vez insertar otros identificadores de lanzado
-terminando en @code{...}, que pueden ser expandidos de nuevo.
-
-
address@hidden Guías de empaquetamiento
address@hidden Guías de empaquetamiento
-
address@hidden paquetes, creación
-La distribución GNU es reciente y puede no disponer de alguno de sus
-paquetes favoritos. Esta sección describe cómo puede ayudar a hacer crecer
-la distribución.
-
-Los paquetes de software libre habitualmente se distribuyen en forma de
address@hidden de código fuente}---típicamente ficheros @file{tar.gz} que
-contienen todos los ficheros fuente. Añadir un paquete a la distribución
-significa esencialmente dos cosas: añadir una @dfn{receta} que describe cómo
-construir el paquete, la que incluye una lista de otros paquetes necesarios
-para la construcción, y añadir @dfn{metadatos del paquete} junto a dicha
-receta, como la descripción y la información de licencias.
-
-En Guix toda esta información está contenida en @dfn{definiciones de
-paquete}. Las definiciones de paquete proporcionan una vista de alto nivel
-del paquete. Son escritas usando la sintaxis del lenguaje de programación
-Scheme; de hecho, definimos una variable por cada paquete enlazada a su
-definición y exportamos esa variable desde un módulo (@pxref{Módulos de 
paquetes}). No obstante, un conocimiento profundo de Scheme @emph{no} es un
-pre-requisito para la creación de paquetes. Para más información obre las
-definiciones de paquetes, @pxref{Definición de paquetes}.
-
-Una vez que una definición de paquete está en su lugar, almacenada en un
-fichero del árbol de fuentes de Guix, puede probarse usando la orden
address@hidden build} (@pxref{Invocación de guix build}). Por ejemplo, asumiendo
-que el nuevo paquete se llama @code{gnuevo}, puede ejecutar esta orden desde
-el árbol de construcción de Guix (@pxref{Ejecución de Guix antes de estar 
instalado}):
-
address@hidden
-./pre-inst-env guix build gnuevo --keep-failed
address@hidden example
-
-El uso de @code{--keep-failed} facilita la depuración de errores de
-construcción ya que proporciona acceso al árbol de la construcción
-fallida. Otra opción útil de línea de órdenes para la depuración es
address@hidden, para acceder al log de construcción.
-
-Si el paquete resulta desconocido para la orden @command{guix}, puede ser
-que el fichero fuente contenga un error de sintaxis, o no tenga una cláusula
address@hidden para exportar la variable del paquete. Para encontrar
-el problema puede cargar el módulo desde Guile para obtener más información
-sobre el error real:
-
address@hidden
-./pre-inst-env guile -c '(use-modules (gnu packages gnuevo))'
address@hidden example
-
-Una vez que se construya correctamente su paquete, por favor, envíenos un
-parche (@pxref{Envío de parches}). En cualquier caso, si necesita ayuda
-también estaremos felices de ayudarle. Una vez el parche se haya incorporado
-al repositorio de Guix, el nuevo paquete se construye automáticamente en las
-plataformas disponibles por @url{http://hydra.gnu.org/jobset/gnu/master,
-nuestro sistema de integración continua}.
-
address@hidden servidor de sustituciones
-Las usuarias pueden obtener la nueva definición de paquete ejecutando
-simplemente @command{guix pull} (@pxref{Invocación de guix pull}). Cuando
address@hidden@value{SUBSTITUTE-SERVER}} ha terminado de construir el paquete, 
la
-instalación del paquete descarga automáticamente los binarios desde allí
-(@pxref{Sustituciones}). El único lugar donde la intervención humana es
-necesaria es en la revisión y aplicación del parche.
-
-
address@hidden
-* Libertad del software::    Qué puede entrar en la distribución.
-* Nombrado de paquetes::     ¿Qué hay en un nombre?
-* Versiones numéricas::     Cuando el nombre no es suficiente.
-* Sinopsis y descripciones::  Ayudar a las usuarias a encontrar el paquete 
-                                adecuado.
-* Módulos Python::          Un toque de comedia británica.
-* Módulos Perl::            Pequeñas perlas.
-* Paquetes Java::            La parada del café.
-* Tipografías::             Amor por las letras.
address@hidden menu
-
address@hidden Libertad del software
address@hidden Libertad del software
-
address@hidden 
===========================================================================
address@hidden
address@hidden This file was generated with po4a. Translate the source file.
address@hidden
address@hidden 
===========================================================================
address@hidden Adapted from http://www.gnu.org/philosophy/philosophy.html.
address@hidden software libre
-El sistema operativo GNU se ha desarrollado para que las usuarias puedan
-ejercitar su libertad de computación. GNU es @dfn{software libre}, lo que
-significa ue las usuarias tienen las
address@hidden://www.gnu.org/philosophy/free-sw.html,cuatro libertades
-esenciales}: para ejecutar el programa, para estudiar y modificar el
-programa en la forma de código fuente, para redistribuir copias exactas y
-para distribuir versiones modificadas. Los paquetes encontrados en la
-distribución GNU proporcionan únicamente software que permite estas cuatro
-libertades.
-
-Además, la distribución GNU sigue las
address@hidden://www.gnu.org/distros/free-system-distribution-guidelines.html,directrices
-de distribución de software libre}. Entre otras cosas, estas directrices
-rechazan firmware no-libre, recomendaciones de software no-libre y el
-tratamiento de formas de tratar con marcas registradas y patentes.
-
-Algunos paquetes originales, que serían de otra manera software libre,
-contienen un subconjunto pequeño y opcional que viola estas directrices, por
-ejemplo debido a que ese subconjunto sea en sí código no-libre. Cuando esto
-sucede, las partes indeseadas son eliminadas con parches o fragmentos de
-código en la forma @code{origin} del paquete (@pxref{Definición de paquetes}). 
De
-este modo, @code{guix build --source} devuelve las fuentes ``liberadas'' en
-vez de la versión original de las fuentes.
-
-
address@hidden Nombrado de paquetes
address@hidden Nombrado de paquetes
-
address@hidden nombre de paquete
-Un paquete tiene realmente dos nombres asociados con él: Primero, el nombre
-de la @emph{variable Scheme} asociada, que aparece después de
address@hidden A través de este nombre, el paquete está disponible en
-código Scheme, por ejemplo como entrada de otro paquete. Segundo, la cadena
-en el campo @code{name} de la definición de paquete. Este nombre se usa por
-las órdenes de gestión de paquetes como @command{guix package} y
address@hidden build}.
-
-Ambos normalmente son iguales y corresponden a la conversión a minúsculas
-del nombre de proyecto elegido por sus creadoras, con los guiones bajos
-sustituidos por guiones. Por ejemplo, GNUnet está disponible como
address@hidden, y SDL_net como @code{sdl-net}.
-
-No añadimos prefijos @code{lib} para paquetes de bibliotecas, a menos que
-sean parte del nombre oficial del proyecto. Pero vea @ref{Módulos Python} y
address@hidden Perl} para reglas especiales que conciernen a los módulos de
-los lenguajes Python y Perl.
-
-Los nombres de paquetes de tipografías se manejan de forma diferente,
address@hidden
-
-
address@hidden Versiones numéricas
address@hidden Versiones numéricas
-
address@hidden versión de paquete
-Normalmente empaquetamos únicamente la última versión de un proyecto dado de
-software libre. Pero a veces, por ejemplo para versiones de bibliotecas
-incompatibles, se necesitan dos (o más) versiones del mismo paquete. Estas
-necesitan nombres diferentes para las variables Scheme. Usamos el nombre
-como se define en @ref{Nombrado de paquetes} para la versión más reciente; las
-versiones previas usan el mismo nombre, añadiendo un @code{-} y el prefijo
-menor del número de versión que permite distinguir las dos versiones.
-
-El nombre dentro de la definición de paquete es el mismo para todas las
-versiones de un paquete y no contiene ningún número de versión.
-
-Por ejemplo, las versiones 2.24.20 y 3.9.12 de GTK+ pueden empaquetarse como
-sigue:
-
address@hidden
-(define-public gtk+
-  (package
-    (name "gtk+")
-    (version "3.9.12")
-    ...))
-(define-public gtk+-2
-  (package
-    (name "gtk+")
-    (version "2.24.20")
-    ...))
address@hidden example
-Si también deseásemos GTK+3.8.2, se empaquetaría como
address@hidden
-(define-public gtk+-3.8
-  (package
-    (name "gtk+")
-    (version "3.8.2")
-    ...))
address@hidden example
-
address@hidden See 
<https://lists.gnu.org/archive/html/guix-devel/2016-01/msg00425.html>,
address@hidden for a discussion of what follows.
address@hidden número de versión, para revisiones de VCS
-De manera ocasional, empaquetamos instantáneas del sistema de control de
-versiones (VCS) de las desarrolladoras originales en vez de publicaciones
-formales. Esto debería permanecer como algo excepcional, ya que son las
-desarrolladoras originales quienes deben clarificar cual es la entrega
-estable. No obstante, a veces es necesario. Por tanto, ¿qué deberíamos poner
-en el campo @code{version}?
-
-Claramente, tenemos que hacer visible el identificador de la revisión en el
-VCS en la cadena de versión, pero tamién debemos asegurarnos que la cadena
-de versión incrementa monotónicamente de manera que @command{guix package
---upgrade} pueda determinar qué versión es más moderna. Ya que los
-identificadores de revisión, notablemente en Git, no incrementan
-monotónicamente, añadimos un número de revisión que se incrementa cada vez
-que actualizamos a una nueva instantánea. La versión que resulta debería ser
-así:
-
address@hidden
-2.0.11-3.cabba9e
-  ^    ^    ^
-  |    |    `-- ID de revisión original
-  |    |
-  |    `--- revisión del paquete Guix
-  |
-última versión de publicación
address@hidden example
-
-Es una buena idea recortar los identificadores de revisión en el campo
address@hidden a, digamos, 7 dígitos. Esto evita una molestia estética
-(asumiendo que la estética tiene importancia aquí) así como problemas
-relacionados con los límites del sistema operativo como la longitud máxima
-de una cadena de ejecución #! (127 bytes en el núcleo Linux). Es mejor usar
-el identificador de revisión completo en @code{origin}, no obstante, para
-evitar ambigüedades. Una definición típica de paquete sería así:
-
address@hidden
-(define mi-paquete
-  (let ((commit "c3f29bc928d5900971f65965feaae59e1272a3f7")
-        (revision "1"))          ;Revisión Guix del paquete
-    (package
-      (version (git-version "0.9" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "git://example.org/mi-paquete.git")
-                      (commit commit)))
-                (sha256 (base32 "address@hidden"))
-                (file-name (git-file-name name version))))
-      ;; @dots{}
-      )))
address@hidden example
-
address@hidden Sinopsis y descripciones
address@hidden Sinopsis y descripciones
-
address@hidden descripción de paquete
address@hidden sinopsis de paquete
-Como hemos visto previamente, cada paquete en address@hidden incluye una
-sinopsis y una descripción (@pxref{Definición de paquetes}). Las sinopsis y
-descripciones son importantes: son en lo que @command{guix package --search}
-busca, y una pieza crucial de información para ayudar a las usuarias a
-determinar si un paquete dado cubre sus necesidades. Consecuentemente, las
-empaquetadoras deben prestar atención a qué se incluye en ellas.
-
-Las sinopsis deben empezar con mayúscula y no deben terminar con punto. No
-deben empezar con un artículo que habitualmente no aporta nada; por ejemplo,
-se prefiere ``Herramienta para chiribizar'' sobre ``Una herramienta que
-chiribiza ficheros''. La sinopsis debe decir qué es el paquete---por
-ejemplo, ``Utilidades básicas GNU (ficheros, texto, shell)''---o para qué se
-usa---por ejemplo, la sinopsis de address@hidden es ``Imprime líneas que
-aceptadas por un patrón''.
-
-Tenga en cuenta que las sinopsis deben tener un claro significado para una
-audiencia muy amplia. Por ejemplo, ``Manipula la alineación en el formato
-SAM'' puede tener sentido para una investigadora de bioinformática con
-experiencia, pero puede ser de poca ayuda o incluso llevar a confusión a una
-audiencia no-especializada. Es una buena idea proporcionar una sinopsis que
-da una idea del dominio de aplicación del paquete. En ese ejemplo, esto
-podría ser algo como ``Manipula la alineación de secuencias de
-nucleótidos'', lo que esperablemente proporciona a la usuaria una mejor idea
-sobre si esto es lo que está buscando.
-
-Las descripciones deben tener entre cinco y diez líneas. Use frases
-completas, y evite usar acrónimos sin introducirlos previamente. Por favor
-evite frases comerciales como ``líder mundial'', ``de potencia industrial''
-y ``siguiente generación'', y evite superlativos como ``el más
-avanzado''---no son útiles para las usuarias que buscan un paquete e incluso
-pueden sonar sospechosas. En vez de eso, intente ceñirse a los hechos,
-mencionando casos de uso y características.
-
address@hidden marcado Texinfo, en descripciones de paquetes
-Las descripciones pueden incluir marcado Texinfo, lo que es útil para
-introducir ornamentos como @code{@@code} o @code{@@dfn}, listas de puntos o
-enlaces (@pxref{Overview,,, texinfo, GNU Texinfo}). Por consiguiente, debe
-ser cuidadosa cuando use algunos caracteres, por ejemplo @samp{@@} y llaves,
-que son los caracteres especiales básicos en Texinfo (@pxref{Special
-Characters,,, texinfo, GNU Texinfo}). Las interfaces de usuaria como
address@hidden package --show} se encargan de su correcta visualización.
-
-Las sinopsis y descripciones son traducidas por voluntarias
address@hidden://translationproject.org/domain/guix-packages.html, en
-Translation Project} para que todas las usuarias posibles puedan leerlas en
-su lengua nativa. Las interfaces de usuaria las buscan y las muestran en el
-idioma especificado por la localización actual.
-
-Para permitir a @command{xgettext} extraerlas como cadenas traducibles, las
-sinopsis y descripciones @emph{deben ser cadenas literales}. Esto significa
-que no puede usar @code{string-append} o @code{format} para construir estas
-cadenas:
-
address@hidden
-(package
-  ;; @dots{}
-  (synopsis "Esto es traducible")
-  (description (string-append "Esto " "*no*" " es traducible.")))
address@hidden lisp
-
-La traducción requiere mucho trabajo, por lo que, como empaquetadora, le
-rogamos que ponga incluso más atención a sus sinopsis y descripciones ya que
-cada cambio puede suponer trabajo adicional para las traductoras. Para
-ayudarlas, es posible hacer recomendaciones o instrucciones insertando
-comentarios especiales como este (@pxref{xgettext Invocation,,, gettext, GNU
-Gettext}):
-
address@hidden
-;; TRANSLATORS: "X11 resize-and-rotate" should not be translated.
-(description "ARandR is designed to provide a simple visual front end
-for the X11 resize-and-rotate (RandR) extension. @dots{}")
address@hidden example
-
-
address@hidden Módulos Python
address@hidden Módulos Python
-
address@hidden python
-Actualmente empaquetamos Python 2 y Python 3, bajo los nombres de variable
-Scheme @code{python-2} y @code{python} como se explica en @ref{Versiones 
numéricas}. Para evitar confusiones y conflictos de nombres con otros
-lenguajes de programación, parece deseable que el nombre de paquete para un
-módulo Python contenga la palabra @code{python}.
-
-Algunos módulos son compatibles únicamente con una versión de Python, otros
-con ambas. Si el paquete Foo compila sólo con Python 3, lo llamamos
address@hidden; si compila sólo con Python 2, lo llamamos
address@hidden Si es compatible con ambas versiones, creamos dos
-paquetes con los nombres correspondientes.
-
-Si un proyecto ya contiene la palabra @code{python}, la eliminamos; por
-ejemplo, el módulo python-dateutil se empaqueta con los nombres
address@hidden y @code{python2-dateutil}. Si el nombre del proyecto
-empieza con @code{py} (por ejemplo @code{pytz}), este se mantiene y el
-prefijo es el especificado anteriormente..
-
address@hidden Especificación de dependencias
address@hidden entradas, para paquetes Python
-
-La información de dependencias para paquetes Python está disponible
-habitualmente en el árbol de fuentes, con varios grados de precisión: en el
-fichero @file{setup.py}, en @file{requirements.txt} o en @file{tox.ini}.
-
-Su misión, cuando escriba una receta para un paquete Python, es asociar
-estas dependencias con el tipo apropiado de ``entrada'' (@pxref{Referencia de 
``package'', inputs}). Aunque el importador de @code{pypi} normalmente hace un
-buen trabajo (@pxref{Invocación de guix import}), puede querer comprobar la
-siguiente lista para determinar qué dependencia va dónde.
-
address@hidden
-
address@hidden
-Actualmente empaquetamos con @code{setuptools} y @code{pip} instalados como
-Python 3.4 tiene por defecto. Por tanto no necesita especificar ninguno de
-ellos como entrada. @command{guix lint} le avisará si lo hace.
-
address@hidden
-Las dependencias Python requeridas en tiempo de ejecución van en
address@hidden Típicamente están definidas con la palabra clave
address@hidden en @file{setup.py}, o en el fichero
address@hidden
-
address@hidden
-Los paquetes Python requeridos únicamente durante la construcción---por
-ejemplo, aquellos listados con la palabra clave @code{setup_requires} en
address@hidden únicamente para pruebas---por ejemplo, aquellos en
address@hidden en @code{native-inputs}. La razón es que (1) no
-necesitan ser propagados ya que no se requieren en tiempo de ejecución, y
-(2) en un entorno de compilación cruzada lo que necesitamos es la entrada
-``nativa''.
-
-Ejemplos son las bibliotecas de pruebas @code{pytest}, @code{mock} y
address@hidden Por supuesto, si alguno de estos paquetes también se necesita
-en tiempo de ejecución, necesita ir en @code{propagated-inputs}.
-
address@hidden
-Todo lo que no caiga en las categorías anteriores va a @code{inputs}, por
-ejemplo programas o bibliotecas C requeridas para construir los paquetes
-Python que contienen extensiones C.
-
address@hidden
-Si un paquete Python tiene dependencias opcionales (@code{extras_require}),
-queda en su mano decidir si las añade o no, en base a la relación
-utilidad/sobrecarga (@pxref{Envío de parches, @command{guix size}}).
-
address@hidden itemize
-
-
address@hidden Módulos Perl
address@hidden Módulos Perl
-
address@hidden perl
-Los programas ejecutables Perl se nombran como cualquier otro paquete,
-mediante el uso del nombre oficial en minúsculas. Para paquetes Perl que
-contienen una única clase, usamos el nombre en minúsculas de la clase,
-substituyendo todas las ocurrencias de @code{::} por guiones y agregando el
-prefijo @code{perl-}. Por tanto la clase @code{XML::Parser} se convierte en
address@hidden Los módulos que contienen varias clases mantienen su
-nombre oficial en minúsculas y también se agrega @code{perl-} al
-inicio. Dichos módulos tienden a tener la palabra @code{perl} en alguna
-parte de su nombre, la cual se elimina en favor del prefijo. Por ejemplo,
address@hidden se convierte en @code{perl-libwww}.
-
-
address@hidden Paquetes Java
address@hidden Paquetes Java
-
address@hidden java
-Los programas Java ejecutables se nombran como cualquier otro paquete,
-mediante el uso del nombre oficial en minúsculas.
-
-Para evitar confusión y colisiones de nombres con otros lenguajes de
-programación, es deseable que el nombre del paquete para un paquete Java
-contenga el prefijo @code{java-}. Si el proyecto ya tiene la palabra
address@hidden, eliminamos esta; por ejemplo, el paquete @code{ngsjaga} se
-empaqueta bajo el nombre @code{java-ngs}.
-
-Para los paquetes Java que contienen una clase única o una jerarquía
-pequeña, usamos el nombre de clase en minúsculas, substituyendo todas las
-ocurrencias de @code{.} por guiones y agregando el prefijo @code{java-}. Por
-tanto la clase @code{apache.commons.cli} se convierte en el paquete
address@hidden
-
-
address@hidden Tipografías
address@hidden Tipografías
-
address@hidden tipografías
-Para tipografías que no se instalan generalmente por una usuaria para
-propósitos tipográficos, o que se distribuyen como parte de un paquete de
-software más grande, seguimos las reglas generales de empaquetamiento de
-software; por ejemplo, esto aplica a las tipografías distribuidas como parte
-del sistema X.Org o las tipografías que son parte de TeX Live.
-
-Para facilitar a las usuarias la búsqueda de tipografías, los nombres para
-otros paquetes que contienen únicamente tipografías se construyen como
-sigue, independientemente del nombre de paquete oficial.
-
-El nombre de un paquete que contiene únicamente una familia tipográfica
-comienza con @code{font-}; seguido por el nombre de la tipografía y un guión
-si la tipografía es conocida, y el nombre de la familia tipográfica, donde
-los espacios se sustituyen por guiones (y como es habitual, todas las letras
-mayúsculas se transforman a minúsculas). Por ejemplo, la familia de
-tipografías Gentium de SIL se empaqueta bajo el nombre de
address@hidden
-
-Para un paquete que contenga varias familias tipográficas, el nombre de la
-colección se usa en vez del nombre de la familia tipográfica. Por ejemplo,
-las tipografías Liberation consisten en tres familias: Liberation Sans,
-Liberation Serif y Liberation Mono. Estas se podrían empaquetar por separado
-bajo los nombres @code{font-liberation-sans}, etcétera; pero como se
-distribuyen de forma conjunta bajo un nombre común, preferimos empaquetarlas
-conjuntamente como @code{font-liberation}.
-
-En el caso de que varios formatos de la misma familia o colección
-tipográfica se empaqueten de forma separada, una forma corta del formato,
-precedida por un guión, se añade al nombre del paquete. Usamos @code{-ttf}
-para tipografías TrueType, @code{-otf} para tipografías OpenType y
address@hidden para tipografías Tipo 1 PostScript.
-
-
address@hidden Estilo de codificación
address@hidden Estilo de codificación
-
-En general nuestro código sigue los Estándares de codificación GNU
-(@pxref{Top,,, standards, GNU Coding Standards}). No obstante, no dicen
-mucho de Scheme, así que aquí están algunas reglas adicionales.
-
address@hidden
-* Paradigma de programación::  Cómo componer sus elementos.
-* Módulos::                 ¿Dónde almacenar su código?
-* Tipos de datos y reconocimiento de patrones::  Implementación de 
-                                                   estructuras de datos.
-* Formato del código::      Convenciones de escritura.
address@hidden menu
-
address@hidden Paradigma de programación
address@hidden Paradigma de programación
-
-El código scheme en Guix está escrito en un estilo puramente funcional. Una
-excepción es el código que incluye entrada/salida, y procedimientos que
-implementan conceptos de bajo nivel, como el procedimiento @code{memoize}.
-
address@hidden Módulos
address@hidden Módulos
-
-Los módulos Guile que están destinados a ser usados en el lado del
-constructor deben encontrarse en el espacio de nombres @code{(guix build
address@hidden)}. No deben hacer referencia a otros módulos Guix o GNU. No
-obstante, no hay problema en usar un módulo del lado del constructor en un
-módulo ``del lado del cliente''.
-
-Los módulos que tratan con el sistema GNU más amplio deben estar en el
-espacio de nombres @code{(gnu @dots{})} en vez de en @code{(guix @dots{})}.
-
address@hidden Tipos de datos y reconocimiento de patrones
address@hidden Tipos de datos y reconocimiento de patrones
-
-La tendencia en el Lisp clásico es usar listas para representar todo, y
-recorrerlas ``a mano'' usando @code{car}, @code{cdr}, @code{cadr} y
-compañía. Hay varios problemas con este estilo, notablemente el hecho de que
-es difícil de leer, propenso a errores y una carga para informes adecuados
-de errores de tipado.
-
-El código de Guix debe definir tipos de datos apropiados (por ejemplo,
-mediante el uso @code{define-record-type*}) en vez de abusar de las
-listas. Además debe usarse el reconocimiento de patrones, vía el módulo de
-Guile @code{(ice-9 match)}, especialmente cuando se analizan listas.
-
address@hidden Formato del código
address@hidden Formato del código
-
address@hidden dar formato al código
address@hidden estilo de codificación
-Cuando escribimos código Scheme, seguimos la sabiduría común entre las
-programadoras Scheme. En general, seguimos las
address@hidden://mumble.net/~campbell/scheme/style.txt, Reglas de estilo Lisp de
-Riastradh}. Este documento resulta que también describe las convenciones más
-usadas en el código Guile. Está lleno de ideas y bien escrito, así que
-recomendamos encarecidamente su lectura.
-
-Algunas formas especiales introducidas en Guix, como el macro
address@hidden tienen reglas de indentación especiales. Estas están
-definidas en el fichero @file{.dir-locals.el}, el cual Emacs usa
-automáticamente. Fíjese que además Emacs-Guix proporciona el modo
address@hidden que indenta y resalta adecuadamente el código de Guix
-(@pxref{Desarrollo,,, emacs-guix, The Emacs-Guix Reference Manual}).
-
address@hidden indentación, de código
address@hidden formato, de código
-Si no usa Emacs, por favor asegúrese de que su editor conoce esas
-reglas. Para indentar automáticamente una definición de paquete también
-puede ejecutar:
-
address@hidden
-./etc/indent-code.el gnu/packages/@var{fichero}.scm @var{paquete}
address@hidden example
-
address@hidden
-Esto indenta automáticamente la definición de @var{paquete} en
address@hidden/packages/@var{fichero}.scm} ejecutando Emacs en modo de
-procesamiento de lotes. Para indentar un fichero completo, omita el segundo
-parámetro:
-
address@hidden
-./etc/indent-code.el gnu/services/@var{fichero}.scm
address@hidden example
-
address@hidden Vim, edición de código Scheme
-Si está editando código con Vim, le recomendamos ejecutar @code{:set
-autoindent} para que el código se indente automáticamente mientras
-escribe. Adicionalmente,
address@hidden://www.vim.org/scripts/script.php?script_id=3998,
address@hidden puede ayudar a manejar todos estos paréntesis.
-
-Requerimos que todos los procedimientos del nivel superior tengan una cadena
-de documentación. Este requisito puede relajarse para procedimientos simples
-privados en el espacio de nombres @code{(guix build @dots{})} no obstante.
-
-Los procedimientos no deben tener más de cuatro parámetros posicionales. Use
-parámetros con palabras clave para procedimientos que toman más de cuatro
-parámetros.
-
-
address@hidden Envío de parches
address@hidden Envío de parches
-
-El desarrollo se lleva a cabo usando el sistema de control de versiones
-distribuido Git. Por lo tanto, no es estrictamente necesario el acceso al
-repositorio. Son bienvenidas las contribuciones en forma de parches como los
-producidos por @code{git format-patch} enviadas a la lista de correo
address@hidden@@gnu.org}.
-
-Esta lista de correo está respaldada por una instancia de Debbugs accesible
-en @uref{https://bugs.gnu.org/guix-patches}, la cual nos permite mantener el
-seguimiento de los envíos. A cada mensaje enviado a esa lista de correo se
-le asigna un número de seguimiento; la gente puede realizar aportaciones
-sobre el tema mediante el envío de correos electrónicos a
address@hidden@var{NNN}@@debbugs.gnu.org}, donde @var{NNN} es el número de
-seguimiento (@pxref{Envío de una serie de parches}).
-
-Le rogamos que escriba los mensajes de revisiones en formato ChangeLog
-(@pxref{Change Logs,,, standards, GNU Coding Standards}); puede comprobar la
-historia de revisiones en busca de ejemplos.
-
-Antes de enviar un parche que añade o modifica una definición de un paquete,
-por favor recorra esta lista de comprobaciones:
-
address@hidden
address@hidden
-Si las autoras del paquete software proporcionan una firma criptográfica
-para el archivo de la versión, haga un esfuerzo para verificar la
-autenticidad del archivo. Para un fichero de firma GPG separado esto puede
-hacerse con la orden @code{gpg --verify}.
-
address@hidden
-Dedique algún tiempo a proporcionar una sinopsis y descripción adecuadas
-para el paquete. @xref{Sinopsis y descripciones}, para algunas directrices.
-
address@hidden
-Ejecute @code{guix lint @var{paquete}}, donde @var{paquete} es el nombre del
-paquete nuevo o modificado, y corrija cualquier error del que informe
-(@pxref{Invocación de guix lint}).
-
address@hidden
-Asegurese de que el paquete compile en su plataforma, usando @code{guix
-build @var{package}}.
-
address@hidden
-También le recomendamos que pruebe a construir el paquete en otras
-plataformas disponibles. Como puede no disponer de acceso a dichas
-plataformas hardware físicamente, le recomendamos el uso de
address@hidden para emularlas. Para activarlo, añada el
-siguiente servicio a la lista de servicios en su configuración
address@hidden:
-
address@hidden
-(service qemu-binfmt-service-type
- (qemu-binfmt-configuration
-   (platforms (lookup-qemu-platforms "arm" "aarch64" "mips64el"))
-   (guix-support? #t)))
address@hidden example
-
-Una vez hecho esto, reconfigure su sistema.
-
-Enotonces podrá construir paquetes para diferentes plataformas mediante la
-opción @code{--system}. Por ejemplo, para la construcción del paquete
-"hello" para las arquitecturas armhf, aarch64 o mips64 ejecutaría las
-siguientes órdenes, respectivamente:
address@hidden
-guix build --system=armhf-linux --rounds=2 hello
-guix build --system=aarch64-linux --rounds=2 hello
-guix build --system=mips64el-linux --rounds=2 hello
address@hidden example
-
address@hidden
address@hidden empaquetamientos
-Asegurese de que el paquete no usa copias empaquetadas de software ya
-disponible como paquetes separados.
-
-A veces, paquetes incluyen copias embebidas del código fuente de sus
-dependencias para conveniencia de las usuarias. No obstante, como
-distribución, queremos asegurar que dichos paquetes efectivamente usan la
-copia que ya tenemos en la distribución si hay ya una. Esto mejora el uso de
-recursos (la dependencia es construida y almacenada una sola vez), y permite
-a la distribución hacer cambios transversales como aplicar actualizaciones
-de seguridad para un software dado en un único lugar y que afecte a todo el
-sistema---algo que esas copias embebidas impiden.
-
address@hidden
-Eche un vistazo al perfil mostrado por @command{guix size} (@pxref{Invocación 
de guix size}). Esto le permitirá darse cuenta de referencias a otros paquetes
-retenidas involuntariamente. También puede ayudar a determinar si se debe
-dividir el paquete (@pxref{Paquetes con múltiples salidas}), y qué
-dependencias opcionales deben usarse. En particular, evite añadir
address@hidden como una dependencia: debido a su tamaño extremo, use
address@hidden o @code{texlive-union}.
-
address@hidden
-Para cambios importantes, compruebe que los paquetes dependientes (si
-aplica) no se ven afectados por el cambio; @code{guix refresh
---list-dependent @var{package}} le ayudará a hacerlo (@pxref{Invocación de 
guix refresh}).
-
address@hidden See 
<https://lists.gnu.org/archive/html/guix-devel/2016-10/msg00933.html>.
address@hidden estrategia de ramas
address@hidden estrategia de planificación de reconstrucciones
-En base al número de paquetes dependientes y, por tanto, del tamaño de la
-reconstrucción inducida, los revisiones van a ramas separadas, según estas
-líneas:
-
address@hidden @asis
address@hidden 300 paquetes dependientes o menos
-rama @code{master} (cambios no disruptivos).
-
address@hidden entre 300 y 1.200 paquetes dependientes
-rama @code{staging} (cambios no disruptivos). Esta rama está pensada para
-ser incorporada en @code{master} cada 3 semanas más o menos. Ramas temáticas
-(por ejemplo, una actualización de la pila de GNOME) pueden ir en una rama
-específica (digamos, @code{gnome-updates}).
-
address@hidden más de 1.200 paquetes dependientes
-rama @code{core-updates} (puede incluir cambios mayores y potencialmente
-disruptivos). Esta rama está pensada para ser incluida en @code{master} cada
-2,5 más o menos.
address@hidden table
-
-Todas estas ramas son @uref{https://hydra.gnu.org/project/gnu, seguidas por
-nuestra granja de construcción} e incluidas en @code{master} una vez todo se
-ha construido satisfactoriamente. Esto nos permite corregir errores antes de
-que afecten a usuarias, y reducir la ventana durante la cual los binarios
-preconstruidos no están disponibles.
-
address@hidden TODO: It would be good with badges on the website that tracks 
these
address@hidden branches.  Or maybe even a status page.
-Generalmente, ramas distintas a @code{master} se consideran
address@hidden si ha habido una evaluación reciente, o hay una rama
address@hidden correspondiente. Por favor, pregunte en la lista de correo o en
-IRC si no está segura de dónde colocar un parche.
-
address@hidden
address@hidden determinismo, del proceso de construcción
address@hidden construcciones reproducibles, comprobar
-Compruebe si el proceso de construcción de un paquete es determinista. Esto
-significa típicamente comprobar si una construcción independiente del
-paquete ofrece exactamente el mismo resultado que usted obtuvo, bit a bit.
-
-Una forma simple de hacerlo es construyendo el mismo paquete varias veces
-seguidas en su máquina (@pxref{Invocación de guix build}):
-
address@hidden
-guix build --rounds=2 mi-paquete
address@hidden example
-
-Esto es suficiente una clase común de problemas de no-determinismo, como las
-marcas de tiempo o salida generada aleatoriamente en el resultado de la
-construcción.
-
-Otra opción es el uso de @command{guix challenge} (@pxref{Invocación de guix 
challenge}). Puede ejecutarse una vez la revisión del paquete haya sido
-publicada y construida por @address@hidden para comprobar
-si obtuvo el mismo resultado que usted. Mejor aún: encuentre otra máquina
-que pueda construirla y ejecute @command{guix publish}. Ya que la máquina
-remota es probablemente diferente a la suya, puede encontrar problemas de
-no-determinismo relacionados con el hardware---por ejemplo, el uso de un
-conjunto de instrucciones extendido diferente---o con el núcleo del sistema
-operativo---por ejemplo, dependencias en @code{uname} o ficheros
address@hidden/proc}.
-
address@hidden
-Cuando escriba documentación, por favor use construcciones neutrales de
-género para referirse a la address@hidden: En esta traducción se ha
-optado por usar el femenino para referirse a @emph{personas}, ya que es el
-género gramatical de dicha palabra. Aunque las construcciones impersonales
-pueden adoptarse en la mayoría de casos, también pueden llegar a ser muy
-artificiales en otros usos del castellano; en ocasiones son directamente
-imposibles. Algunas construcciones que proponen la neutralidad de género
-dificultan la lecura automática (-x), o bien dificultan la corrección
-automática (-e), o bien aumentan significativamente la redundancia y reducen
-del mismo modo la velocidad en la lectura (-as/os, -as y -os). No obstante,
-la adopción del genero neutro heredado del latín, el que en castellano se ha
-unido con el masculino, como construcción neutral de género se considera
-inaceptable, ya que sería equivalente al ``it'' en inglés, nada más lejos de
-la intención de las autoras originales del texto.}, como
address@hidden://en.wikipedia.org/wiki/Singular_they, singular ``they''@comma{}
-``their''@comma{} ``them''} y demás.
-
address@hidden
-Compruebe que su parche contiene únicamente un conjunto relacionado de
-cambios. Agrupando cambios sin relación dificulta y ralentiza la revisión.
-
-Ejemplos de cambios sin relación incluyen la adición de varios paquetes, o
-una actualización de un paquete junto a correcciones a ese paquete.
-
address@hidden
-Por favor, siga nuestras reglas de formato de código, posiblemente
-ejecutando el guión @command{etc/indent-code.el} para que lo haga
-automáticamente por usted (@pxref{Formato del código}).
-
address@hidden
-Cuando sea posible, use espejos en la URL de las fuentes (@pxref{Invocación de 
guix download}). Use URL fiables, no generadas. Por ejemplo, los archivos de
-GitHub no son necesariamente idénticos de una generación a la siguiente, así
-que en este caso es normalmente mejor clonar el repositorio. No use el campo
address@hidden en la URL: no es muy útil y si el nombre cambia, la URL
-probablemente estará mal.
-
address@hidden enumerate
-
-Cuando publique un parche a la lista de correo, use @samp{[PATCH] @dots{}}
-como el asunto. Puede usar su cliente de correo o la orden @command{git
-send-email} (@pxref{Envío de una serie de parches}). Preferimos recibir los 
parches
-en texto plano, ya sea en línea o como adjuntos MIME. Se le recomienda que
-preste atención por si su cliente de correo cambia algo como los saltos de
-línea o la indentación, lo que podría potencialmente romper los parches.
-
-Cuando un error es resuelto, por favor cierre el hilo enviando un correo a
address@hidden@var{NNN}-done@@debbugs.gnu.org}.
-
address@hidden Envío de una serie de parches
address@hidden de una serie de parches}
address@hidden series de parches
address@hidden @code{git send-email}
address@hidden @code{git-send-email}
-
address@hidden Debbugs bug: https://debbugs.gnu.org/db/15/15361.html
-Cuando envíe una serie de parches (por ejemplo, usando @code{git
-send-email}), por favor mande primero un mensaje a
address@hidden@@gnu.org}, y después mande los parches siguientes a
address@hidden@var{NNN}@@debbugs.gnu.org} para asegurarse de que se mantienen
-juntos. Véase @uref{https://debbugs.gnu.org/Advanced.html, la documentación
-de Debbugs} para más información.
diff --git a/doc/contributing.fr.texi b/doc/contributing.fr.texi
deleted file mode 100644
index ab9c17e..0000000
--- a/doc/contributing.fr.texi
+++ /dev/null
@@ -1,1007 +0,0 @@
address@hidden Contribuer
address@hidden Contribuer
-
-Ce projet est un effort coopératif et nous avons besoin de votre aide pour
-le faire grandir ! Contactez-nous sur @email{guix-devel@@gnu.org} et
address@hidden sur le réseau IRC Freenode.  Nous accueillons les idées, les
-rapports de bogues, les correctifs et tout ce qui pourrait aider le projet.
-Nous apprécions particulièrement toute aide sur la création de paquets
-(@pxref{Consignes d'empaquetage}).
-
address@hidden code de conduite, des contributeurs
address@hidden convention de contribution
-Nous souhaitons fournir un environnement chaleureux, amical et sans
-harcèlement pour que tout le monde puisse contribuer au mieux de ses
-capacités.  Pour cela notre projet a une « Convention de contribution »
-adaptée de @url{http://contributor-covenant.org/}.  Vous pouvez trouver une
-version locale dans le fichier @file{CODE-OF-CONDUCT} dans l'arborescence
-des sources.
-
-Les contributeurs n'ont pas besoin d'utiliser leur nom légal dans leurs
-correctifs et leurs communications en ligne ; ils peuvent utiliser n'importe
-quel nom ou pseudonyme de leur choix.
-
address@hidden
-* Construire depuis Git::    Toujours le plus récent.
-* Lancer Guix avant qu'il ne soit installé::  Astuces pour les hackers.
-* La configuration parfaite::  Les bons outils.
-* Consignes d'empaquetage::  Faire grandir la distribution.
-* Style de code::            Hygiène du contributeur.
-* Envoyer des correctifs::   Partager votre travail.
address@hidden menu
-
address@hidden Construire depuis Git
address@hidden Construire depuis Git
-
-Si vous souhaitez travailler sur Guix lui-même, il est recommandé d'utiliser
-la dernière version du dépôt Git :
-
address@hidden
-git clone https://git.savannah.gnu.org/git/guix.git
address@hidden example
-
-Lors de la construction de Guix depuis un extrait, les paquets suivants sont
-requis en plus de ceux mentionnés dans les instructions d'installation
-(@pxref{Prérequis}).
-
address@hidden
address@hidden @url{http://gnu.org/software/autoconf/, GNU Autoconf};
address@hidden @url{http://gnu.org/software/automake/, GNU Automake};
address@hidden @url{http://gnu.org/software/gettext/, GNU Gettext};
address@hidden @url{http://gnu.org/software/texinfo/, GNU Texinfo};
address@hidden @url{http://www.graphviz.org/, Graphviz};
address@hidden @url{http://www.gnu.org/software/help2man/, GNU Help2man 
(facultatif)}.
address@hidden itemize
-
-La manière la plus simple de configurer un environnement de développement
-pour Guix est, bien sûr, d'utiliser Guix ! La commande suivante démarre un
-nouveau shell où toutes les dépendances et les variables d'environnements
-appropriées sont configurés pour travailler sur Guix :
-
address@hidden
-guix environment guix
address@hidden example
-
address@hidden guix environment}, pour plus d'information sur cette
-commande.  On peut ajouter des dépendances supplémentaires avec
address@hidden :
-
address@hidden
-guix environment guix --ad-hoc help2man git strace
address@hidden example
-
-Lancez @command{./bootstrap} pour générer l'infrastructure du système de
-construction avec Autoconf et Automake.  Si vous avez une erreur comme :
-
address@hidden
-configure.ac:46: error: possibly undefined macro: PKG_CHECK_MODULES
address@hidden example
-
address@hidden
-cela signifie probablement qu'Autoconf n'a pas pu trouver @file{pkg.m4} qui
-est fournit par pkg-config.  Assurez-vous que @file{pkg.m4} est disponible.
-C'est aussi vrai pour l'ensemble de macros de @file{guile.m4} fournies par
-Guile.  Par exemple, si vous avez installé Automake dans @file{/usr/local},
-il ne cherchera pas les fichiers @file{.m4} dans @file{/usr/share}.  Dans ce
-case vous devez invoquer la commande suivante :
-
address@hidden
-export ACLOCAL_PATH=/usr/share/aclocal
address@hidden example
-
address@hidden Search Path,,, automake, The GNU Automake Manual}, pour plus
-d'information.
-
-Ensuite, lancez @command{./configure} comme d'habitude.  Assurez-vous de
-passer @address@hidden où @var{directory} est la
-valeur @code{localstatedir} utilisée par votre installation actuelle
-(@pxref{Le dépôt} pour plus d'informations à ce propos).
-
-Finalement, vous devez invoquer @code{make check} pour lancer les tests
-(@pxref{Lancer la suite de tests}).  Si quelque chose échoue, jetez un œil
-aux instructions d'installation (@pxref{Installation}) ou envoyez un message
-à la liste @email{guix-devel@@gnu.org}.
-
-
address@hidden Lancer Guix avant qu'il ne soit installé
address@hidden Lancer Guix avant qu'il ne soit installé
-
-Pour garder un environnement de travail sain, il est utile de tester les
-changement localement sans les installer pour de vrai.  Pour pouvoir
-distinguer votre rôle « d'utilisateur final » de celui parfois haut en
-couleur de « développeur ».
-
-Pour cela, tous les outils en ligne de commande sont utilisables même sans
-avoir lancé @code{make install}.  Pour cela, vous devez d'abord avoir un
-environnement avec toutes les dépendances disponibles (@pxref{Construire 
depuis Git}), puis préfixer chaque commande par @command{./pre-inst-env} (le 
script
address@hidden se trouve dans le répertoire de plus haut niveau de
-l'arborescence des sources de Guix ; il est généré par
address@hidden/configure}) comme address@hidden'option @option{-E} de
address@hidden garantie que @code{GUILE_LOAD_PATH} est bien paramétré pour
address@hidden et pour que les outils qu'il utilise puissent trouver
-les modules Guile dont ils ont besoin.} :
-
address@hidden
-$ sudo -E ./pre-inst-env guix-daemon --build-users-group=guixbuild
-$ ./pre-inst-env guix build hello
address@hidden example
-
address@hidden
-De même, pour une session Guile qui utilise les modules Guix :
-
address@hidden
-$ ./pre-inst-env guile -c '(use-modules (guix utils)) (pk (%current-system))'
-
-;;; ("x86_64-linux")
address@hidden example
-
address@hidden
address@hidden REPL
address@hidden read-eval-print loop
address@hidden et pour un REPL (@pxref{Using Guile Interactively,,, guile, Guile
-Reference Manual})
-
address@hidden
-$ ./pre-inst-env guile
-scheme@@(guile-user)> ,use(guix)
-scheme@@(guile-user)> ,use(gnu)
-scheme@@(guile-user)> (define snakes
-                       (fold-packages
-                         (lambda (package lst)
-                           (if (string-prefix? "python"
-                                               (package-name package))
-                               (cons package lst)
-                               lst))
-                         '()))
-scheme@@(guile-user)> (length snakes)
-$1 = 361
address@hidden example
-
-Le script @command{pre-inst-env} paramètre toutes les variables
-d'environnement nécessaires, dont @env{PATH} et @env{GUILE_LOAD_PATH}.
-
-Remarquez que @command{./pre-inst-env guix pull} ne met @emph{pas} à jour
-l'arborescence des sources locale ; cela met seulement à jour le lien
-symbolique de @file{~/.config/guix/current} (@pxref{Invoquer guix pull}).
-Lancez @command{git pull} à la place si vous voulez mettre à jour votre
-arborescence des source locale.
-
-
address@hidden La configuration parfaite
address@hidden La configuration parfaite
-
-La configuration parfaite pour travailler sur Guix est simplement la
-configuration parfaite pour travailler en Guile (@pxref{Using Guile in
-Emacs,,, guile, Guile Reference Manual}).  Tout d'abord, vous avez besoin de
-mieux qu'un éditeur de texte, vous avez besoin de
address@hidden://www.gnu.org/software/emacs, Emacs}, amélioré par le superbe
address@hidden://nongnu.org/geiser/, Geiser}.  Pour paramétrer cela, lancez :
-
address@hidden
-guix package -i emacs guile emacs-geiser
address@hidden example
-
-Geiser permet le développement interactif et incrémental depuis Emacs : la
-compilation du code et son évaluation depuis les buffers, l'accès à la
-documentation en ligne (docstrings), la complétion sensible au contexte,
address@hidden pour sauter à la définition d'un objet, un REPL pour tester votre
-code, et bien plus (@pxref{Introduction,,, geiser, Geiser User Manual}).
-Pour travailler confortablement sur Guix, assurez-vous de modifier le chemin
-de chargement de Guile pour qu'il trouve les fichiers source de votre dépôt
-:
-
address@hidden
-;; @r{Si l'extrait est dans ~/src/guix.}
-(with-eval-after-load 'geiser-guile
-  (add-to-list 'geiser-guile-load-path "~/src/guix"))
address@hidden lisp
-
-Pour effectivement éditer le code, Emacs a déjà un très bon mode Scheme.
-Mais en plus de ça, vous ne devez pas rater
address@hidden://www.emacswiki.org/emacs/ParEdit, Paredit}.  Il fournit des
-fonctionnalités pour opérer directement sur l'arbre de syntaxe, comme
-relever une s-expression ou l'envelopper, absorber ou rejeter la
-s-expression suivante, etc.
-
address@hidden extraits de code
address@hidden modèles
address@hidden réduire la quantité de code commun
-Nous fournissons aussi des modèles pour les messages de commit git communs
-et les définitions de paquets dans le répertoire @file{etc/snippets}.  Ces
-modèles s'utilisent avec @url{http://joaotavora.github.io/yasnippet/,
-YASnippet} pour développer des chaînes courtes de déclenchement en extraits
-de texte interactifs.  Vous pouvez ajouter le répertoire des modèles dans la
-variables @var{yas-snippet-dirs} d'Emacs.
-
address@hidden
-;; @r{Si l'extrait est dans ~/src/guix.}
-(with-eval-after-load 'yasnippet
-  (add-to-list 'yas-snippet-dirs "~/src/guix/etc/snippets"))
address@hidden lisp
-
-Les extraits de messages de commit dépendent de @url{https://magit.vc/,
-Magit} pour afficher les fichiers sélectionnés.  Lors de la modification
-d'un message de commit, tapez @code{add} suivi de @kbd{TAB} pour insérer un
-modèle de message de commit pour ajouter un paquet ; tapez @code{update}
-suivi de @kbd{TAB} pour insérer un modèle pour la mise à jour d'un paquet ;
-tapez @code{https} suivi de @kbd{TAB} pour insérer un modèle pour le
-changement à HTTPS de l'URI de la page d'accueil.
-
-L'extrait principal pour @code{scheme-mode} est lancé en tapant
address@hidden suivi par @kbd{TAB}.  Cet extrait insère aussi la chaîne de
-déclenchement @code{origin…}, qui peut aussi être étendue.  L'extrait
address@hidden lui-même peut aussi insérer des chaînes de déclenchement qui
-finissent sur @code{…}, qui peuvent aussi être étendues.
-
-
address@hidden Consignes d'empaquetage
address@hidden Consignes d'empaquetage
-
address@hidden paquets, création
-La distribution GNU est jeune et vos paquets préférés peuvent manquer.
-Cette section décrit comment vous pouvez aider à agrandir la distribution.
-
-Les paquets de logiciels libres sont habituellement distribués sous forme
address@hidden'archives de sources} — typiquement des fichiers @file{.tar.gz}
-contenant tous les fichiers sources.  Ajouter un paquet à la distribution
-signifie essentiellement deux choses : ajouter une @dfn{recette} qui décrit
-comment construire le paquet, avec une liste d'autres paquets requis pour le
-construire, et ajouter des @dfn{métadonnées de paquet} avec la recette,
-comme une description et une licence.
-
-Dans Guix, toutes ces informations sont incorporées dans les
address@hidden de paquets}.  Les définitions de paquets fournissent une
-vue de haut-niveau du paquet.  Elles sont écrites avec la syntaxe du langage
-de programmation Scheme ; en fait, pour chaque paquet nous définissons une
-variable liée à la définition et exportons cette variable à partir d'un
-module (@pxref{Modules de paquets}).  Cependant, il n'est @emph{pas} nécessaire
-d'avoir une connaissance approfondie du Scheme pour créer des paquets.  Pour
-plus d'informations sur les définitions des paquets, @pxref{Définition des 
paquets}.
-
-Une fois une définition de paquet en place, stocké dans un fichier de
-l'arborescence des sources de Guix, il peut être testé avec la commande
address@hidden build} (@pxref{Invoquer guix build}).  Par exemple, en
-supposant que le nouveau paquet s'appelle @code{gnew}, vous pouvez lancer
-cette commande depuis l'arborescence de construction de Guix (@pxref{Lancer 
Guix avant qu'il ne soit installé}) :
-
address@hidden
-./pre-inst-env guix build gnew --keep-failed
address@hidden example
-
-Utiliser @code{--keep-failed} rend facile le débogage des échecs car il
-fournit l'accès à l'arborescence de construction qui a échouée.  Une autre
-sous-commande utile pour le débogage est @code{--log-file}, pour accéder au
-journal de construction.
-
-Si le paquet n'est pas connu de la commande @command{guix}, il se peut que
-le fichier source ait une erreur de syntaxe, ou qu'il manque une clause
address@hidden pour exporter la variable du paquet.  Pour comprendre
-cela, vous pouvez charger le module depuis Guile pour avoir plus
-d'informations sur la véritable erreur :
-
address@hidden
-./pre-inst-env guile -c '(use-modules (gnu packages gnew))'
address@hidden example
-
-Une fois que votre paquet est correctement construit, envoyez-nous un
-correctif (@pxref{Contribuer}).  Enfin, si vous avez besoin d'aide, nous
-serrons ravis de vous aider.  Une fois que le correctif soumis est committé
-dans le dépôt Guix, le nouveau paquet est automatiquement construit sur les
-plate-formes supportées par @url{http://hydra.gnu.org/jobset/gnu/master,
-notre système d'intégration continue}.
-
address@hidden substitution
-On peut obtenir la nouvelle définition du paquet simplement en lançant
address@hidden pull} (@pxref{Invoquer guix pull}). Lorsque
address@hidden@value{SUBSTITUTE-SERVER}} a fini de construire le paquet,
-l'installation du paquet y télécharge automatiquement les binaires
-(@pxref{Substituts}). La seule intervention humaine requise est pendant la
-revue et l'application du correctif.
-
-
address@hidden
-* Liberté logiciel::        Ce que la distribution peut contenir.
-* Conventions de nommage::   Qu'est-ce qu'un bon nom ?
-* Numéros de version::      Lorsque le nom n'est pas suffisant.
-* Synopsis et descriptions::  Aider les utilisateurs à trouver le bon 
-                                paquet.
-* Modules python::           Un peu de comédie anglaise.
-* Modules perl::             Petites perles.
-* Paquets java::             Pause café.
-* Polices de caractères::   À fond les fontes.
address@hidden menu
-
address@hidden Liberté logiciel
address@hidden Liberté logiciel
-
address@hidden 
===========================================================================
address@hidden
address@hidden This file was generated with po4a. Translate the source file.
address@hidden
address@hidden 
===========================================================================
address@hidden Adapted from http://www.gnu.org/philosophy/philosophy.html.
address@hidden logiciel libre
-Le système d'exploitation GNU a été développé pour que les utilisateurs
-puissent utiliser leur ordinateur en toute liberté.  GNU est un
address@hidden libre}, ce qui signifie que les utilisateur ont les
address@hidden://www.gnu.org/philosophy/free-sw.fr.html,quatre libertés
-essentielles} : exécuter le programmer, étudier et modifier le programme
-sous sa forme source, redistribuer des copies exactes et distribuer les
-versions modifiées.  Les paquets qui se trouvent dans la distribution GNU ne
-fournissent que des logiciels qui respectent ces quatre libertés.
-
-En plus, la distribution GNU suit les
address@hidden://www.gnu.org/distros/free-system-distribution-guidelines.html,recommandations
-pour les distributions systèmes libres}.  Entre autres choses, ces
-recommandations rejettent les microgiciels non libres, les recommandations
-de logiciels non libres et discute des façon de gérer les marques et les
-brevets.
-
-Certaines sources amont autrement parfaitement libres contiennent une petite
-partie facultative qui viole les recommandations ci-dessus, par exemple car
-cette partie est du code non-libre.  Lorsque cela arrive, les éléments en
-question sont supprimés avec des correctifs ou des bouts de codes appropriés
-dans la forme @code{origin} du paquet (@pxref{Définition des paquets}).  De 
cette
-manière, @code{guix build --source} renvoie la source « libérée » plutôt que
-la source amont sans modification.
-
-
address@hidden Conventions de nommage
address@hidden Conventions de nommage
-
address@hidden nom du paquet
-Un paquet a en fait deux noms qui lui sont associés : d'abord il y a le nom
-de la @emph{variable Scheme}, celui qui suit @code{define-public}.  Par ce
-nom, le paquet peut se faire connaître par le code Scheme, par exemple comme
-entrée d'un autre paquet.  Deuxièmement, il y a la chaîne dans le champ
address@hidden d'une définition de paquet.  Ce nom est utilisé par les
-commandes de gestion des paquets comme @command{guix package} et
address@hidden build}.
-
-Les deux sont habituellement les mêmes et correspondent à la conversion en
-minuscule du nom du projet choisi en amont, où les underscores sont
-remplacés par des tirets.  Par exemple, GNUnet est disponible en tant que
address@hidden et SDL_net en tant que @code{sdl-net}.
-
-Nous n'ajoutons pas de préfixe @code{lib} au bibliothèques de paquets, à
-moins qu'il ne fasse partie du nom officiel du projet.  Mais @pxref{Modules 
python} et @ref{Modules perl}  pour des règles spéciales concernant les
-modules pour les langages Python et Perl.
-
-Les noms de paquets de polices sont gérés différemment, @pxref{Polices de 
caractères}.
-
-
address@hidden Numéros de version
address@hidden Numéros de version
-
address@hidden version du paquet
-Nous n'incluons en général que la dernière version d'un projet de logiciel
-libre donné.  Mais parfois, par exemple pour des versions incompatibles de
-bibliothèques, deux (ou plus) versions du même paquet sont requises.  Elles
-ont besoin d'un nom de variable Scheme différent.  Nous utilisons le nom
-défini dans @ref{Conventions de nommage} pour la version la plus récente ; les
-versions précédentes utilisent le même nom, suffixé par @code{-} et le plus
-petit préfixe du numéro de version qui permet de distinguer deux versions.
-
-Le nom dans la définition du paquet est le même pour toutes les versions
-d'un paquet et ne contient pas de numéro de version.
-
-Par exemple, les version 2.24.20 et 3.9.12 de GTK+ peuvent être inclus de
-cette manière :
-
address@hidden
-(define-public gtk+
-  (package
-    (name "gtk+")
-    (version "3.9.12")
-    ...))
-(define-public gtk+-2
-  (package
-    (name "gtk+")
-    (version "2.24.20")
-    ...))
address@hidden example
-Si nous voulons aussi GTK+ 3.8.2, cela serait inclus de cette manière :
address@hidden
-(define-public gtk+-3.8
-  (package
-    (name "gtk+")
-    (version "3.8.2")
-    ...))
address@hidden example
-
address@hidden See 
<https://lists.gnu.org/archive/html/guix-devel/2016-01/msg00425.html>,
address@hidden for a discussion of what follows.
address@hidden numéro de version, pour les instantanés des systèmes de contrôle 
de version
-Parfois, nous incluons des paquets provenant d'instantanés de systèmes de
-contrôle de version (VCS) au lieu de versions publiées formellement.  Cela
-devrait rester exceptionnel, car c'est le rôle des développeurs amont de
-spécifier quel est la version stable.  Cependant, c'est parfois nécessaire.
-Donc, que faut-il mettre dans le champ @code{version} ?
-
-Clairement, nous devons rendre l'identifiant de commit de l'instantané du
-VCS visible dans la version, mais nous devons aussi nous assurer que la
-version augmente de manière monotone pour que @command{guix package
---upgrade} puisse déterminer quelle version est la plus récente.  Comme les
-identifiants de commits, notamment avec Git, n'augmentent pas, nous ajoutons
-un numéro de révision qui nous augmentons à chaque fois que nous mettons à
-jour vers un nouvel instantané.  La chaîne qui en résulte ressemble à cela :
-
address@hidden
-2.0.11-3.cabba9e
-  ^    ^    ^
-  |    |    `-- ID du commit en amont
-  |    |
-  |    `--- révision du paquet Guix
-  |
-dernière version en amont
address@hidden example
-
-C'est une bonne idée de tronquer les identifiants dans le champ
address@hidden à disons 7 caractères.  Cela évite un problème esthétique (en
-supposant que l'esthétique ait un rôle à jouer ici) et des problèmes avec
-les limites de l'OS comme la longueur maximale d'un shebang (127 octets pour
-le noyau Linux).  Il vaut mieux utilise l'identifiant de commit complet dans
address@hidden cependant, pour éviter les ambiguïtés.  Une définition de
-paquet peut ressembler à ceci :
-
address@hidden
-(define my-package
-  (let ((commit "c3f29bc928d5900971f65965feaae59e1272a3f7")
-        (revision "1"))          ;révision du paquet Guix
-    (package
-      (version (git-version "0.9" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "git://example.org/my-package.git")
-                      (commit commit)))
-                (sha256 (base32 "address@hidden"))
-                (file-name (git-file-name name version))))
-      ;; @dots{}
-      )))
address@hidden example
-
address@hidden Synopsis et descriptions
address@hidden Synopsis et descriptions
-
address@hidden description du paquet
address@hidden résumé du paquet
-Comme nous l'avons vu avant, chaque paquet dans address@hidden contient un
-résumé et une description (@pxref{Définition des paquets}).  Les résumés et les
-descriptions sont importants : ce sont eux que recherche @command{guix
-package --search}, et c'est une source d'informations cruciale pour aider
-les utilisateurs à déterminer si un paquet donner correspond à leurs
-besoins.  En conséquence, les mainteneurs doivent prêter attention à leur
-contenu.
-
-Les résumés doivent commencer par une lettre capitale et ne doit pas finir
-par un point.  Ils ne doivent pas commencer par « a » ou « the » (« un » ou
-« le/la »), ce qui n'apporte généralement rien ; par exemple, préférez «
-File-frobbing tool » (« Outil de frobage de fichier ») à « A tool that frobs
-file » (« Un outil qui frobe les fichiers »).  Le résumé devrait dire ce que
-le paquet est — p.@: ex.@: « Utilitaire du cœur de GNU (fichier, text,
-shell) » — ou ce à quoi il sert — p.@: ex.@: le résumé de grep est « Affiche
-des lignes correspondant à un motif ».
-
-Gardez à l'esprit que le résumé doit avoir un sens pour une large audience.
-Par exemple « Manipulation d'alignements au format SAM » peut avoir du sens
-pour un bioinformaticien chevronné, mais n'aidera pas ou pourra perdre une
-audience de non-spécialistes.  C'est une bonne idée de créer un résumé qui
-donne une idée du domaine d'application du paquet.  Dans cet exemple, cela
-donnerait « Manipulation d'alignements de séquences de nucléotides », ce qui
-devrait donner une meilleure idée à l'utilisateur pour savoir si c'est ce
-qu'il recherche.
-
-Les descriptions devraient faire entre cinq et dix lignes.  Utilisez des
-phrases complètes, et évitez d'utiliser des acronymes sans les introduire
-d'abord.  Évitez les phrases marketings comme « world-leading », «
-industrial-strength » et « next-generation » et évitez les superlatifs comme
-« the most advanced » — ils ne sont pas utiles pour les utilisateurs qui
-cherchent un paquet et semblent même un peu suspects.  À la place, essayez
-d'être factuels, en mentionnant les cas d'utilisation et les
-fonctionnalités.
-
address@hidden balisage texinfo, dans les descriptions de paquets
-Les descriptions peuvent inclure du balisage Texinfo, ce qui est utile pour
-introduire des ornements comme @code{@@code} ou @code{@@dfn}, des listes à
-points ou des hyperliens (@pxref{Overview,,, texinfo, GNU Texinfo}).
-Cependant soyez prudents lorsque vous utilisez certains symboles, par
-exemple @samp{@@} et les accolades qui sont les caractères spéciaux de base
-en Texinfo (@pxref{Special Characters,,, texinfo, GNU Texinfo}).  Les
-interfaces utilisateurs comme @command{guix package --show} prennent en
-charge le rendu.
-
-Les résumés et les descriptions sont traduits par des volontaires
address@hidden://translationproject.org/domain/guix-packages.html, sur le projet
-de traduction} pour que le plus d'utilisateurs possible puissent les lire
-dans leur langue natale.  Les interfaces utilisateurs les recherchent et les
-affichent dans la langue spécifiée par le paramètre de régionalisation
-actuel.
-
-Pour permettre à @command{xgettext} de les extraire comme des chaînes
-traduisibles, les résumés et les descriptions @emph{doivent être des chaînes
-litérales}.  Cela signifie que vous ne pouvez pas utiliser
address@hidden ou @code{format} pour construire ces chaînes :
-
address@hidden
-(package
-  ;; @dots{}
-  (synopsis "Ceci est traduisible")
-  (description (string-append "Ceci n'est " "*pas*" " traduisible.")))
address@hidden lisp
-
-La traduction demande beaucoup de travail, donc en tant que packageur,
-faîtes encore plus attention à vos résumés et descriptions car chaque
-changement peut demander d'autant plus de travail de la part des
-traducteurs.  Pour les aider, il est possible de donner des recommandations
-ou des instructions qu'ils pourront voir en insérant des commentaires
-spéciaux comme ceci (@pxref{xgettext Invocation,,, gettext, GNU Gettext}) :
-
address@hidden
-;; TRANSLATORS: "X11 resize-and-rotate" should not be translated.
-(description "ARandR is designed to provide a simple visual front end
-for the X11 resize-and-rotate (RandR) extension. @dots{}")
address@hidden example
-
-
address@hidden Modules python
address@hidden Modules python
-
address@hidden python
-Nous incluons actuellement Python 2 et Python 3, sous les noms de variables
-Scheme @code{python-2} et @code{python} comme expliqué dans @ref{Numéros de 
version}.  Pour éviter la confusion et les problèmes de noms avec d'autres
-langages de programmation, il semble désirable que le nom d'un paquet pour
-un module Python contienne le mot @code{python}.
-
-Certains modules ne sont compatibles qu'avec une version de Python, d'autres
-avec les deux.  Si le paquet Foo ne compile qu'avec Ptyhon 3, on le nomme
address@hidden ; s'il ne compile qu'avec Python 2, on le nome
address@hidden  S'il est compatible avec les deux versions, nous créons
-deux paquets avec les noms correspondant.
-
-Si un projet contient déjà le mot @code{python}, on l'enlève, par exemple le
-module python-dateutil est packagé sous les noms @code{python-dateutil} et
address@hidden  Si le nom du projet commence par @code{py} (p.@:
-ex.@: @code{pytz}), on le garde et on le préfixe comme décrit ci-dessus.
-
address@hidden Spécifier les dépendances
address@hidden entrées, pour les paquets Python
-
-Les informations de dépendances pour les paquets Python se trouvent
-généralement dans l'arborescence des source du paquet, avec plus ou moins de
-précision : dans le fichier @file{setup.py}, dans @file{requirements.txt} ou
-dans @file{tox.ini}.
-
-Votre mission, lorsque vous écrivez une recette pour un paquet Python, est
-de faire correspondre ces dépendances au bon type « d'entrée »
-(@pxref{Référence des paquets, inputs}).  Bien que l'importeur @code{pypi} 
fasse
-du bon boulot (@pxref{Invoquer guix import}), vous devriez vérifier la liste
-suivant pour déterminer où va telle dépendance.
-
address@hidden
-
address@hidden
-Nous empaquetons Python 2 avec @code{setuptools} et @code{pip} installé
-comme Python 3.4 par défaut.  Ainsi, vous n'avez pas à spécifié ces
-entrées.  @command{guix lint} vous avertira si vous faîtes cela.
-
address@hidden
-Les dépendances Python requises à l'exécutions vont dans
address@hidden  Elles sont typiquement définies dans le mot-clef
address@hidden dans @file{setup.py} ou dans le fichier
address@hidden
-
address@hidden
-Les paquets Python requis uniquement à la construction — p.@: ex.@: ceux
-listés dans le mot-clef @code{setup_requires} de @file{setup.py} — ou
-seulement pour les tests — p.@: ex.@: ceux dans @code{tests_require} — vont
-dans @code{native-inputs}.  La raison est qu'ils n'ont pas besoin d'être
-propagés car ils ne sont pas requis à l'exécution et dans le cas d'une
-compilation croisée, c'est l'entrée « native » qu'il nous faut.
-
-Les cadriciels de tests @code{pytest}, @code{mock} et @code{nose} sont des
-exemples.  Bien sûr si l'un de ces paquets est aussi requis à l'exécution,
-il doit aller dans @code{propagated-inputs}.
-
address@hidden
-Tout ce qui ne tombe pas dans les catégories précédentes va dans
address@hidden, par exemple des programmes pour des bibliothèques C requises
-pour construire des paquets Python avec des extensions C.
-
address@hidden
-Si un paquet Python a des dépendances facultatives (@code{extras_require}),
-c'est à vous de décider de les ajouter ou non, en fonction du ratio entre
-utilité et complexité (@pxref{Envoyer des correctifs, @command{guix size}}).
-
address@hidden itemize
-
-
address@hidden Modules perl
address@hidden Modules perl
-
address@hidden perl
-Les programmes Perl utiles en soit sont nommés comme les autres paquets,
-avec le nom amont en minuscule.  Pour les paquets Perl contenant une seule
-classe, nous utilisons le nom de la classe en minuscule, en remplaçant les
-occurrences de @code{::} par des tirets et en préfixant le tout par
address@hidden  Donc la classe @code{XML::Parser} devient
address@hidden  Les modules contenant plusieurs classes gardent
-leur nom amont en minuscule et sont aussi préfixés par @code{perl-}.  Ces
-modules tendent à avoir le mot @code{perl} quelque part dans leur nom, que
-nous supprimons en faveur du préfixe.  Par exemple, @code{libwww-perl}
-devient @code{perl-libwww}.
-
-
address@hidden Paquets java
address@hidden Paquets java
-
address@hidden java
-Le programmes Java utiles en soit sont nommés comme les autres paquets, avec
-le nom amont en minuscule.
-
-Pour éviter les confusions et les problèmes de nom avec d'autres langages de
-programmation, il est désirable que le nom d'un paquet Java soit préfixé par
address@hidden  Si un projet contient déjà le mot @code{java}, nous le
-supprimons, par exemple le paquet @code{ngsjava} est empaqueté sous le nom
address@hidden
-
-Pour les paquets java contenant une seul classe ou une petite hiérarchie de
-classes, nous utilisons le nom de la classe en minuscule, en remplaçant les
-occurrences de @code{.} par des tirets et en préfixant le tout par
address@hidden  Donc la classe @code{apache.commons.cli} devient
address@hidden
-
-
address@hidden Polices de caractères
address@hidden Polices de caractères
-
address@hidden polices
-Pour les polices qui n esont en général par installées par un utilisateurs
-pour du traitement de texte, ou qui sont distribuées en tant que partie d'un
-paquet logiciel plus gros, nous nous appuyons sur les règles générales pour
-les logiciels ; par exemple, cela s'applique aux polices livrées avec le
-système X.Org ou les polices qui font partie de TeX Live.
-
-Pour rendre plus facile la recherche par l'utilisateur, les noms des autres
-paquets contenant seulement des polices sont construits ainsi,
-indépendamment du nom du paquet en amont.
-
-Le nom d'un paquet contenant une unique famille de polices commence par
address@hidden ; il est suivi du nom du fondeur et d'un tiret @code{-} si le
-fondeur est connu, et du nom de la police, dont les espaces sont remplacés
-par des tirets (et comme d'habitude, toutes les lettres majuscules sont
-transformées en minuscules).  Par exemple, la famille de polices Gentium de
-SIL est empaqueté sous le nom @code{font-sil-gentium}.
-
-Pour un paquet contenant plusieurs familles de polices, le nom de la
-collection est utilisée à la place du nom de la famille.  Par exemple les
-polices Liberation consistent en trois familles, Liberation Sans, Liberation
-Serif et Liberation Mono.  Elles pourraient être empaquetées séparément sous
-les noms @code{font-liberation-sans} etc, mais comme elles sont distribuées
-ensemble sous un nom commun, nous préférons les empaqueter ensemble en tant
-que @code{font-liberation}.
-
-Dans le cas où plusieurs formats de la même famille ou collection sont
-empaquetés séparément, une forme courte du format, préfixé d'un tiret est
-ajouté au nom du paquet.  Nous utilisont @code{-ttf} pour les polices
-TrueType, @code{-otf} pour les polices OpenType et @code{-type1} pour les
-polices Type 1 de PostScript.
-
-
address@hidden Style de code
address@hidden Style de code
-
-En général notre code suit le Standard de Code GNU (@pxref{Top,,, standards,
-GNU Coding Standards}).  Cependant, il ne parle pas beaucoup de Scheme, donc
-voici quelques règles supplémentaires.
-
address@hidden
-* Paradigme de programmation::  Comment composer vos éléments.
-* Modules::                  Où stocker votre code ?
-* Types de données et reconnaissance de motif::  Implémenter des 
-                                                    structures de données.
-* Formatage du code::        Conventions d'écriture.
address@hidden menu
-
address@hidden Paradigme de programmation
address@hidden Paradigme de programmation
-
-Le code Scheme dans Guix est écrit dans un style purement fonctionnel.  Le
-code qui s'occupe des entrées-sorties est une exception ainsi que les
-procédures qui implémentent des concepts bas-niveau comme la procédure
address@hidden
-
address@hidden Modules
address@hidden Modules
-
-Les modules Guile qui sont sensés être utilisés du côté de la construction
-doivent se trouver dans l'espace de nom @code{(guix build @dots{})}.  Ils ne
-doivent pas se référer à d'autres modules Guix ou address@hidden  Cependant il 
est
-correct pour un module « côté hôte » de dépendre d'un module coté
-construction.
-
-Les modules qui s'occupent du système GNU général devraient se trouver dans
-l'espace de nom @code{(gnu @dots{})} plutôt que @code{(guix @dots{})}.
-
address@hidden Types de données et reconnaissance de motif
address@hidden Types de données et reconnaissance de motif
-
-La tendance en Lisp classique est d'utiliser des listes pour tout
-représenter et de naviguer dedans « à la main ( avec @code{car}, @code{cdr},
address@hidden et compagnie.  Il y a plusieurs problèmes avec ce style,
-notamment le fait qu'il soit dur à lire, source d'erreur et un obstacle aux
-rapports d'erreur bien typés.
-
-Le code de Guix devrait définir des types de données appropriées (par
-exemple, avec @code{define-record-type*}) plutôt que d'abuser des listes.
-En plus, il devrait utiliser la recherche de motifs, via le module Guile
address@hidden(ice-9 match)}, surtout pour rechercher dans des listes.
-
address@hidden Formatage du code
address@hidden Formatage du code
-
address@hidden formater le code
address@hidden style de code
-Lorsque nous écrivons du code Scheme, nous suivons la sagesse commune aux
-programmeurs Scheme.  En général, nous suivons les
address@hidden://mumble.net/~campbell/scheme/style.txt, règles de style de
-Riastradh}.  Ce document décrit aussi les conventions utilisées dans le code
-de Guile.  Il est bien pensé et bien écrit, alors n'hésitez pas à le lire.
-
-Certaines formes spéciales introduites dans Guix comme la macro
address@hidden ont des règles d'indentation spécifiques.  Elles sont
-définies dans le fichier @file{.dir-locals.el} qu'Emacs utilise
-automatiquement.  Remarquez aussi qu'Emacs-Guix fournit le mode
address@hidden qui indente et colore le code Guix correctement
-(@pxref{Développement,,, emacs-guix, The Emacs-Guix Reference Manual}).
-
address@hidden indentation, du code
address@hidden formatage, du code
-Si vous n'utilisez pas Emacs, assurez-vous que votre éditeur connaisse ces
-règles.  Pour indenter automatiquement une définition de paquet, vous pouvez
-aussi lancer :
-
address@hidden
-./etc/indent-code.el gnu/packages/@var{file}.scm @var{package}
address@hidden example
-
address@hidden
-Cela indente automatiquement la définition de @var{package} dans
address@hidden/packages/@var{file}.scm} en lançant Emacs en mode commande.  Pour
-indenter un fichier complet, n'indiquez pas de second argument :
-
address@hidden
-./etc/indent-code.el gnu/services/@var{file}.scm
address@hidden example
-
address@hidden Vim, édition de code Scheme
-Si vous éditez du code avec Vim, nous recommandons de lancer @code{:set
-autoindent} pour que votre code soit automatiquement indenté au moment où
-vous l'entrez.  En plus,
address@hidden://www.vim.org/scripts/script.php?script_id=3998,
address@hidden peut vous aider à gérer toutes ces parenthèses.
-
-Nous demandons que toutes les procédure de premier niveau contiennent une
-chaîne de documentation.  Ce prérequis peut être relâché pour les procédures
-privées simples dans l'espace de nom @code{(guix build @dots{})} cependant.
-
-Les procédures ne devraient pas avoir plus de quatre paramètres
-positionnés. Utilisez des paramètres par mot-clefs pour les procédures qui
-prennent plus de quatre paramètres.
-
-
address@hidden Envoyer des correctifs
address@hidden Envoyer des correctifs
-
-Le développement se fait avec le système de contrôle de version Git.  Ainsi,
-l'accès au dépôt n'est pas strictement nécessaire.  Nous accueillons les
-contributions sous forme de correctifs produits par @code{git format-patch}
-envoyés sur la liste de diffusion @email{guix-patches@@gnu.org}.
-
-Cette liste de diffusion est gérée par une instance Debbugs accessible à
-l'adresse @uref{https://bugs.gnu.org/guix-patches}, qui nous permet de
-suivre les soumissions.  Chaque message envoyé à cette liste se voit
-attribuer un numéro de suivi ; les gens peuvent ensuite répondre à cette
-soumission en envoyant un courriel à @address@hidden@@debbugs.gnu.org}, où
address@hidden est le numéro de suivi (@pxref{Envoyer une série de correctifs}).
-
-Veuillez écrire les messages de commit dans le format ChangeLog
-(@pxref{Change Logs,,, standards, GNU Coding Standards}) ; vous pouvez
-regarder l'historique des commits pour trouver des exemples.
-
-Avant de soumettre un correctif qui ajoute ou modifie la définition d'un
-paquet, veuillez vérifier cette check-list :
-
address@hidden
address@hidden
-Si les auteurs du paquet logiciel fournissent une signature cryptographique
-pour l'archive, faîtes un effort pour vérifier l'authenticité de l'archive.
-Pour un fichier de signature GPG détaché, cela se fait avec la commande
address@hidden --verify}.
-
address@hidden
-Prenez un peu de temps pour fournir un synopsis et une description adéquats
-pour le paquet.  Voir @xref{Synopsis et descriptions} pour quelques lignes
-directrices.
-
address@hidden
-Lancez @code{guix lint @var{paquet}}, où @var{paquet} est le nom du nouveau
-paquet ou du paquet modifié, et corrigez les erreurs qu'il rapporte
-(@pxref{Invoquer guix lint}).
-
address@hidden
-Assurez-vous que le paquet se construise sur votre plate-forme avec
address@hidden build @var{paquet}}.
-
address@hidden
-Nous vous recommandons aussi d'essayer de construire le paquet sur les
-autres plate-formes prises en charge.  Comme vous n'avez pas forcément accès
-aux plate-formes matérielles, nous vous recommandons d'utiliser le
address@hidden pour les émuler.  Pour cela, ajoutez le
-service suivant à la liste des services dans votre configuration de système
-d'exploitation :
-
address@hidden
-(service qemu-binfmt-service-type
- (qemu-binfmt-configuration
-   (platforms (lookup-qemu-platforms "arm" "aarch64" "mips64el"))
-   (guix-support? #t)))
address@hidden example
-
-Puis reconfigurez votre système.
-
-Vous pourrez ensuite construire les paquets pour différentes plate-formes en
-spécifiant l'option @code{--system}.  Par exemple pour construire le paquet
-« hello » pour les architectures armhf, aarch64 ou mips64, vous devrez
-lancer les commandes suivantes, respectivement :
address@hidden
-guix build --system=armhf-linux --rounds=2 hello
-guix build --system=aarch64-linux --rounds=2 hello
-guix build --system=mips64el-linux --rounds=2 hello
address@hidden example
-
address@hidden
address@hidden construction groupée
-Assurez-vous que le paquet n'utilise pas de copie groupée d'un logiciel déjà
-disponible dans un paquet séparé.
-
-Parfois, les paquets incluent des copie du code source de leurs dépendances
-pour le confort de leurs utilisateurs.  Cependant, en tant que distribution,
-nous voulons nous assurer que ces paquets utilisent bien les copient que
-nous avons déjà dans la distribution si elles existent.  Cela améliore
-l'utilisation des ressources (la dépendance n'est construite et stockée
-qu'une seule fois) et permet à la distribution de faire des changements
-transversaux comme appliquer des correctifs de sécurité pour un paquet donné
-depuis un unique emplacement et qu'ils affectent tout le système, ce
-qu'empêchent les copies groupées.
-
address@hidden
-Regardez le profil rapporté par @command{guix size} (@pxref{Invoquer guix 
size}).  Cela vous permettra de remarquer des références à d'autres paquets
-qui ont été retenus sans que vous vous y attendiez.  Il peut aussi aider à
-déterminer s'il faut découper le paquet (@pxref{Des paquets avec plusieurs
-résultats}) et quelles dépendances facultatives utiliser.  En particulier,
-évitez d'ajouter @code{texlive} en dépendance : à cause de sa taille
-extrême, utilisez @code{texlive-tiny} ou @code{texlive-union} à la place.
-
address@hidden
-Pour les changements important, vérifiez que les paquets qui en dépendent
-(s'ils existent) ne sont pas affectés par le changement ; @code{guix refresh
---list-dependant @var{paquet}} vous aidera (@pxref{Invoquer guix refresh}).
-
address@hidden See 
<https://lists.gnu.org/archive/html/guix-devel/2016-10/msg00933.html>.
address@hidden stratégie de branche
address@hidden stratégie de planification des reconstructions
-Suivant le nombre de paquets dépendants et donc le nombre de reconstruction
-induites, les commits vont vers des branches différentes, suivant ces
-principes :
-
address@hidden @asis
address@hidden 300 paquets dépendants ou moins
-branche @code{master} (changements non-disruptifs).
-
address@hidden entre 300 et 1 200 paquets dépendants
-branche @code{staging} (changements non-disruptifs).  Cette branche devrait
-être fusionnées dans @code{master} tous les 3 semaines.  Les changements par
-thèmes (par exemple une mise à jour de la pile GNOME) peuvent aller dans une
-branche spécifique (disons, @code{gnome-updates}).
-
address@hidden plus de 1 200 paquets dépendants
-branche @code{core-updates} (peut inclure des changements majeurs et
-potentiellement disruptifs).  Cette branche devrait être fusionnée dans
address@hidden tous les 2,5 mois environ.
address@hidden table
-
-Toutes ces branches sont @uref{https://hydra.gnu.org/project/gnu, gérées par
-notre ferme de construction} et fusionnées dans @code{master} une fois que
-tout a été construit correctement.  Cela nous permet de corriger des
-problèmes avant qu'ils n'atteignent les utilisateurs et réduit la fenêtre
-pendant laquelle les binaires pré-construits ne sont pas disponibles.
-
address@hidden TODO: It would be good with badges on the website that tracks 
these
address@hidden branches.  Or maybe even a status page.
-Généralement les autres branches que @code{master} sont considérées comme
address@hidden s'il y a eu une évaluation récente ou qu'il y a une branche
address@hidden correspondante.  Demandez sur la liste de diffusion ou sur IRC
-si vous n'êtes pas sûr de savoir où pousser votre correctif.
-
address@hidden
address@hidden déterminisme, du processus de construction
address@hidden construction reproductibles, vérification
-Vérifiez si le processus de construction du paquet est déterministe.  Cela
-signifie typiquement vérifier qu'une construction indépendante du paquet
-renvoie exactement le même résultat que vous avez obtenu, bit à bit.
-
-Une manière simple de le faire est de reconstruire le paquet plusieurs fois
-à la suite sur votre machine (@pxref{Invoquer guix build}) :
-
address@hidden
-guix build --rounds=2 mon-paquet
address@hidden example
-
-Cela est suffisant pour trouver une classe de non-déterminisme commune,
-comme l'horodatage ou des sorties générées aléatoirement dans le résultat de
-la construction.
-
-Une autre option consiste à utiliser @command{guix challenge}
-(@pxref{Invoquer guix challenge}).  Vous pouvez lancer la commande une fois
-que les paquets ont été committés et construits par
address@hidden@value{SUBSTITUTE-SERVER}} pour vérifier s'il obtient le même 
résultat
-que vous.  Mieux encore : trouvez une autre machine qui peut le construire
-et lancez @command{guix publish}.  Puisque la machine distante est sûrement
-différente de la vôtre, cela peut trouver des problèmes de non-déterminisme
-liés au matériel — par exemple utiliser une extension du jeu d'instruction —
-ou du noyau du système d'exploitation — par exemple se reposer sur
address@hidden ou les fichiers de @file{/proc}.
-
address@hidden
-Lorsque vous écrivez de la documentation, utilisez une formulation au genre
-neutre lorsque vous vous référez à des personnes, comme le
address@hidden://fr.wikipedia.org/wiki/They_singulier, ``they''@comma{}
-``their''@comma{} ``them'' singulier} (en anglais).
-
address@hidden
-Vérifiez que votre correctif contienne seulement un ensemble de changements
-liés.  Grouper des changements non liés ensemble rend la revue plus
-difficile et plus lente.
-
-Ajouter plusieurs paquet ou une mise à jour d'un paquet avec des corrections
-dans ce paquet sont des exemples de changements sans rapport.
-
address@hidden
-Suivez nos règles de formatage de code, éventuellement en lançant le script
address@hidden/indent-code.el} pour le faire automatiquement (@pxref{Formatage
-du code}).
-
address@hidden
-Si possible, utilisez des miroirs dans l'URL des sources (@pxref{Invoquer guix 
download}).  Utilisez des URL stable, pas des URL générées.  Par
-exemple, les archives GitHub ne sont pas nécessairement identiques d'une
-génération à la suivante, donc il vaut mieux dans ce cas cloner le dépôt.
-N'utilisez pas le champ @command{name} dans l'URL : ce n'est pas très utile
-et si le nom change, l'URL sera probablement erronée.
-
address@hidden enumerate
-
-Lorsque vous envoyez un correctif à la liste de diffusion, utilisez
address@hidden @dots{}} comme sujet.  Vous pouvez utiliser votre client de
-courriel ou la commande @command{git send-email} (@pxref{Envoyer une série
-de correctifs}).  Nous préférons recevoir des correctifs en texte brut, soit
-en ligne, soit en pièce-jointe address@hidden   Nous vous conseillons de faire
-attention si votre client de courriel change par exemple les retours à la
-ligne ou l'indentation, ce qui peut casser les correctifs.
-
-Lorsqu'un bogue est résolu, veuillez fermer le fil en envoyant un courriel à
address@hidden@var{NNN}-done@@debbugs.gnu.org}.
-
address@hidden Envoyer une série de correctifs
address@hidden une série de correctifs}
address@hidden série de correctifs
address@hidden @code{git send-email}
address@hidden @code{git-send-email}
-
address@hidden Debbugs bug: https://debbugs.gnu.org/db/15/15361.html
-Lorsque vous envoyez une série de correctifs (p.@@:: ex.@: avec @code{git
-send-email}), envoyez d'abord une premier message à
address@hidden@@gnu.org} puis envoyez le reste des correctifs à
address@hidden@var{NNN}@@debbugs.gnu.org} pour vous assurer qu'ils seront 
groupés
-ensemble.  Voyez @uref{https://debbugs.gnu.org/Advanced.html, la
-documentation de Debbugs} pour plus d'informations.
diff --git a/doc/contributing.zh_CN.texi b/doc/contributing.zh_CN.texi
deleted file mode 100644
index ba8a824..0000000
--- a/doc/contributing.zh_CN.texi
+++ /dev/null
@@ -1,897 +0,0 @@
address@hidden 贡献
address@hidden 贡献
-
-这个项目是大家合作的成果,我们需要你的帮助以更好地发展。请通过
address@hidden@@gnu.org} 和 Freenode IRC 上的 @code{#guix} 联系我们。我们欢迎
-您的想法、bug反馈、补丁,以及任何可能对项目有帮助的贡献。我们特别欢迎帮助我们打
address@hidden
-
address@hidden 行为准则和贡献者
address@hidden 贡献者契约
-我们希望提供一个温暖、友好,并且没有骚扰的的环境,这样每个人都能尽最大努力贡献。
-为了这个目的,我们的项目遵循“贡献者契约”,这个契约是根据
address@hidden://contributor-covenant.org/}制定的。你可以在源代码目录里的
address@hidden
-
-贡献者在提交补丁和网上交流时不需要使用法律认可的名字。他们可以使用任何名字或者假
-名。
-
address@hidden
-* 从Git编译::             最新的并且最好的.
-* 在安装之前运行Guix::  黑客技巧。
-* 完美的配置::          正确的工具。
-* 打包指导::             Growing the distribution.
-* 代码风格::             开发者的卫生情况
-* 提交补丁::             分享你的工作。
address@hidden menu
-
address@hidden 从Git编译
address@hidden 从Git编译
-
-如果你想折腾Guix本身,建议使用Git仓库里最新的版本:
-
address@hidden
-git clone https://git.savannah.gnu.org/git/guix.git
address@hidden example
-
address@hidden
-要这些包。
-
address@hidden
address@hidden @url{http://gnu.org/software/autoconf/, GNU Autoconf};
address@hidden @url{http://gnu.org/software/automake/, GNU Automake};
address@hidden @url{http://gnu.org/software/gettext/, GNU Gettext};
address@hidden @url{http://gnu.org/software/texinfo/, GNU Texinfo};
address@hidden @url{http://www.graphviz.org/, Graphviz};
address@hidden @url{http://www.gnu.org/software/help2man/, GNU Help2man (可选)}。
address@hidden itemize
-
-设置Guix开发环境的最简单的方式当然是使用Guix!下面这些命令启动一个shell,所有的
-依赖和环境变量都为折腾Guix设置好了:
-
address@hidden
-guix environment guix
address@hidden example
-
address@hidden guix environment}。额外的依赖可以通过
address@hidden
-
address@hidden
-guix environment guix --ad-hoc help2man git strace
address@hidden example
-
-运行 @command{./bootstrap} 以使用Autoconf和Automake生成编译系统的基础框架。如果
-你的得到这样的错误:
-
address@hidden
-configure.ac:46: error: possibly undefined macro: PKG_CHECK_MODULES
address@hidden example
-
address@hidden
address@hidden@file{pkg.m4}
address@hidden
address@hidden/usr/address@hidden/usr/address@hidden
-你必须执行下面这个命令:
-
address@hidden
-export ACLOCAL_PATH=/usr/share/aclocal
address@hidden example
-
address@hidden Search Path,,, automake, The GNU Automake Manual}.
-
address@hidden/configure}。确保提供
address@hidden@address@hidden
address@hidden@pxref{The Store})
-
address@hidden address@hidden the Test Suite})。如果遇到任
address@hidden
address@hidden@@gnu.org, 邮件列表}发邮件。
-
-
address@hidden 在安装之前运行Guix
address@hidden 在安装之前运行Guix
-
-为了保持一个合适的工作环境,你会发现在你的本地代码树里测试修改而不用安装它们会很
-有用。TODO: So that you can distinguish between your ``end-user'' hat and your
-``motley'' costume.
-
address@hidden install},所有的命令行工具都可以使用。为此,你先
address@hidden
address@hidden/address@hidden
address@hidden/address@hidden@address@hidden
address@hidden@command{guix-daemon}和它使用的工具可
-以找到它们需要的Guile模块。}:
-
address@hidden
-$ sudo -E ./pre-inst-env guix-daemon --build-users-group=guixbuild
-$ ./pre-inst-env guix build hello
address@hidden example
-
address@hidden
-类似的,对于使用Guix模块的Guile会话:
-
address@hidden
-$ ./pre-inst-env guile -c '(use-modules (guix utils)) (pk (%current-system))'
-
-;;; ("x86_64-linux")
address@hidden example
-
address@hidden
address@hidden REPL
address@hidden read-eval-print loop
address@hidden and for a REPL (@pxref{Using Guile Interactively,,, guile, Guile
-Reference Manual}):
-
address@hidden
-$ ./pre-inst-env guile
-scheme@@(guile-user)> ,use(guix)
-scheme@@(guile-user)> ,use(gnu)
-scheme@@(guile-user)> (define snakes
-                       (fold-packages
-                         (lambda (package lst)
-                           (if (string-prefix? "python"
-                                               (package-name package))
-                               (cons package lst)
-                               lst))
-                         '()))
-scheme@@(guile-user)> (length snakes)
-$1 = 361
address@hidden example
-
address@hidden@env{PATH}和
address@hidden
-
address@hidden/pre-inst-env guix pull} @emph{不} 会更新本地源代码树,它只更新符号链
address@hidden/.config/guix/current} (@pxref{Invoking guix pull})。如果你想更新本地源
address@hidden pull}。
-
-
address@hidden 完美的配置
address@hidden 完美的配置
-
address@hidden Guile in Emacs,,, guile,
-Guile Reference Manual})。首先,你需要的不仅是一个编辑器,你需要
address@hidden://www.gnu.org/software/emacs, Emacs},以及美妙的
address@hidden://nongnu.org/geiser/, Geiser}。为此,请运行:
-
address@hidden
-guix package -i emacs guile emacs-geiser
address@hidden example
-
-Geiser允许在Emacs里进行交互式的、增长式的开发:buffer里的代码补全和执行,获取一
address@hidden
address@hidden,,, geiser, Geiser User Manual})。为了方便的
-Guix开发,请确保修改Guile的加载路径(load path)以使其能从你的项目里找到源代码文
-件。
-
address@hidden
-;; @r{假设Guix项目在 ~/src/guix.}
-(with-eval-after-load 'geiser-guile
-  (add-to-list 'geiser-guile-load-path "~/src/guix"))
address@hidden lisp
-
-真正编辑代码时别忘了Emacs自带了方便的Scheme模式。而且,一定不要错过
address@hidden://www.emacswiki.org/emacs/ParEdit, Paredit}。它提供了直接操作语法树的
-的功能,例如,用S-表达式替换父节点,为S-表达式添加、删除前后的括号,删除后面的S-
-表达式,等等。
-
address@hidden 代码片段
address@hidden 模板
address@hidden reducing boilerplate
address@hidden/snippets}文件夹里,我们还为普通的git commit信息和软件包定义提供模板。
address@hidden://joaotavora.github.io/yasnippet/, YASnippet}使用,它
-可以把短的触发字符串扩展成交互式的文字片段。你可能希望将这个文件夹添加到Emacs的
address@hidden
-
address@hidden
-;; @r{假设Guix项目在 ~/src/guix.}
-(with-eval-after-load 'yasnippet
-  (add-to-list 'yas-snippet-dirs "~/src/guix/etc/snippets"))
address@hidden lisp
-
address@hidden://magit.vc/, Magit}。编辑commit信
address@hidden@kbd{TAB}就可以插入一段用于新增软件包的模板;输入
address@hidden@address@hidden
address@hidden
-
address@hidden@address@hidden
address@hidden@code{origin}片段更进
address@hidden
-
-
address@hidden 打包指导
address@hidden 打包指导
-
address@hidden 软件包, 创建
-这个GNU发行版正在开发的早期阶段,可能缺少一些你喜欢的软件。这个章节介绍你可以怎
-样帮助这个发行版成长。
-
address@hidden@file{tar.gz}包。添
address@hidden
address@hidden
-
address@hidden
-它们使用Scheme编程语言编写,事实上,对每个软件包我们都定义一个绑定到软件包定义的
address@hidden Modules})中导出那个变量。然而,深入的Scheme
address@hidden@pxref{Defining
-Packages}。
-
address@hidden
-build} (@pxref{Invoking guix build})命令测试它。假设这个新软件包的名字叫做
address@hidden(@pxref{在安装之前运行Guix}):
-
address@hidden
-./pre-inst-env guix build gnew --keep-failed
address@hidden example
-
address@hidden
address@hidden
-
address@hidden
address@hidden
-了解这个错误的详情:
-
address@hidden
-./pre-inst-env guile -c '(use-modules (gnu packages gnew))'
address@hidden example
-
address@hidden
-如果你需要帮助,我们也会很乐意帮助你。一旦补丁被提交到Guix仓库里,这个新的软件包
address@hidden://hydra.gnu.org/jobset/gnu/master, our
-continuous integration system}。
-
address@hidden substituter
address@hidden address@hidden
-guix address@hidden@value{SUBSTITUTE-SERVER}}编译好这些软件包之后,安装这些软
address@hidden
-干预的地方是评审和应用代码补丁。
-
-
address@hidden
-* 软件自由::             什么可以进入这个发行版。
-* 软件包命名::          名字里包含什么?
-* 版本号::                当名字不够时
-* 简介和描述::          帮助用户寻找合适的软件包
-* Python模块::             接触英式的喜剧
-* Perl模块::               小珍珠。
-* Java包::                  喝咖啡休息。
-* 字体::                   字体的乐趣。
address@hidden menu
-
address@hidden 软件自由
address@hidden 软件自由
-
address@hidden 
===========================================================================
address@hidden
address@hidden This file was generated with po4a. Translate the source file.
address@hidden
address@hidden 
===========================================================================
address@hidden Adapted from http://www.gnu.org/philosophy/philosophy.html.
address@hidden 自由软件
address@hidden
address@hidden://www.gnu.org/philosophy/free-sw.html,四项重要的自由}:运行程序的自由,
-以源代码形式学习和修改程序的自由,原样重新分发副本的自由,和分发修改后的版本的自
-由。GNU发行版里包含的软件包只提供遵守这四项自由的软件。
-
-此外,GNU发行版遵循
address@hidden://www.gnu.org/distros/free-system-distribution-guidelines.html,自由软
-件发行版准则}。这些准则拒绝非自由的固件和对非自由软件的推荐,并讨论解决商标和专
-利的方法。
-
-某些上游的软件包源代码包含一小部分违反上述准则的可选的子集,比如这个子集本身就是
address@hidden
address@hidden@code{guix build --source}就
-可以返回自由的源代码而不是未经修改的上游源代码。
-
-
address@hidden 软件包命名
address@hidden 软件包命名
-
address@hidden 软件包名字
address@hidden
address@hidden
address@hidden
address@hidden address@hidden build}
-
-两个名字通常是相同的,常是上游项目名字转成小写字母并把下划线替换成连字符的结果。
address@hidden@code{sdl-net}。
-
address@hidden
address@hidden@ref{Perl模块}有关于Python和Perl语言的特殊规则。
-
address@hidden
-
-
address@hidden 版本号
address@hidden 版本号
-
address@hidden 软件包版本
-我们通常只为每个自由软件的最新版本打包。但是有时候,比如对于版本不兼容的库,需要
-有同一个软件包的两个或更多版本。它们需要使用不同的Scheme变量名。我们为最新的版本
address@hidden@code{-}
-和可以区分开版本号的版本号的最小前缀。
-
-软件包定义里的名字对于同一个软件包的所有版本都是相同的,并且不含有版本号。
-
-例如,GTK+的2.24.20和3.9.12两个版本可以这样打包:
-
address@hidden
-(define-public gtk+
-  (package
-    (name "gtk+")
-    (version "3.9.12")
-    ...))
-(define-public gtk+-2
-  (package
-    (name "gtk+")
-    (version "2.24.20")
-    ...))
address@hidden example
-如果我们还需要GTK+ 3.8.2,就这样打包
address@hidden
-(define-public gtk+-3.8
-  (package
-    (name "gtk+")
-    (version "3.8.2")
-    ...))
address@hidden example
-
address@hidden See 
<https://lists.gnu.org/archive/html/guix-devel/2016-01/msg00425.html>,
address@hidden for a discussion of what follows.
address@hidden 用于版本控制快照的版本号
-有时候,我们为软件包上游的版本控制系统(VCS)的快照而不是正式发布版打包。这是特
-殊情况,因为决定哪个是稳定版的权力应该属于上游开发者。然而,有时候这是必须的。那
address@hidden
-
-显然,我们需要让VCS快照的commit ID在版本号中体现出来,但是我们也需要确保版本号单
address@hidden package --upgrade}决定哪个版本号更新。由于commit ID,
-尤其是Git的commit ID,不是单调递增的,我们添加一个每次升级快照时都手动增长的
-revision数字。最后的版本号字符串看起来是这样:
-
address@hidden
-2.0.11-3.cabba9e
-  ^    ^    ^
-  |    |    `-- 上游的commit ID
-  |    |
-  |    `--- Guix软件包的revision
-  |
-最新的上游版本号
address@hidden example
-
address@hidden ID截短,比如只取7个数字,是一个好主意。它避免了美学上
-的烦恼(假设美学在这里很重要),以及操作系统限制引起的问题(比如Linux内核的127字
address@hidden ID,以避免混淆。
-
address@hidden
-(define my-package
-  (let ((commit "c3f29bc928d5900971f65965feaae59e1272a3f7")
-        (revision "1"))          ;Guix软件包的revision
-    (package
-      (version (git-version "0.9" revision commit))
-      (source (origin
-                (method git-fetch)
-                (uri (git-reference
-                      (url "git://example.org/my-package.git")
-                      (commit commit)))
-                (sha256 (base32 "address@hidden"))
-                (file-name (git-file-name name version))))
-      ;; @dots{}
-      )))
address@hidden example
-
address@hidden 简介和描述
address@hidden 简介和描述
-
address@hidden 软件包描述
address@hidden 软件包简介
address@hidden
address@hidden Packages})。简介和描述很重要:它们是
address@hidden package --search}搜索的信息,并且是帮助用户决定一个软件包是否符合
-自己需求的重要信息。因此,打包的人应该关注怎样写它们的内容。
-
-简介必须以大写字母开头,并且不能以句号结尾。它们不能以 ``a'' 或者 ``the'' 等没有
-意义的词开头。例如 ``File-frobbing tool'' 要比 ``A tool that frobs files'' 更好。
-简介需要说明软件包是什么--如 ``Core GNU utilities (file, text, shell)'',或者
-它的用途--如 address@hidden 的简介是 ``Print lines matching a pattern''。
-
-Keep in mind that the synopsis must be meaningful for a very wide audience.
-For example, ``Manipulate alignments in the SAM format'' might make sense
-for a seasoned bioinformatics researcher, but might be fairly unhelpful or
-even misleading to a non-specialized audience.  It is a good idea to come up
-with a synopsis that gives an idea of the application domain of the
-package.  In this example, this might give something like ``Manipulate
-nucleotide sequence alignments'', which hopefully gives the user a better
-idea of whether this is what they are looking for.
-
-Descriptions should take between five and ten lines.  Use full sentences,
-and avoid using acronyms without first introducing them.  Please avoid
-marketing phrases such as ``world-leading'', ``industrial-strength'', and
-``next-generation'', and avoid superlatives like ``the most
-advanced''---they are not helpful to users looking for a package and may
-even sound suspicious.  Instead, try to be factual, mentioning use cases and
-features.
-
address@hidden Texinfo markup, in package descriptions
-Descriptions can include Texinfo markup, which is useful to introduce
-ornaments such as @code{@@code} or @code{@@dfn}, bullet lists, or hyperlinks
-(@pxref{Overview,,, texinfo, GNU Texinfo}).  However you should be careful
-when using some characters for example @samp{@@} and curly braces which are
-the basic special characters in Texinfo (@pxref{Special Characters,,,
-texinfo, GNU Texinfo}).  User interfaces such as @command{guix package
---show} take care of rendering it appropriately.
-
-Synopses and descriptions are translated by volunteers
address@hidden://translationproject.org/domain/guix-packages.html, at the
-Translation Project} so that as many users as possible can read them in
-their native language.  User interfaces search them and display them in the
-language specified by the current locale.
-
-To allow @command{xgettext} to extract them as translatable strings,
-synopses and descriptions @emph{must be literal strings}.  This means that
-you cannot use @code{string-append} or @code{format} to construct these
-strings:
-
address@hidden
-(package
-  ;; @dots{}
-  (synopsis "This is translatable")
-  (description (string-append "This is " "*not*" " translatable.")))
address@hidden lisp
-
-Translation is a lot of work so, as a packager, please pay even more
-attention to your synopses and descriptions as every change may entail
-additional work for translators.  In order to help them, it is possible to
-make recommendations or instructions visible to them by inserting special
-comments like this (@pxref{xgettext Invocation,,, gettext, GNU Gettext}):
-
address@hidden
-;; TRANSLATORS: "X11 resize-and-rotate" should not be translated.
-(description "ARandR is designed to provide a simple visual front end
-for the X11 resize-and-rotate (RandR) extension. @dots{}")
address@hidden example
-
-
address@hidden Python模块
address@hidden Python模块
-
address@hidden python
-We currently package Python 2 and Python 3, under the Scheme variable names
address@hidden and @code{python} as explained in @ref{版本号}.  To
-avoid confusion and naming clashes with other programming languages, it
-seems desirable that the name of a package for a Python module contains the
-word @code{python}.
-
-Some modules are compatible with only one version of Python, others with
-both.  If the package Foo compiles only with Python 3, we name it
address@hidden; if it compiles only with Python 2, we name it
address@hidden If it is compatible with both versions, we create two
-packages with the corresponding names.
-
-If a project already contains the word @code{python}, we drop this; for
-instance, the module python-dateutil is packaged under the names
address@hidden and @code{python2-dateutil}.  If the project name
-starts with @code{py} (e.g.@: @code{pytz}), we keep it and prefix it as
-described above.
-
address@hidden Specifying Dependencies
address@hidden inputs, for Python packages
-
-Dependency information for Python packages is usually available in the
-package source tree, with varying degrees of accuracy: in the
address@hidden file, in @file{requirements.txt}, or in @file{tox.ini}.
-
-Your mission, when writing a recipe for a Python package, is to map these
-dependencies to the appropriate type of ``input'' (@pxref{package Reference,
-inputs}).  Although the @code{pypi} importer normally does a good job
-(@pxref{Invoking guix import}), you may want to check the following check
-list to determine which dependency goes where.
-
address@hidden
-
address@hidden
-We currently package Python 2 with @code{setuptools} and @code{pip}
-installed like Python 3.4 has per default.  Thus you don't need to specify
-either of these as an input.  @command{guix lint} will warn you if you do.
-
address@hidden
-Python dependencies required at run time go into @code{propagated-inputs}.
-They are typically defined with the @code{install_requires} keyword in
address@hidden, or in the @file{requirements.txt} file.
-
address@hidden
-Python packages required only at build time---e.g., those listed with the
address@hidden keyword in @file{setup.py}---or only for
-testing---e.g., those in @code{tests_require}---go into
address@hidden  The rationale is that (1) they do not need to be
-propagated because they are not needed at run time, and (2) in a
-cross-compilation context, it's the ``native'' input that we'd want.
-
-Examples are the @code{pytest}, @code{mock}, and @code{nose} test
-frameworks.  Of course if any of these packages is also required at
-run-time, it needs to go to @code{propagated-inputs}.
-
address@hidden
-Anything that does not fall in the previous categories goes to
address@hidden, for example programs or C libraries required for building
-Python packages containing C extensions.
-
address@hidden
-If a Python package has optional dependencies (@code{extras_require}), it is
-up to you to decide whether to add them or not, based on their
-usefulness/overhead ratio (@pxref{提交补丁, @command{guix size}}).
-
address@hidden itemize
-
-
address@hidden Perl模块
address@hidden Perl模块
-
address@hidden perl
-Perl programs standing for themselves are named as any other package, using
-the lowercase upstream name.  For Perl packages containing a single class,
-we use the lowercase class name, replace all occurrences of @code{::} by
-dashes and prepend the prefix @code{perl-}.  So the class @code{XML::Parser}
-becomes @code{perl-xml-parser}.  Modules containing several classes keep
-their lowercase upstream name and are also prepended by @code{perl-}.  Such
-modules tend to have the word @code{perl} somewhere in their name, which
-gets dropped in favor of the prefix.  For instance, @code{libwww-perl}
-becomes @code{perl-libwww}.
-
-
address@hidden Java包
address@hidden Java包
-
address@hidden java
-Java programs standing for themselves are named as any other package, using
-the lowercase upstream name.
-
-To avoid confusion and naming clashes with other programming languages, it
-is desirable that the name of a package for a Java package is prefixed with
address@hidden  If a project already contains the word @code{java}, we drop
-this; for instance, the package @code{ngsjava} is packaged under the name
address@hidden
-
-For Java packages containing a single class or a small class hierarchy, we
-use the lowercase class name, replace all occurrences of @code{.} by dashes
-and prepend the prefix @code{java-}.  So the class @code{apache.commons.cli}
-becomes package @code{java-apache-commons-cli}.
-
-
address@hidden 字体
address@hidden 字体
-
address@hidden fonts
-For fonts that are in general not installed by a user for typesetting
-purposes, or that are distributed as part of a larger software package, we
-rely on the general packaging rules for software; for instance, this applies
-to the fonts delivered as part of the X.Org system or fonts that are part of
-TeX Live.
-
-To make it easier for a user to search for fonts, names for other packages
-containing only fonts are constructed as follows, independently of the
-upstream package name.
-
-The name of a package containing only one font family starts with
address@hidden; it is followed by the foundry name and a dash @code{-} if the
-foundry is known, and the font family name, in which spaces are replaced by
-dashes (and as usual, all upper case letters are transformed to lower
-case).  For example, the Gentium font family by SIL is packaged under the
-name @code{font-sil-gentium}.
-
-For a package containing several font families, the name of the collection
-is used in the place of the font family name.  For instance, the Liberation
-fonts consist of three families, Liberation Sans, Liberation Serif and
-Liberation Mono.  These could be packaged separately under the names
address@hidden and so on; but as they are distributed together
-under a common name, we prefer to package them together as
address@hidden
-
-In the case where several formats of the same font family or font collection
-are packaged separately, a short form of the format, prepended by a dash, is
-added to the package name.  We use @code{-ttf} for TrueType fonts,
address@hidden for OpenType fonts and @code{-type1} for PostScript Type 1
-fonts.
-
-
address@hidden 代码风格
address@hidden 代码风格
-
-In general our code follows the GNU Coding Standards (@pxref{Top,,,
-standards, GNU Coding Standards}).  However, they do not say much about
-Scheme, so here are some additional rules.
-
address@hidden
-* Programming Paradigm::     How to compose your elements.
-* Modules::                  Where to store your code?
-* Data Types and Pattern Matching::  Implementing data structures.
-* Formatting Code::          Writing conventions.
address@hidden menu
-
address@hidden Programming Paradigm
address@hidden Programming Paradigm
-
-Scheme code in Guix is written in a purely functional style.  One exception
-is code that involves input/output, and procedures that implement low-level
-concepts, such as the @code{memoize} procedure.
-
address@hidden Modules
address@hidden Modules
-
-Guile modules that are meant to be used on the builder side must live in the
address@hidden(guix build @dots{})} name space.  They must not refer to other 
Guix
-or GNU modules.  However, it is OK for a ``host-side'' module to use a
-build-side module.
-
-Modules that deal with the broader GNU system should be in the @code{(gnu
address@hidden)} name space rather than @code{(guix @dots{})}.
-
address@hidden Data Types and Pattern Matching
address@hidden Data Types and Pattern Matching
-
-The tendency in classical Lisp is to use lists to represent everything, and
-then to browse them ``by hand'' using @code{car}, @code{cdr}, @code{cadr},
-and co.  There are several problems with that style, notably the fact that
-it is hard to read, error-prone, and a hindrance to proper type error
-reports.
-
-Guix code should define appropriate data types (for instance, using
address@hidden) rather than abuse lists.  In addition, it should
-use pattern matching, via Guile’s @code{(ice-9 match)} module, especially
-when matching lists.
-
address@hidden Formatting Code
address@hidden Formatting Code
-
address@hidden formatting code
address@hidden coding style
-When writing Scheme code, we follow common wisdom among Scheme programmers.
-In general, we follow the @url{http://mumble.net/~campbell/scheme/style.txt,
-Riastradh's Lisp Style Rules}.  This document happens to describe the
-conventions mostly used in Guile’s code too.  It is very thoughtful and well
-written, so please do read it.
-
-Some special forms introduced in Guix, such as the @code{substitute*} macro,
-have special indentation rules.  These are defined in the
address@hidden file, which Emacs automatically uses.  Also note that
-Emacs-Guix provides @code{guix-devel-mode} mode that indents and highlights
-Guix code properly (@pxref{Development,,, emacs-guix, The Emacs-Guix
-Reference Manual}).
-
address@hidden indentation, of code
address@hidden formatting, of code
-If you do not use Emacs, please make sure to let your editor knows these
-rules.  To automatically indent a package definition, you can also run:
-
address@hidden
-./etc/indent-code.el gnu/packages/@var{file}.scm @var{package}
address@hidden example
-
address@hidden
-This automatically indents the definition of @var{package} in
address@hidden/packages/@var{file}.scm} by running Emacs in batch mode.  To
-indent a whole file, omit the second argument:
-
address@hidden
-./etc/indent-code.el gnu/services/@var{file}.scm
address@hidden example
-
address@hidden Vim, Scheme code editing
-If you are editing code with Vim, we recommend that you run @code{:set
-autoindent} so that your code is automatically indented as you type.
-Additionally, @uref{https://www.vim.org/scripts/script.php?script_id=3998,
address@hidden may help you deal with all these parentheses.
-
-We require all top-level procedures to carry a docstring.  This requirement
-can be relaxed for simple private procedures in the @code{(guix build
address@hidden)} name space, though.
-
-Procedures should not have more than four positional parameters.  Use
-keyword parameters for procedures that take more than four parameters.
-
-
address@hidden 提交补丁
address@hidden 提交补丁
-
-Development is done using the Git distributed version control system.  Thus,
-access to the repository is not strictly necessary.  We welcome
-contributions in the form of patches as produced by @code{git format-patch}
-sent to the @email{guix-patches@@gnu.org} mailing list.
-
-This mailing list is backed by a Debbugs instance accessible at
address@hidden://bugs.gnu.org/guix-patches}, which allows us to keep track of
-submissions.  Each message sent to that mailing list gets a new tracking
-number assigned; people can then follow up on the submission by sending
-email to @address@hidden@@debbugs.gnu.org}, where @var{NNN} is the tracking
-number (@pxref{Sending a Patch Series}).
-
-Please write commit logs in the ChangeLog format (@pxref{Change Logs,,,
-standards, GNU Coding Standards}); you can check the commit history for
-examples.
-
-Before submitting a patch that adds or modifies a package definition, please
-run through this check list:
-
address@hidden
address@hidden
-If the authors of the packaged software provide a cryptographic signature
-for the release tarball, make an effort to verify the authenticity of the
-archive.  For a detached GPG signature file this would be done with the
address@hidden --verify} command.
-
address@hidden
-Take some time to provide an adequate synopsis and description for the
-package.  @xref{简介和描述}, for some guidelines.
-
address@hidden
-Run @code{guix lint @var{package}}, where @var{package} is the name of the
-new or modified package, and fix any errors it reports (@pxref{Invoking guix
-lint}).
-
address@hidden
-Make sure the package builds on your platform, using @code{guix build
address@hidden
-
address@hidden
-We recommend you also try building the package on other supported
-platforms.  As you may not have access to actual hardware platforms, we
-recommend using the @code{qemu-binfmt-service-type} to emulate them.  In
-order to enable it, add the following service to the list of services in
-your @code{operating-system} configuration:
-
address@hidden
-(service qemu-binfmt-service-type
- (qemu-binfmt-configuration
-   (platforms (lookup-qemu-platforms "arm" "aarch64" "mips64el"))
-   (guix-support? #t)))
address@hidden example
-
-Then reconfigure your system.
-
-You can then build packages for different platforms by specifying the
address@hidden option.  For example, to build the "hello" package for the
-armhf, aarch64, or mips64 architectures, you would run the following
-commands, respectively:
address@hidden
-guix build --system=armhf-linux --rounds=2 hello
-guix build --system=aarch64-linux --rounds=2 hello
-guix build --system=mips64el-linux --rounds=2 hello
address@hidden example
-
address@hidden
address@hidden bundling
-Make sure the package does not use bundled copies of software already
-available as separate packages.
-
-Sometimes, packages include copies of the source code of their dependencies
-as a convenience for users.  However, as a distribution, we want to make
-sure that such packages end up using the copy we already have in the
-distribution, if there is one.  This improves resource usage (the dependency
-is built and stored only once), and allows the distribution to make
-transverse changes such as applying security updates for a given software
-package in a single place and have them affect the whole system---something
-that bundled copies prevent.
-
address@hidden
-Take a look at the profile reported by @command{guix size} (@pxref{Invoking
-guix size}).  This will allow you to notice references to other packages
-unwillingly retained.  It may also help determine whether to split the
-package (@pxref{Packages with Multiple Outputs}), and which optional
-dependencies should be used.  In particular, avoid adding @code{texlive} as
-a dependency: because of its extreme size, use @code{texlive-tiny} or
address@hidden instead.
-
address@hidden
-For important changes, check that dependent package (if applicable) are not
-affected by the change; @code{guix refresh --list-dependent @var{package}}
-will help you do that (@pxref{Invoking guix refresh}).
-
address@hidden See 
<https://lists.gnu.org/archive/html/guix-devel/2016-10/msg00933.html>.
address@hidden branching strategy
address@hidden rebuild scheduling strategy
-Depending on the number of dependent packages and thus the amount of
-rebuilding induced, commits go to different branches, along these lines:
-
address@hidden @asis
address@hidden 300 dependent packages or less
address@hidden branch (non-disruptive changes).
-
address@hidden between 300 and 1,200 dependent packages
address@hidden branch (non-disruptive changes).  This branch is intended to
-be merged in @code{master} every 3 weeks or so.  Topical changes (e.g., an
-update of the GNOME stack) can instead go to a specific branch (say,
address@hidden).
-
address@hidden more than 1,200 dependent packages
address@hidden branch (may include major and potentially disruptive
-changes).  This branch is intended to be merged in @code{master} every 2.5
-months or so.
address@hidden table
-
-All these branches are @uref{https://hydra.gnu.org/project/gnu, tracked by
-our build farm} and merged into @code{master} once everything has been
-successfully built.  This allows us to fix issues before they hit users, and
-to reduce the window during which pre-built binaries are not available.
-
address@hidden TODO: It would be good with badges on the website that tracks 
these
address@hidden branches.  Or maybe even a status page.
-Generally, branches other than @code{master} are considered @emph{frozen} if
-there has been a recent evaluation, or there is a corresponding @code{-next}
-branch.  Please ask on the mailing list or IRC if unsure where to place a
-patch.
-
address@hidden
address@hidden determinism, of build processes
address@hidden reproducible builds, checking
-Check whether the package's build process is deterministic.  This typically
-means checking whether an independent build of the package yields the exact
-same result that you obtained, bit for bit.
-
-A simple way to do that is by building the same package several times in a
-row on your machine (@pxref{Invoking guix build}):
-
address@hidden
-guix build --rounds=2 my-package
address@hidden example
-
-This is enough to catch a class of common non-determinism issues, such as
-timestamps or randomly-generated output in the build result.
-
-Another option is to use @command{guix challenge} (@pxref{Invoking guix
-challenge}).  You may run it once the package has been committed and built
-by @address@hidden to check whether it obtains the same
-result as you did.  Better yet: Find another machine that can build it and
-run @command{guix publish}.  Since the remote build machine is likely
-different from yours, this can catch non-determinism issues related to the
-hardware---e.g., use of different instruction set extensions---or to the
-operating system kernel---e.g., reliance on @code{uname} or @file{/proc}
-files.
-
address@hidden
-When writing documentation, please use gender-neutral wording when referring
-to people, such as @uref{https://en.wikipedia.org/wiki/Singular_they,
-singular ``they''@comma{} ``their''@comma{} ``them''}, and so forth.
-
address@hidden
-Verify that your patch contains only one set of related changes.  Bundling
-unrelated changes together makes reviewing harder and slower.
-
-Examples of unrelated changes include the addition of several packages, or a
-package update along with fixes to that package.
-
address@hidden
-Please follow our code formatting rules, possibly running the
address@hidden/indent-code.el} script to do that automatically for you
-(@pxref{Formatting Code}).
-
address@hidden
-When possible, use mirrors in the source URL (@pxref{Invoking guix
-download}).  Use reliable URLs, not generated ones.  For instance, GitHub
-archives are not necessarily identical from one generation to the next, so
-in this case it's often better to clone the repository.  Don't use the
address@hidden field in the URL: it is not very useful and if the name
-changes, the URL will probably be wrong.
-
address@hidden enumerate
-
-When posting a patch to the mailing list, use @samp{[PATCH] @dots{}} as a
-subject.  You may use your email client or the @command{git send-email}
-command (@pxref{Sending a Patch Series}).  We prefer to get patches in plain
-text messages, either inline or as MIME attachments.  You are advised to pay
-attention if your email client changes anything like line breaks or
-indentation which could potentially break the patches.
-
-When a bug is resolved, please close the thread by sending an email to
address@hidden@var{NNN}-done@@debbugs.gnu.org}.
-
address@hidden Sending a Patch Series
address@hidden a Patch Series}
address@hidden patch series
address@hidden @code{git send-email}
address@hidden @code{git-send-email}
-
address@hidden Debbugs bug: https://debbugs.gnu.org/db/15/15361.html
-When sending a patch series (e.g., using @code{git send-email}), please
-first send one message to @email{guix-patches@@gnu.org}, and then send
-subsequent patches to @address@hidden@@debbugs.gnu.org} to make sure they
-are kept together.  See @uref{https://debbugs.gnu.org/Advanced.html, the
-Debbugs documentation} for more information.
diff --git a/doc/guix.de.texi b/doc/guix.de.texi
deleted file mode 100644
index 419d403..0000000
--- a/doc/guix.de.texi
+++ /dev/null
@@ -1,26536 +0,0 @@
-\input texinfo
address@hidden 
===========================================================================
address@hidden
address@hidden This file was generated with po4a. Translate the source file.
address@hidden
address@hidden 
===========================================================================
address@hidden -*-texinfo-*-
-
address@hidden %**start of header
address@hidden guix.de.info
address@hidden UTF-8
address@hidden de
address@hidden on
address@hidden Referenzhandbuch zu GNU Guix
address@hidden %**end of header
-
address@hidden version-de.texi
-
address@hidden Identifier of the OpenPGP key used to sign tarballs and such.
address@hidden OPENPGP-SIGNING-KEY-ID 3CE464558A84FDC69DB40CFB090B11993D9AEBB5
address@hidden KEY-SERVER pool.sks-keyservers.net
-
address@hidden The official substitute server used by default.
address@hidden SUBSTITUTE-SERVER ci.guix.de.info
-
address@hidden
-Copyright @copyright{} 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019
-Ludovic address@hidden Copyright @copyright{} 2013, 2014, 2016 Andreas 
address@hidden
-Copyright @copyright{} 2013 Nikita address@hidden Copyright @copyright{} 2014,
-2015, 2016 Alex address@hidden Copyright @copyright{} 2015, 2016 Mathieu 
address@hidden
-Copyright @copyright{} 2014 Pierre-Antoine address@hidden Copyright 
@copyright{}
-2015 Taylan Ulrich Bayırlı/address@hidden Copyright @copyright{} 2015, 2016, 
2017
-Leo address@hidden Copyright @copyright{} 2015, 2016, 2017, 2018, 2019 Ricardo
address@hidden Copyright @copyright{} 2016 Ben address@hidden Copyright 
@copyright{}
-2016, 2017, 2018 Chris address@hidden Copyright @copyright{} 2016, 2017, 2018,
-2019 Efraim address@hidden Copyright @copyright{} 2016 John address@hidden
-Copyright @copyright{} 2016, 2017 address@hidden Copyright @copyright{} 2016, 
2017,
-2018, 2019 Jan address@hidden Copyright @copyright{} 2016 Julien address@hidden
-Copyright @copyright{} 2016 Alex ter address@hidden Copyright @copyright{} 
2016,
-2017, 2018, 2019 Christopher address@hidden Copyright @copyright{} 2017, 2018
-Clément address@hidden Copyright @copyright{} 2017, 2018 Mathieu address@hidden
-Copyright @copyright{} 2017 Federico address@hidden Copyright @copyright{} 
2017,
-2018 Carlo address@hidden Copyright @copyright{} 2017 Thomas address@hidden
-Copyright @copyright{} 2017 address@hidden Copyright @copyright{} 2017
-Christopher Allan address@hidden Copyright @copyright{} 2017, 2018 Marius 
address@hidden
-Copyright @copyright{} 2017 Hartmut address@hidden Copyright @copyright{} 2017
-Maxim address@hidden Copyright @copyright{} 2017, 2018 Tobias address@hidden
-Copyright @copyright{} 2017 George address@hidden Copyright @copyright{} 2017
-Andy address@hidden Copyright @copyright{} 2017, 2018, 2019 Arun 
address@hidden Copyright
address@hidden 2017 address@hidden Copyright @copyright{} 2018 Rutger 
address@hidden
-Copyright @copyright{} 2018 Oleg address@hidden Copyright @copyright{} 2018 
Mike
address@hidden Copyright @copyright{} 2018 Pierre-Antoine address@hidden 
Copyright
address@hidden 2018 Gábor address@hidden Copyright @copyright{} 2018 Florian
address@hidden Copyright @copyright{} 2018 Laura address@hidden Copyright 
@copyright{}
-2018 Alex address@hidden
-
-Es ist Ihnen gestattet, dieses Dokument zu vervielfältigen, weiterzugeben
-und/oder zu verändern, unter den Bedingungen der GNU Free Documentation
-License, entweder gemäß Version 1.3 der Lizenz oder (nach Ihrer Option)
-einer späteren Version, die von der Free Software Foundation veröffentlicht
-wurde, ohne unveränderliche Abschnitte, ohne vorderen Umschlagtext und ohne
-hinteren Umschlagtext. Eine Kopie der Lizenz finden Sie im Abschnitt mit dem
-Titel »GNU Free Documentation License«.
address@hidden copying
-
address@hidden Systemadministration
address@hidden
-* Guix: (guix.de).           Installierte Software und Systemkonfigurationen 
-                               verwalten.
-* guix package: (guix.de)guix package aufrufen.  Pakete installieren, 
-                                                   entfernen und 
-                                                   aktualisieren.
-* guix gc: (guix.de)guix gc aufrufen.  Unbenutzten Plattenspeicher wieder 
-                                         freigeben.
-* guix pull: (guix.de)guix pull aufrufen.  Die Liste verfügbarer Pakete 
-                                             aktualisieren.
-* guix system: (guix.de)guix system aufrufen.  Die 
-                                                 Betriebssystemkonfiguration 
-                                                 verwalten.
address@hidden direntry
-
address@hidden Softwareentwicklung
address@hidden
-* guix environment: (guix.de)guix environment aufrufen.  Umgebungen für 
-                                                           Entwickler 
-                                                           erstellen
-* guix build: (guix.de)guix build aufrufen.  Erstellen von Paketen.
-* guix pack: (guix.de)guix pack aufrufen.  Bündel aus Binärdateien 
-                                             erstellen.
address@hidden direntry
-
address@hidden
address@hidden Referenzhandbuch zu GNU Guix
address@hidden Den funktionalen Paketmanager GNU Guix benutzen
address@hidden Die GNU-Guix-Entwickler
-
address@hidden
address@hidden 0pt plus 1filll
-Edition @value{EDITION} @* @value{UPDATED} @*
-
address@hidden
address@hidden titlepage
-
address@hidden
-
address@hidden 
*********************************************************************
address@hidden Top
address@hidden GNU Guix
-
-Dieses Dokument beschreibt GNU Guix, Version @value{VERSION}, ein Werkzeug
-zur funktionalen Verwaltung von Softwarepaketen, das für das GNU-System
-geschrieben wurde.
-
address@hidden TRANSLATORS: You can replace the following paragraph with 
information on
address@hidden how to join your own translation team and how to report issues 
with the
address@hidden translation.
-Dieses Handbuch ist auch auf Englisch (siehe @ref{Top,,, guix, GNU Guix
-Reference Manual}) und Französisch verfügbar (siehe @ref{Top,,, guix.fr,
-Manuel de référence de GNU Guix}). Wenn Sie es in Ihre eigene Sprache
-übersetzen möchten, dann sind Sie beim
address@hidden://translationproject.org/domain/guix-manual.html, Translation
-Project} herzlich willkommen.
-
address@hidden
-* Einführung::              Was ist Guix überhaupt?
-* Installation::             Guix installieren.
-* Systeminstallation::       Das ganze Betriebssystem installieren.
-* Paketverwaltung::          Pakete installieren, aktualisieren usw.
-* Entwicklung::              Von Guix unterstützte Softwareentwicklung.
-* Programmierschnittstelle::  Guix in Scheme verwenden.
-* Zubehör::                 Befehle zur Paketverwaltung.
-* Systemkonfiguration::      Das Betriebssystem konfigurieren.
-* Dokumentation::            Wie man Nutzerhandbücher von Software liest.
-* Dateien zur Fehlersuche installieren::  Womit man seinen Debugger 
-                                            füttert.
-* Sicherheitsaktualisierungen::  Sicherheits-Patches schnell einspielen.
-* Bootstrapping::            GNU/Linux von Grund auf selbst erstellen.
-* Portierung::               Guix auf andere Plattformen und Kernels 
-                               bringen.
-* Mitwirken::                Ihre Hilfe ist nötig!
-
-* Danksagungen::             Danke!
-* GNU-Lizenz für freie Dokumentation::  Die Lizenz dieses Handbuchs.
-* Konzeptverzeichnis::       Konzepte.
-* Programmierverzeichnis::   Datentypen, Funktionen und Variable.
-
address@hidden
- --- Detaillierte Liste der Knoten ---
-
-
-
-Einführung
-
-
-
-* Auf Guix-Art Software verwalten::  Was Guix besonders macht.
-* GNU-Distribution::         Die Pakete und Werkzeuge.
-
-Installation
-
-
-
-* Aus Binärdatei installieren::  Guix installieren, ohne Zeit zu verlieren!
-* Voraussetzungen::          Zum Erstellen und Benutzen von Guix nötige 
-                               Software.
-* Den Testkatalog laufen lassen::  Guix testen.
-* Den Daemon einrichten::    Wie man die Umgebung des Erstellungs-Daemons 
-                               einrichtet.
-* Aufruf des guix-daemon::   Den Erstellungs-Daemon laufen lassen.
-* Anwendungen einrichten::   Anwendungsspezifische Einstellungen.
-
-Den Daemon einrichten
-
-
-
-* Einrichten der Erstellungsumgebung::  Die isolierte Umgebung zum Erstellen 
-                                          vorbereiten.
-* Auslagern des Daemons einrichten::  Erstellungen auf entfernte Maschinen 
-                                        auslagern.
-* SELinux-Unterstützung::   Wie man eine SELinux-Richtlinie für den Daemon 
-                               einrichtet.
-
-Systeminstallation
-
-
-
-* Einschränkungen::         Was Sie erwarten dürfen.
-* Hardware-Überlegungen::   Unterstützte Hardware.
-* Installation von USB-Stick oder DVD::  Das Installationsmedium 
-                                           vorbereiten.
-* Vor der Installation::     Netzwerkanbindung, Partitionierung etc.
-* Geführte grafische Installation::  Leichte grafische Installation.
-* Manuelle Installation::    Manuelle Installation für Zauberer.
-* Nach der Systeminstallation::  Wenn die Installation erfolgreich war.
-* Guix in einer VM installieren::  Ein »Guix System«-Spielplatz.
-* Ein Abbild zur Installation erstellen::  Wie ein solches entsteht.
-
-Manuelle Installation
-
-
-
-* Tastaturbelegung und Netzwerkanbindung und Partitionierung::  Erstes 
-                                                                  Einrichten.
-* Fortfahren mit der Installation::  Installieren.
-
-Paketverwaltung
-
-
-
-* Funktionalitäten::        Wie Guix Ihr Leben schöner machen wird.
-* Aufruf von guix package::  Pakete installieren, entfernen usw.
-* Substitute::               Vorerstelle Binärdateien herunterladen.
-* Pakete mit mehreren Ausgaben.::  Ein Quellpaket, mehrere Ausgaben.
-* Aufruf von guix gc::       Den Müllsammler laufen lassen.
-* Aufruf von guix pull::     Das neueste Guix samt Distribution laden.
-* Kanäle::                  Die Paketsammlung anpassen.
-* Untergeordnete::           Mit einer anderen Version von Guix 
-                               interagieren.
-* Aufruf von guix describe::  Informationen über Ihre Guix-Version 
-                                anzeigen.
-* Aufruf von guix archive::  Import und Export von Store-Dateien.
-
-Substitute
-
-
-
-* Offizieller Substitut-Server::  Eine besondere Quelle von Substituten.
-* Substitut-Server autorisieren::  Wie man Substitute an- und abschaltet.
-* Substitutauthentifizierung::  Wie Guix Substitute verifiziert.
-* Proxy-Einstellungen::      Wie Sie Substitute über einen Proxy beziehen.
-* Fehler bei der Substitution::  Was passiert, wenn die Substitution 
-                                   fehlschlägt.
-* Vom Vertrauen gegenüber Binärdateien::  Wie können Sie diesem binären 
-                                              Blob trauen?
-
-Entwicklung
-
-
-
-* Aufruf von guix environment::  Entwicklungsumgebungen einrichten.
-* Aufruf von guix pack::     Software-Bündel erstellen.
-
-Programmierschnittstelle
-
-
-
-* Paketmodule::              Pakete aus Sicht des Programmierers.
-* Pakete definieren::        Wie Sie neue Pakete definieren.
-* Erstellungssysteme::       Angeben, wie Pakete erstellt werden.
-* Der Store::                Den Paket-Store verändern.
-* Ableitungen::              Systemnahe Schnittstelle für Paketableitungen.
-* Die Store-Monade::         Rein funktionale Schnittstelle zum Store.
-* G-Ausdrücke::             Erstellungsausdrücke verarbeiten.
-* Aufruf von guix repl::     Interaktiv an Guix herumbasteln.
-
-Pakete definieren
-
-
-
-* »package«-Referenz::     Der Datentyp für Pakete.
-* »origin«-Referenz::      Datentyp für Paketursprünge.
-
-Zubehör
-
-
-
-* Aufruf von guix build::    Pakete aus der Befehlszeile heraus erstellen.
-* Aufruf von guix edit::     Paketdefinitionen bearbeiten.
-* Aufruf von guix download::  Herunterladen einer Datei und Ausgabe ihres 
-                                Hashes.
-* Aufruf von guix hash::     Den kryptografischen Hash einer Datei 
-                               berechnen.
-* Aufruf von guix import::   Paketdefinitionen importieren.
-* Aufruf von guix refresh::  Paketdefinitionen aktualisieren.
-* Aufruf von guix lint::     Fehler in Paketdefinitionen finden.
-* Aufruf von guix size::     Plattenplatzverbrauch profilieren.
-* Aufruf von guix graph::    Den Paketgraphen visualisieren.
-* Aufruf von guix publish::  Substitute teilen.
-* Aufruf von guix challenge::  Die Substitut-Server anfechten.
-* Aufruf von guix copy::     Mit einem entfernten Store Dateien austauschen.
-* Aufruf von guix container::  Prozesse isolieren.
-* Aufruf von guix weather::  Die Verfügbarkeit von Substituten 
-                               einschätzen.
-* Aufruf von guix processes::  Auflisten der Client-Prozesse
-
-Aufruf von @command{guix build}
-
-
-
-* Gemeinsame Erstellungsoptionen::  Erstellungsoptionen für die meisten 
-                                      Befehle.
-* Paketumwandlungsoptionen::  Varianten von Paketen erzeugen.
-* Zusätzliche Erstellungsoptionen::  Optionen spezifisch für »guix 
-                                        build«.
-* Fehlschläge beim Erstellen untersuchen::  Praxiserfahrung bei der 
-                                               Paketerstellung.
-
-Systemkonfiguration
-
-
-
-* Das Konfigurationssystem nutzen::  Ihr GNU-System anpassen.
-* »operating-system«-Referenz::  Details der Betriebssystem-Deklarationen.
-* Dateisysteme::             Die Dateisystemeinbindungen konfigurieren.
-* Zugeordnete Geräte::      Näheres zu blockorientierten Speichermedien.
-* Benutzerkonten::           Benutzerkonten festlegen.
-* Tastaturbelegung::         Wie das System Tastendrücke interpretiert.
-* Locales::                  Sprache und kulturelle Konventionen.
-* Dienste::                  Systemdienste festlegen.
-* Setuid-Programme::         Mit Administratorrechten startende Programme.
-* X.509-Zertifikate::        HTTPS-Server authentifizieren.
-* Name Service Switch::      Den Name Service Switch von libc konfigurieren.
-* Initiale RAM-Disk::        Linux-libre hochfahren.
-* Bootloader-Konfiguration::  Den Bootloader konfigurieren.
-* Aufruf von guix system::   Instanziierung einer Systemkonfiguration.
-* Guix in einer VM starten::  Wie man »Guix System« in einer virtuellen 
-                                Maschine startet.
-* Dienste definieren::       Neue Dienstdefinitionen hinzufügen.
-
-Dienste
-
-
-
-* Basisdienste::             Essenzielle Systemdienste.
-* Geplante Auftragsausführung::  Der mcron-Dienst.
-* Log-Rotation::             Der rottlog-Dienst.
-* Netzwerkdienste::          Netzwerkeinrichtung, SSH-Daemon etc.
-* X Window::                 Grafische Anzeige.
-* Druckdienste::             Unterstützung für lokale und entfernte 
-                               Drucker.
-* Desktop-Dienste::          D-Bus- und Desktop-Dienste.
-* Tondienste::               Dienste für ALSA und Pulseaudio.
-* Datenbankdienste::         SQL-Datenbanken, Schlüssel-Wert-Speicher etc.
-* Mail-Dienste::             IMAP, POP3, SMTP und so weiter.
-* Kurznachrichtendienste::   Dienste für Kurznachrichten.
-* Telefondienste::           Telefoniedienste.
-* Überwachungsdienste::     Dienste zur Systemüberwachung.
-* Kerberos-Dienste::         Kerberos-Dienste.
-* Web-Dienste::              Web-Server.
-* Zertifikatsdienste::       TLS-Zertifikate via Let’s Encrypt.
-* DNS-Dienste::              DNS-Daemons.
-* VPN-Dienste::              VPN-Daemons.
-* Network File System::      Dienste mit Bezug zum Netzwerkdateisystem.
-* Kontinuierliche Integration::  Der Cuirass-Dienst.
-* Dienste zur Stromverbrauchsverwaltung::  Den Akku schonen.
-* Audio-Dienste::            Der MPD.
-* Virtualisierungsdienste::  Dienste für virtuelle Maschinen.
-* Versionskontrolldienste::  Entfernten Zugang zu Git-Repositorys bieten.
-* Spieldienste::             Spielserver.
-* Verschiedene Dienste::     Andere Dienste.
-
-Dienste definieren
-
-
-
-* Dienstkompositionen::      Wie Dienste zusammengestellt werden.
-* Diensttypen und Dienste::  Typen und Dienste.
-* Service-Referenz::         Referenz zur Programmierschnittstelle.
-* Shepherd-Dienste::         Eine spezielle Art von Dienst.
-
address@hidden detailmenu
address@hidden menu
-
address@hidden 
*********************************************************************
address@hidden Einführung
address@hidden Einführung
-
address@hidden Zweck
-GNU address@hidden wird wie »geeks« ausgesprochen, also als »ɡiːks« in
-der Notation des Internationalen Phonetischen Alphabets (IPA).} ist ein
-Werkzeug zur Verwaltung von Softwarepaketen für das GNU-System und eine
-Distribution desselbigen GNU-Systems. Guix macht es @emph{nicht} mit
-besonderen Berechtigungen ausgestatteten, »unprivilegierten« Nutzern leicht,
-Softwarepakete zu installieren, zu aktualisieren oder zu entfernen, zu einem
-vorherigen Satz von Paketen zurückzuwechseln, Pakete aus ihrem Quellcode
-heraus zu erstellen und hilft allgemein bei der Erzeugung und Wartung von
-Software-Umgebungen.
-
address@hidden Guix System
address@hidden GuixSD, was jetzt Guix System heißt
address@hidden Guix System Distribution, welche jetzt Guix System heißt
-Sie können address@hidden auf ein bestehendes GNU/Linux-System aufsetzen, wo
-es die bereits verfügbaren Werkzeuge ergänzt, ohne zu stören (siehe
address@hidden), oder Sie können es als eine eigenständige
-Betriebssystem-Distribution namens @address@hidden
address@hidden Name @address@hidden wird auf englische Weise
-ausgesprochen. Früher hatten wir »Guix System« als »Guix System
-Distribution« bezeichnet und mit »GuixSD« abgekürzt. Wir denken mittlerweile
-aber, dass es sinnvoller ist, alles unter der Fahne von Guix zu gruppieren,
-weil schließlich »Guix System« auch über den Befehl @command{guix system}
-verfügbar ist, selbst wenn Sie Guix auf einer fremden Distribution
-benutzen!}. Siehe @ref{GNU-Distribution}.
-
address@hidden
-* Auf Guix-Art Software verwalten::  Was Guix besonders macht.
-* GNU-Distribution::         Die Pakete und Werkzeuge.
address@hidden menu
-
address@hidden Auf Guix-Art Software verwalten
address@hidden Auf Guix-Art Software verwalten
-
address@hidden Benutzeroberflächen
-Guix bietet eine befehlszeilenbasierte Paketverwaltungsschnittstelle (siehe
address@hidden von guix package}), Werkzeuge als Hilfestellung bei der
-Software-Entwicklung (siehe @ref{Entwicklung}), Befehlszeilenwerkzeuge für
-fortgeschrittenere Nutzung (siehe @ref{Zubehör}) sowie Schnittstellen zur
-Programmierung in Scheme (siehe @ref{Programmierschnittstelle}).
address@hidden Erstellungs-Daemon
-Der @dfn{Erstellungs-Daemon} ist für das Erstellen von Paketen im Auftrag
-von Nutzern verantwortlich (siehe @ref{Den Daemon einrichten}) und für das
-Herunterladen vorerstellter Binärdateien aus autorisierten Quellen (siehe
address@hidden).
-
address@hidden Erweiterbarkeit der Distribution
address@hidden Anpassung, von Paketen
-Guix enthält Paketdefinitionen für viele Pakete, von GNU und nicht von GNU,
-die alle @uref{https://www.gnu.org/philosophy/free-sw.html, die Freiheit des
-Computernutzers respektieren}. Es ist @emph{erweiterbar}: Nutzer können ihre
-eigenen Paketdefinitionen schreiben (siehe @ref{Pakete definieren}) und sie
-als unabhängige Paketmodule verfügbar machen (siehe @ref{Paketmodule}). Es ist 
auch @emph{anpassbar}: Nutzer können spezialisierte
-Paketdefinitionen aus bestehenden @emph{ableiten}, auch von der Befehlszeile
-(siehe @ref{Paketumwandlungsoptionen}).
-
address@hidden funktionale Paketverwaltung
address@hidden Isolierung
-Intern implementiert Guix die Disziplin der @dfn{funktionalen
-Paketverwaltung}, zu der Nix schon die Pionierarbeit geleistet hat (siehe
address@hidden). In Guix wird der Prozess, ein Paket zu erstellen und
-zu installieren, als eine @emph{Funktion} im mathematischen Sinn
-aufgefasst. Diese Funktion hat Eingaben, wie zum Beispiel
-Erstellungs-Skripts, einen Compiler und Bibliotheken, und liefert ein
-installiertes Paket. Als eine reine Funktion hängt sein Ergebnis allein von
-seinen Eingaben ab — zum Beispiel kann er nicht auf Software oder Skripts
-Bezug nehmen, die nicht ausdrücklich als Eingaben übergeben wurden. Eine
-Erstellungsfunktion führt immer zum selben Ergebnis, wenn ihr die gleiche
-Menge an Eingaben übergeben wurde. Sie kann die Umgebung des laufenden
-Systems auf keine Weise beeinflussen, zum Beispiel kann sie keine Dateien
-außerhalb ihrer Erstellungs- und Installationsverzeichnisse verändern. Um
-dies zu erreichen, laufen Erstellungsprozesse in isolieren Umgebungen
-(sogenannte @dfn{Container}), wo nur ausdrückliche Eingaben sichtbar sind.
-
address@hidden Store
-Das Ergebnis von Paketerstellungsfunktionen wird im Dateisystem
address@hidden in einem besonderen Verzeichnis, was als @dfn{der
-Store} bezeichnet wird (siehe @ref{Der Store}). Jedes Paket wird in sein
-eigenes Verzeichnis im Store installiert — standardmäßig ist er unter
address@hidden/gnu/store} zu finden. Der Verzeichnisname enthält einen Hash 
aller
-Eingaben, anhand derer das Paket erzeugt wurde, somit hat das Ändern einer
-Eingabe einen völlig anderen Verzeichnisnamen zur Folge.
-
-Dieses Vorgehen ist die Grundlage für die Guix auszeichnenden
-Funktionalitäten: Unterstützung transaktionsbasierter Paketaktualisierungen
-und -rücksetzungen, Installation von Paketen als einfacher Nutzer sowie
-Garbage Collection für Pakete (siehe @ref{Funktionalitäten}).
-
-
address@hidden GNU-Distribution
address@hidden GNU-Distribution
-
address@hidden Guix System
-Mit Guix kommt eine Distribution des GNU-Systems, die nur aus freier
address@hidden Bezeichnung »frei« steht hier für die
address@hidden://www.gnu.org/philosophy/free-sw.html,Freiheiten, die Nutzern der
-Software geboten werden}.} besteht. Die Distribution kann für sich allein
-installiert werden (siehe @ref{Systeminstallation}), aber Guix kann auch
-auf einem bestehenden GNU/Linux-System installiert werden. Wenn wir die
-Anwendungsfälle unterscheiden möchten, bezeichnen wir die alleinstehende
-Distribution als address@hidden (mit englischer Aussprache).
-
-Die Distribution stellt den Kern der GNU-Pakete, also insbesondere GNU libc,
-GCC und Binutils, sowie zahlreiche zum GNU-Projekt gehörende und nicht dazu
-gehörende Anwendungen zur Verfügung. Die vollständige Liste verfügbarer
-Pakete können Sie @url{http://www.gnu.org/software/guix/packages,online}
-einsehen, oder indem Sie @command{guix package} ausführen (siehe
address@hidden von guix package}):
-
address@hidden
-guix package --list-available
address@hidden example
-
-Unser Ziel ist, eine zu 100% freie Software-Distribution von Linux-basierten
-und von anderen GNU-Varianten anzubieten, mit dem Fokus darauf, das
-GNU-Projekt und die enge Zusammenarbeit seiner Bestandteile zu befördern,
-sowie die Programme und Werkzeuge hervorzuheben, die die Nutzer dabei
-unterstützen, von dieser Freiheit Gebrauch zu machen.
-
-Pakete sind zur Zeit auf folgenden Plattformen verfügbar:
-
address@hidden @code
-
address@hidden x86_64-linux
-Intel/address@hidden, Linux-Libre als Kernel,
-
address@hidden i686-linux
-Intel-32-Bit-Architektur (IA-32), Linux-Libre als Kernel,
-
address@hidden armhf-linux
-ARMv7-A-Architektur mit »hard float«, Thumb-2 und NEON, für die EABI
-»hard-float application binary interface«, mit Linux-Libre als Kernel.
-
address@hidden aarch64-linux
-64-Bit-ARMv8-A-Prozessoren, little-endian, Linux-Libre als Kernel. Derzeit
-ist dies noch in der Erprobungsphase mit begrenzter Unterstützung. Unter
address@hidden steht, wie Sie dabei helfen können!
-
address@hidden mips64el-linux
-64-Bit-MIPS-Prozessoren, little-endian, insbesondere die Loongson-Reihe,
-n32-ABI, mit Linux-Libre als Kernel.
-
address@hidden table
-
-Mit address@hidden @emph{deklarieren} Sie alle Aspekte der
-Betriebssystemkonfiguration und Guix kümmert sich darum, die Konfiguration
-auf transaktionsbasierte, reproduzierbare und zustandslose Weise zu
-instanziieren (siehe @ref{Systemkonfiguration}). Guix System benutzt den
-Kernel Linux-libre, das Shepherd-Initialisierungssystem (siehe
address@hidden,,, shepherd, The GNU Shepherd Manual}), die wohlbekannten
-GNU-Werkzeuge mit der zugehörigen Werkzeugkette sowie die grafische Umgebung
-und Systemdienste Ihrer Wahl.
-
-Guix System ist auf allen oben genannten Plattformen außer
address@hidden verfügbar.
-
address@hidden
-Informationen, wie auf andere Architekturen oder Kernels portiert werden
-kann, finden Sie im Abschnitt @ref{Portierung}.
-
-Diese Distribution aufzubauen basiert auf Kooperation, und Sie sind herzlich
-eingeladen, dabei mitzumachen! Im Abschnitt @ref{Mitwirken} stehen
-weitere Informationen, wie Sie uns helfen können.
-
-
address@hidden 
*********************************************************************
address@hidden Installation
address@hidden Installation
-
address@hidden Guix installieren
-
address@hidden Anmerkung
-Wir empfehlen, dieses
address@hidden://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh,
-Shell-basierte Installationsskript} zu benutzen, um Guix auf ein bestehendes
-GNU/Linux-System zu installieren — im Folgenden als @dfn{Fremddistribution}
address@hidden Abschnitt bezieht sich auf die Installation des
-Paketverwaltungswerkzeugs, das auf ein bestehendes GNU/Linux-System
-aufsetzend installiert werden kann. Wenn Sie stattdessen das vollständige
-GNU-Betriebssystem installieren möchten, lesen Sie @ref{Systeminstallation}.} 
Das Skript automatisiert das Herunterladen, das Installieren
-und die anfängliche Konfiguration von Guix. Es sollte als der
-Administratornutzer »root« ausgeführt werden.
address@hidden quotation
-
address@hidden Fremddistribution
address@hidden Verzeichnisse auf einer Fremddistribution
-Wenn es auf einer Fremddistribution installiert wird, ergänzt address@hidden
-die verfügbaren Werkzeuge, ohne dass sie sich gegenseitig stören. Guix’
-Daten befinden sich ausschließlich in zwei Verzeichnissen, üblicherweise
address@hidden/gnu/store} und @file{/var/guix}; andere Dateien auf Ihrem System 
wie
address@hidden/etc} bleiben unberührt.
-
-Sobald es installiert ist, kann Guix durch Ausführen von @command{guix pull}
-aktualisiert werden (siehe @ref{Aufruf von guix pull}).
-
-Sollten Sie es vorziehen, die Installationsschritte manuell durchzuführen,
-oder falls Sie Anpassungen daran vornehmen möchten, könnten sich die
-folgenden Unterabschnitte als nützlich erweisen. Diese beschreiben die
-Software-Voraussetzungen von Guix und wie man es manuell installiert, so
-dass man es benutzen kann.
-
address@hidden
-* Aus Binärdatei installieren::  Guix installieren, ohne Zeit zu verlieren!
-* Voraussetzungen::          Zum Erstellen und Benutzen von Guix nötige 
-                               Software.
-* Den Testkatalog laufen lassen::  Guix testen.
-* Den Daemon einrichten::    Wie man die Umgebung des Erstellungs-Daemons 
-                               einrichtet.
-* Aufruf des guix-daemon::   Den Erstellungs-Daemon laufen lassen.
-* Anwendungen einrichten::   Anwendungsspezifische Einstellungen.
address@hidden menu
-
address@hidden Aus Binärdatei installieren
address@hidden Aus Binärdatei installieren
-
address@hidden Guix aus Binärdateien installieren
address@hidden Installations-Skript
-Dieser Abschnitt beschreibt, wie sich Guix auf einem beliebigen System aus
-einem alle Komponenten umfassenden Tarball installieren lässt, der
-Binärdateien für Guix und all seine Abhängigkeiten liefert. Dies geht in der
-Regel schneller, als Guix aus seinen Quelldateien zu installieren, was in
-den nächsten Abschnitten beschrieben wird. Vorausgesetzt wird hier
-lediglich, dass address@hidden und Xz verfügbar sind.
-
-Die Installation läuft so ab:
-
address@hidden
address@hidden
address@hidden Guix-Binärdatei herunterladen
-Laden Sie den binären Tarball von
address@hidden://alpha.gnu.org/gnu/guix/address@hidden@var{System}.tar.xz}
-herunter, wobei @var{System} für @code{x86_64-linux} steht, falls Sie es auf
-einer Maschine mit @code{x86_64}-Architektur einrichten, auf der bereits der
-Linux-Kernel läuft, oder entsprechend für andere Maschinen.
-
address@hidden The following is somewhat duplicated in ``System Installation''.
-Achten Sie darauf, auch die zugehörige @file{.sig}-Datei herunterzuladen und
-verifizieren Sie damit die Authentizität des Tarballs, ungefähr so:
-
address@hidden
-$ wget https://alpha.gnu.org/gnu/guix/address@hidden@var{System}.tar.xz.sig
-$ gpg --verify address@hidden@var{System}.tar.xz.sig
address@hidden example
-
-Falls dieser Befehl fehlschlägt, weil Sie nicht über den nötigen
-öffentlichen Schlüssel verfügen, können Sie ihn mit diesem Befehl
-importieren:
-
address@hidden
-$ gpg --keyserver @value{KEY-SERVER} \
-      --recv-keys @value{OPENPGP-SIGNING-KEY-ID}
address@hidden example
-
address@hidden
address@hidden end authentication part
-und den Befehl @code{gpg --verify} erneut ausführen.
-
address@hidden
-Nun müssen Sie zum Administratornutzer @code{root} wechseln. Abhängig von
-Ihrer Distribution müssen Sie dazu etwa @code{su -} oder @code{sudo -i}
-ausführen. Danach führen Sie als @code{root}-Nutzer aus:
-
address@hidden
-# cd /tmp
-# tar --warning=no-timestamp -xf \
-     address@hidden@var{System}.tar.xz
-# mv var/guix /var/ && mv gnu /
address@hidden example
-
-Dadurch wird @file{/gnu/store} (siehe @ref{Der Store}) und @file{/var/guix}
-erzeugt. Letzteres enthält ein fertiges Guix-Profil für den
-Administratornutzer @code{root} (wie im nächsten Schritt beschrieben).
-
-Entpacken Sie den Tarball @emph{nicht} auf einem schon funktionierenden
-Guix-System, denn es würde seine eigenen essenziellen Dateien überschreiben.
-
-Die Befehlszeilenoption @code{--warning=no-timestamp} stellt sicher, dass
address@hidden nicht vor »unplausibel alten Zeitstempeln« warnt (solche
-Warnungen traten bei address@hidden 1.26 und älter auf, neue Versionen machen
-keine Probleme). Sie treten auf, weil alle Dateien im Archiv als
-Änderungszeitpunkt null eingetragen bekommen haben (das bezeichnet den
-1. Januar 1970). Das ist Absicht, damit der Inhalt des Archivs nicht davon
-abhängt, wann es erstellt wurde, und es somit reproduzierbar wird.
-
address@hidden
-Machen Sie das Profil als @file{~root/.config/guix/current} verfügbar, wo
address@hidden pull} es aktualisieren kann (siehe @ref{Aufruf von guix pull}):
-
address@hidden
-# mkdir -p ~root/.config/guix
-# ln -sf /var/guix/profiles/per-user/root/current-guix \
-         ~root/.config/guix/current
address@hidden example
-
-»Sourcen« Sie @file{etc/profile}, um @code{PATH} und andere relevante
-Umgebungsvariable zu ergänzen:
-
address@hidden
-# GUIX_PROFILE="`echo ~root`/.config/guix/current" ; \
-  source $GUIX_PROFILE/etc/profile
address@hidden example
-
address@hidden
-Erzeugen Sie Nutzergruppe und Nutzerkonten für die Erstellungs-Benutzer wie
-folgt (siehe @ref{Einrichten der Erstellungsumgebung}).
-
address@hidden
-Führen Sie den Daemon aus, und lassen Sie ihn automatisch bei jedem
-Hochfahren starten.
-
-Wenn Ihre Wirts-Distribution systemd als »init«-System verwendet, können Sie
-das mit folgenden Befehlen veranlassen:
-
address@hidden Versions of systemd that supported symlinked service files are 
not
address@hidden yet widely deployed, so we should suggest that users copy the 
service
address@hidden files into place.
address@hidden
address@hidden See this thread for more information:
address@hidden 
http://lists.gnu.org/archive/html/guix-devel/2017-01/msg01199.html
-
address@hidden
-# cp ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \
-     /etc/systemd/system/
-# systemctl start guix-daemon && systemctl enable guix-daemon
address@hidden example
-
-Wenn Ihre Wirts-Distribution als »init«-System Upstart verwendet:
-
address@hidden
-# initctl reload-configuration
-# cp ~root/.config/guix/current/lib/upstart/system/guix-daemon.conf \
-     /etc/init/
-# start guix-daemon
address@hidden example
-
-Andernfalls können Sie den Daemon immer noch manuell starten, mit:
-
address@hidden
-# ~root/.config/guix/current/bin/guix-daemon \
-       --build-users-group=guixbuild
address@hidden example
-
address@hidden
-Stellen Sie den @command{guix}-Befehl auch anderen Nutzern Ihrer Maschine
-zur Verfügung, zum Beispiel so:
-
address@hidden
-# mkdir -p /usr/local/bin
-# cd /usr/local/bin
-# ln -s /var/guix/profiles/per-user/root/current-guix/bin/guix
address@hidden example
-
-Es ist auch eine gute Idee, die Info-Version dieses Handbuchs ebenso
-verfügbar zu machen:
-
address@hidden
-# mkdir -p /usr/local/share/info
-# cd /usr/local/share/info
-# for i in /var/guix/profiles/per-user/root/current-guix/share/info/* ;
-  do ln -s $i ; done
address@hidden example
-
-Auf diese Art wird, unter der Annahme, dass bei Ihnen
address@hidden/usr/local/share/info} im Suchpfad eingetragen ist, das Ausführen 
von
address@hidden guix.de} dieses Handbuch öffnen (siehe @ref{Other Info
-Directories,,, texinfo, GNU Texinfo} hat weitere Details, wie Sie den
-Info-Suchpfad ändern können).
-
address@hidden
address@hidden Substitute, deren Autorisierung
-Um Substitute von @address@hidden oder einem Spiegelserver
-davon zu benutzen (siehe @ref{Substitute}), müssen sie erst autorisiert
-werden:
-
address@hidden
-# guix archive --authorize < \
-     ~root/.config/guix/current/share/guix/@value{SUBSTITUTE-SERVER}.pub
address@hidden example
-
address@hidden
-Alle Nutzer müssen womöglich ein paar zusätzliche Schritte ausführen, damit
-ihre Guix-Umgebung genutzt werden kann, siehe @ref{Anwendungen einrichten}.
address@hidden enumerate
-
-Voilà, die Installation ist fertig!
-
-Sie können nachprüfen, dass Guix funktioniert, indem Sie ein Beispielpaket
-in das root-Profil installieren:
-
address@hidden
-# guix package -i hello
address@hidden example
-
-Das @code{guix}-Paket muss im Profil von @code{root} installiert bleiben,
-damit es nicht vom Müllsammler geholt wird, denn ohne den
address@hidden wären Sie lahmgelegt. Anders gesagt, entfernen Sie
address@hidden @emph{nicht} mit @code{guix package -r guix}.
-
-Der Tarball zur Installation aus einer Binärdatei kann einfach durch
-Ausführung des folgenden Befehls im Guix-Quellbaum (re-)produziert und
-verifiziert werden:
-
address@hidden
-make address@hidden
address@hidden example
-
address@hidden
-…@: was wiederum dies ausführt:
-
address@hidden
-guix pack -s @var{System} --localstatedir \
-  --profile-name=current-guix guix
address@hidden example
-
-Siehe @ref{Aufruf von guix pack} für weitere Informationen zu diesem
-praktischen Werkzeug.
-
address@hidden Voraussetzungen
address@hidden Voraussetzungen
-
-Dieser Abschnitt listet Voraussetzungen auf, um Guix aus seinem Quellcode zu
-erstellen. Der Erstellungsprozess für Guix ist derselbe wie für andere
-GNU-Software und wird hier nicht beschrieben. Bitte lesen Sie die Dateien
address@hidden und @file{INSTALL} im Guix-Quellbaum, um weitere Details zu
-erfahren.
-
address@hidden Offizielle Webpräsenz
-GNU Guix kann von seiner Webpräsenz unter
address@hidden://www.gnu.org/software/guix/} heruntergeladen werden.
-
-GNU Guix hat folgende Pakete als Abhängigkeiten:
-
address@hidden
address@hidden @url{http://gnu.org/software/guile/, GNU Guile}, Version 2.2.x,
address@hidden @url{https://notabug.org/cwebber/guile-gcrypt, Guile-Gcrypt}, 
Version
-0.1.0 oder neuer,
address@hidden
address@hidden://gnutls.org/, GnuTLS}, im Speziellen dessen Anbindungen für
-Guile (siehe @ref{Guile Preparations, how to install the GnuTLS bindings for
-Guile,, gnutls-guile, GnuTLS-Guile}),
address@hidden
address@hidden://notabug.org/guile-sqlite3/guile-sqlite3, Guile-SQLite3},
-Version 0.1.0 oder neuer,
address@hidden
address@hidden FIXME: Specify a version number once a release has been made.
address@hidden://gitlab.com/guile-git/guile-git, Guile-Git}, vom August 2017
-oder neuer,
address@hidden @uref{https://savannah.nongnu.org/projects/guile-json/, 
Guile-JSON},
address@hidden @url{http://zlib.net, zlib},
address@hidden @url{http://www.gnu.org/software/make/, GNU Make}.
address@hidden itemize
-
-Folgende Abhängigkeiten sind optional:
-
address@hidden
address@hidden
address@hidden Note: We need at least 0.10.2 for 'channel-send-eof'.
-Unterstützung für das Auslagern von Erstellungen (siehe @ref{Auslagern des 
Daemons einrichten}) und @command{guix copy} (siehe @ref{Aufruf von guix copy}) 
hängt von
address@hidden://github.com/artyom-poptsov/guile-ssh, Guile-SSH}, Version
-0.10.2 oder neuer, ab.
-
address@hidden
-Wenn @url{http://www.bzip.org, libbz2} verfügbar ist, kann
address@hidden damit Erstellungsprotokolle komprimieren.
address@hidden itemize
-
-Sofern nicht @code{--disable-daemon} beim Aufruf von @command{configure}
-übergeben wurde, benötigen Sie auch folgende Pakete:
-
address@hidden
address@hidden @url{http://gnupg.org/, GNU libgcrypt},
address@hidden @url{http://sqlite.org, SQLite 3},
address@hidden @url{http://gcc.gnu.org, GCC's g++} mit Unterstützung für den
-C++11-Standard.
address@hidden itemize
-
address@hidden Zustandsverzeichnis
-Sollten Sie Guix auf einem System konfigurieren, auf dem Guix bereits
-installiert ist, dann stellen Sie sicher, dasselbe Zustandsverzeichnis wie
-für die bestehende Installation zu verwenden. Benutzen Sie dazu die
-Befehlszeilenoption @code{--localstatedir} des @command{configure}-Skripts
-(siehe @ref{Directory Variables, @code{localstatedir},, standards, GNU
-Coding Standards}). Das @command{configure}-Skript schützt vor ungewollter
-Fehlkonfiguration der @var{localstatedir}, damit sie nicht versehentlich
-Ihren Store verfälschen (siehe @ref{Der Store}).
-
address@hidden Nix, Kompatibilität
-Wenn eine funktionierende Installation of @url{http://nixos.org/nix/, the
-Nix package manager} verfügbar ist, können Sie Guix stattdessen mit
address@hidden konfigurieren. In diesem Fall ersetzt Nix die drei
-oben genannten Abhängigkeiten.
-
-Guix ist mit Nix kompatibel, daher ist es möglich, denselben Store für beide
-zu verwenden. Dazu müssen Sie an @command{configure} nicht nur denselben
-Wert für @code{--with-store-dir} übergeben, sondern auch denselben Wert für
address@hidden Letzterer ist deswegen essenziell, weil er unter
-anderem angibt, wo die Datenbank liegt, in der sich die Metainformationen
-über den Store befinden. Für Nix sind die Werte standardmäßig
address@hidden/nix/store} und
address@hidden/nix/var}. Beachten Sie, dass @code{--disable-daemon}
-nicht erforderlich ist, wenn Sie die Absicht haben, den Store mit Nix zu
-teilen.
-
address@hidden Den Testkatalog laufen lassen
address@hidden Den Testkatalog laufen lassen
-
address@hidden Testkatalog
-Nachdem @command{configure} und @code{make} erfolgreich durchgelaufen sind,
-ist es ratsam, den Testkatalog auszuführen. Er kann dabei helfen, Probleme
-mit der Einrichtung oder Systemumgebung zu finden, oder auch Probleme in
-Guix selbst — und Testfehler zu melden ist eine wirklich gute Art und Weise,
-bei der Verbesserung von Guix mitzuhelfen. Um den Testkatalog auszuführen,
-geben Sie Folgendes ein:
-
address@hidden
-make check
address@hidden example
-
-Testfälle können parallel ausgeführt werden. Sie können die
-Befehlszeiltenoption @code{-j} von address@hidden benutzen, damit es
-schneller geht. Der erste Durchlauf kann auf neuen Maschinen ein paar
-Minuten dauern, nachfolgende Ausführungen werden schneller sein, weil der
-für die Tests erstellte Store schon einige Dinge zwischengespeichert haben
-wird.
-
-Es ist auch möglich, eine Teilmenge der Tests laufen zu lassen, indem Sie
-die @code{TESTS}-Variable des Makefiles ähnlich wie in diesem Beispiel
-definieren:
-
address@hidden
-make check TESTS="tests/store.scm tests/cpio.scm"
address@hidden example
-
-Standardmäßig werden Testergebnisse pro Datei angezeigt. Um die Details
-jedes einzelnen Testfalls zu sehen, können Sie wie in diesem Beispiel die
address@hidden des Makefiles definieren:
-
address@hidden
-make check TESTS="tests/base64.scm" SCM_LOG_DRIVER_FLAGS="--brief=no"
address@hidden example
-
-Kommt es zum Fehlschlag, senden Sie bitte eine E-Mail an
address@hidden@@gnu.org} und fügen Sie die Datei @file{test-suite.log} als
-Anhang bei. Bitte geben Sie dabei in Ihrer Nachricht die benutzte Version
-von Guix an sowie die Versionsnummern der Abhängigkeiten (siehe
address@hidden).
-
-Guix wird auch mit einem Testkatalog für das ganze System ausgeliefert, der
-vollständige Instanzen des »Guix System«-Betriebssystems testet. Er kann nur
-auf Systemen benutzt werden, auf denen Guix bereits installiert ist, mit
-folgendem Befehl:
-
address@hidden
-make check-system
address@hidden example
-
address@hidden
-Oder, auch hier, indem Sie @code{TESTS} definieren, um eine Teilmenge der
-auszuführenden Tests anzugeben:
-
address@hidden
-make check-system TESTS="basic mcron"
address@hidden example
-
-Diese Systemtests sind in den @code{(gnu tests @dots{})}-Modulen
-definiert. Sie funktionieren, indem Sie das getestete Betriebssystem mitsamt
-schlichter Instrumentierung in einer virtuellen Maschine (VM) ausführen. Die
-Tests können aufwendige Berechnungen durchführen oder sie günstig umgehen,
-je nachdem, ob für ihre Abhängigkeiten Substitute zur Verfügung stehen
-(siehe @ref{Substitute}). Manche von ihnen nehmen viel Speicherplatz in
-Anspruch, um die VM-Abbilder zu speichern.
-
-Auch hier gilt: Falls Testfehler auftreten, senden Sie bitte alle Details an
address@hidden@@gnu.org}.
-
address@hidden Den Daemon einrichten
address@hidden Den Daemon einrichten
-
address@hidden Daemon
-Operationen wie das Erstellen eines Pakets oder Laufenlassen des
-Müllsammlers werden alle durch einen spezialisierten Prozess durchgeführt,
-den @dfn{Erstellungs-Daemon}, im Auftrag seiner Kunden (den Clients). Nur
-der Daemon darf auf den Store und seine zugehörige Datenbank
-zugreifen. Daher wird jede den Store verändernde Operation durch den Daemon
-durchgeführt. Zum Beispiel kommunizieren Befehlszeilenwerkzeuge wie
address@hidden package} und @command{guix build} mit dem Daemon (mittels
-entfernter Prozeduraufrufe), um ihm Anweisungen zu geben, was er tun soll.
-
-Folgende Abschnitte beschreiben, wie Sie die Umgebung des
-Erstellungs-Daemons ausstatten sollten. Siehe auch @ref{Substitute} für
-Informationen darüber, wie Sie es dem Daemon ermöglichen, vorerstellte
-Binärdateien herunterzuladen.
-
address@hidden
-* Einrichten der Erstellungsumgebung::  Die isolierte Umgebung zum Erstellen 
-                                          vorbereiten.
-* Auslagern des Daemons einrichten::  Erstellungen auf entfernte Maschinen 
-                                        auslagern.
-* SELinux-Unterstützung::   Wie man eine SELinux-Richtlinie für den Daemon 
-                               einrichtet.
address@hidden menu
-
address@hidden Einrichten der Erstellungsumgebung
address@hidden Einrichten der Erstellungsumgebung
-
address@hidden Erstellungsumgebung
-In einem normalen Mehrbenutzersystem werden Guix und sein Daemon — das
-Programm @command{guix-daemon} — vom Systemadministrator installiert;
address@hidden/gnu/store} gehört @code{root} und @command{guix-daemon} läuft als
address@hidden Nicht mit erweiterten Rechten ausgestattete Nutzer können
-Guix-Werkzeuge benutzen, um Pakete zu erstellen oder anderweitig auf den
-Store zuzugreifen, und der Daemon wird dies für sie erledigen und dabei
-sicherstellen, dass der Store in einem konsistenten Zustand verbleibt und
-sich die Nutzer erstellte Pakete teilen.
-
address@hidden Erstellungsbenutzer
-Wenn @command{guix-daemon} als Administratornutzer @code{root} läuft, wollen
-Sie aber vielleicht dennoch nicht, dass Paketerstellungsprozesse auch als
address@hidden ablaufen, aus offensichtlichen Sicherheitsgründen. Um dies zu
-vermeiden, sollte ein besonderer Pool aus @dfn{Erstellungsbenutzern}
-geschaffen werden, damit vom Daemon gestartete Erstellungsprozesse ihn
-benutzen. Diese Erstellungsbenutzer müssen weder eine Shell noch ein
-Persönliches Verzeichnis zugewiesen bekommen, sie werden lediglich benutzt,
-wenn der Daemon @code{root}-Rechte in Erstellungsprozessen ablegt. Mehrere
-solche Benutzer zu haben, ermöglicht es dem Daemon, verschiedene
-Erstellungsprozessen unter verschiedenen Benutzeridentifikatoren (UIDs) zu
-starten, was garantiert, dass sie einander nicht stören — eine essenzielle
-Funktionalität, da Erstellungen als reine Funktionen angesehen werden (siehe
address@hidden).
-
-Auf einem GNU/Linux-System kann ein Pool von Erstellungsbenutzern wie folgt
-erzeugt werden (mit Bash-Syntax und den Befehlen von @code{shadow}):
-
address@hidden See 
http://lists.gnu.org/archive/html/bug-guix/2013-01/msg00239.html
address@hidden for why `-G' is needed.
address@hidden
-# groupadd --system guixbuild
-# for i in `seq -w 1 10`;
-  do
-    useradd -g guixbuild -G guixbuild                  \
-            -d /var/empty -s `which nologin`           \
-            -c "Guix-Erstellungsbenutzer $i" --system  \
-            guixbuilder$i;
-  done
address@hidden example
-
address@hidden
-Die Anzahl der Erstellungsbenutzer entscheidet, wieviele Erstellungsaufträge
-parallel ausgeführt werden können, wie es mit der Befehlszeilenoption
address@hidden vorgegeben werden kann (siehe @ref{Aufruf des guix-daemon,
address@hidden). Um @command{guix system vm} und ähnliche Befehle
-nutzen zu können, müssen Sie die Erstellungsbenutzer unter Umständen zur
address@hidden hinzufügen, damit sie Zugriff auf @file{/dev/kvm}
-haben, mit @code{-G guixbuild,kvm} statt @code{-G guixbuild} (siehe
address@hidden von guix system}).
-
-Das Programm @code{guix-daemon} kann mit dem folgenden Befehl als
address@hidden gestartet address@hidden Ihre Maschine systemd als
-»init«-System verwendet, genügt es, die Datei
address@hidden@var{prefix}/lib/systemd/system/guix-daemon.service} in
address@hidden/etc/systemd/system} zu platzieren, damit @command{guix-daemon}
-automatisch gestartet wird. Ebenso können Sie, wenn Ihre Maschine Upstart
-als »init«-System benutzt, die Datei
address@hidden@var{prefix}/lib/upstart/system/guix-daemon.conf} in 
@file{/etc/init}
-platzieren.}:
-
address@hidden
-# guix-daemon --build-users-group=guixbuild
address@hidden example
-
address@hidden chroot
address@hidden
-Auf diese Weise startet der Daemon Erstellungsprozesse in einem chroot als
-einer der @code{guixbuilder}-Benutzer. Auf GNU/Linux enthält die
-chroot-Umgebung standardmäßig nichts außer:
-
address@hidden Keep this list in sync with libstore/build.cc! 
-----------------------
address@hidden
address@hidden
-einem minimalen @code{/dev}-Verzeichnis, was größtenteils vom @code{/dev}
-des Wirtssystems unabhängig erstellt address@hidden, denn
-obwohl die Menge an Dateien, die im @code{/dev} des chroots vorkommen, fest
-ist, können die meisten dieser Dateien nur dann erstellt werden, wenn das
-Wirtssystem sie auch hat.},
-
address@hidden
-dem @code{/proc}-Verzeichnis, es zeigt nur die Prozesse des Containers, weil
-ein separater Namensraum für Prozess-IDs (PIDs) benutzt wird,
-
address@hidden
address@hidden/etc/passwd} mit einem Eintrag für den aktuellen Benutzer und 
einem
-Eintrag für den Benutzer @file{nobody},
-
address@hidden
address@hidden/etc/group} mit einem Eintrag für die Gruppe des Benutzers,
-
address@hidden
address@hidden/etc/hosts} mit einem Eintrag, der @code{localhost} auf
address@hidden abbildet,
-
address@hidden
-einem @file{/tmp}-Verzeichnis mit Schreibrechten.
address@hidden itemize
-
-Sie können beeinflussen, in welchem Verzeichnis der Daemon Verzeichnisbäume
-zur Erstellung unterbringt, indem sie den Wert der Umgebungsvariablen
address@hidden ändern. Allerdings heißt innerhalb des chroots der
-Erstellungsbaum immer @file{/tmp/address@hidden, wobei
address@hidden der Ableitungsname ist — z.B.@: @code{coreutils-8.24}. Dadurch
-hat der Wert von @code{TMPDIR} keinen Einfluss auf die Erstellungsumgebung,
-wodurch Unterschiede vermieden werden, falls Erstellungsprozesse den Namen
-ihres Erstellungsbaumes einfangen.
-
address@hidden http_proxy
-Der Daemon befolgt außerdem den Wert der Umgebungsvariablen
address@hidden für von ihm durchgeführte HTTP-Downloads, sei es für
-Ableitungen mit fester Ausgabe (siehe @ref{Ableitungen}) oder für Substitute
-(siehe @ref{Substitute}).
-
-Wenn Sie Guix als ein Benutzer ohne erweiterte Rechte installieren, ist es
-dennoch möglich, @command{guix-daemon} auszuführen, sofern Sie
address@hidden übergeben. Allerdings können Erstellungsprozesse
-dann nicht voneinander und vom Rest des Systems isoliert werden. Daher
-können sich Erstellungsprozesse gegenseitig stören und auf Programme,
-Bibliotheken und andere Dateien zugreifen, die dem restlichen System zur
-Verfügung stehen — was es deutlich schwerer macht, sie als @emph{reine}
-Funktionen aufzufassen.
-
-
address@hidden Auslagern des Daemons einrichten
address@hidden Nutzung der Auslagerungsfunktionalität
-
address@hidden auslagern
address@hidden Build-Hook
-Wenn erwünscht, kann der Erstellungs-Daemon Ableitungserstellungen auf
-andere Maschinen @dfn{auslagern}, auf denen Guix läuft, mit Hilfe des
address@hidden@address@hidden Funktionalität ist nur
-verfügbar, wenn @uref{https://github.com/artyom-poptsov/guile-ssh,
-Guile-SSH} vorhanden ist.}. Wenn diese Funktionalität aktiviert ist, wird
-eine nutzerspezifizierte Liste von Erstellungsmaschinen aus
address@hidden/etc/guix/machines.scm} gelesen. Wann immer eine Erstellung 
angefragt
-wird, zum Beispiel durch @code{guix build}, versucht der Daemon, sie an eine
-der Erstellungsmaschinen auszulagern, die die Einschränkungen der Ableitung
-erfüllen, insbesondere ihren Systemtyp — z.B.@:
address@hidden Fehlende Voraussetzungen für die Erstellung werden über
-SSH auf die Zielmaschine kopiert, welche dann mit der Erstellung
-weitermacht. Hat sie Erfolg damit, so werden die Ausgabe oder Ausgaben der
-Erstellung zurück auf die ursprüngliche Maschine kopiert.
-
-Die Datei @file{/etc/guix/machines.scm} sieht normalerweise so aus:
-
address@hidden
-(list (build-machine
-        (name "eightysix.example.org")
-        (system "x86_64-linux")
-        (host-key "ssh-ed25519 address@hidden")
-        (user "bob")
-        (speed 2.))     ;unglaublich schnell!
-
-      (build-machine
-        (name "meeps.example.org")
-        (system "mips64el-linux")
-        (host-key "ssh-rsa address@hidden")
-        (user "alice")
-        (private-key
-         (string-append (getenv "HOME")
-                        "/.ssh/identität-für-guix"))))
address@hidden example
-
address@hidden
-Im obigen Beispiel geben wir eine Liste mit zwei Erstellungsmaschinen vor,
-eine für die @code{x86_64}-Architektur und eine für die
address@hidden
-
-Tatsächlich ist diese Datei — wenig überraschend! — eine Scheme-Datei, die
-ausgewertet wird, wenn der @code{offload}-Hook gestartet wird. Der Wert, den
-sie zurückliefert, muss eine Liste von @code{build-machine}-Objekten
-sein. Obwohl dieses Beispiel eine feste Liste von Erstellungsmaschinen
-zeigt, könnte man auch auf die Idee kommen, etwa mit DNS-SD eine Liste
-möglicher im lokalen Netzwerk entdeckter Erstellungsmaschinen zu liefern
-(siehe @ref{Einführung, Guile-Avahi,, guile-avahi, Using Avahi in Guile
-Scheme Programs}). Der Datentyp @code{build-machine} wird im Folgenden
-weiter ausgeführt.
-
address@hidden {Datentyp} build-machine
-Dieser Datentyp repräsentiert Erstellungsmaschinen, an die der Daemon
-Erstellungen auslagern darf. Die wichtigen Felder sind:
-
address@hidden @code
-
address@hidden name
-Der Hostname (d.h.@: der Rechnername) der entfernten Maschine.
-
address@hidden system
-Der Systemtyp der entfernten Maschine — z.B.@: @code{"x86_64-linux"}.
-
address@hidden user
-Das Benutzerkonto, mit dem eine Verbindung zur entfernten Maschine über SSH
-aufgebaut werden soll. Beachten Sie, dass das SSH-Schlüsselpaar @emph{nicht}
-durch eine Passphrase geschützt sein darf, damit nicht-interaktive
-Anmeldungen möglich sind.
-
address@hidden host-key
-Dies muss der @dfn{öffentliche SSH-Host-Schlüssel} der Maschine im
-OpenSSH-Format sein. Er wird benutzt, um die Identität der Maschine zu
-prüfen, wenn wir uns mit ihr verbinden. Er ist eine lange Zeichenkette, die
-ungefähr so aussieht:
-
address@hidden
-ssh-ed25519 address@hidden hint@@example.org
address@hidden example
-
-Wenn auf der Maschine der OpenSSH-Daemon, @command{sshd}, läuft, ist der
-Host-Schlüssel in einer Datei wie @file{/etc/ssh/ssh_host_ed25519_key.pub}
-zu finden.
-
-Wenn auf der Maschine der SSH-Daemon von address@hidden, nämlich
address@hidden, läuft, befindet sich der Host-Schlüssel in
address@hidden/etc/lsh/host-key.pub} oder einer ähnlichen Datei. Er kann ins
-OpenSSH-Format umgewandelt werden durch @command{lsh-export-key} (siehe
address@hidden keys,,, lsh, LSH Manual}):
-
address@hidden
-$ lsh-export-key --openssh < /etc/lsh/host-key.pub 
-ssh-rsa address@hidden
address@hidden example
-
address@hidden table
-
-Eine Reihe optionaler Felder kann festgelegt werden:
-
address@hidden @asis
-
address@hidden @code{port} (Vorgabe: @code{22})
-Portnummer des SSH-Servers auf der Maschine.
-
address@hidden @code{private-key} (Vorgabe: @file{~root/.ssh/id_rsa})
-Die Datei mit dem privaten SSH-Schlüssel, der beim Verbinden zur Maschine
-genutzt werden soll, im OpenSSH-Format. Dieser Schlüssel darf nicht mit
-einer Passphrase geschützt sein.
-
-Beachten Sie, dass als Vorgabewert der private Schlüssel @emph{des
-root-Benutzers} genommen wird. Vergewissern Sie sich, dass er existiert,
-wenn Sie die Standardeinstellung verwenden.
-
address@hidden @code{compression} (Vorgabe: @code{"zlib@@openssh.com,zlib"})
address@hidden @code{compression-level} (Vorgabe: @code{3})
-Die Kompressionsmethoden auf SSH-Ebene und das angefragte
-Kompressionsniveau.
-
-Beachten Sie, dass Auslagerungen SSH-Kompression benötigen, um beim
-Übertragen von Dateien an Erstellungsmaschinen und zurück weniger Bandbreite
-zu benutzen.
-
address@hidden @code{daemon-socket} (Vorgabe: 
@code{"/var/guix/daemon-socket/socket"})
-Dateiname des Unix-Sockets, auf dem @command{guix-daemon} auf der Maschine
-lauscht.
-
address@hidden @code{parallel-builds} (Vorgabe: @code{1})
-Die Anzahl der Erstellungen, die auf der Maschine parallel ausgeführt werden
-können.
-
address@hidden @code{speed} (Vorgabe: @code{1.0})
-Ein »relativer Geschwindigkeitsfaktor«. Der Auslagerungsplaner gibt
-tendenziell Maschinen mit höherem Geschwindigkeitsfaktor den Vorrang.
-
address@hidden @code{features} (Vorgabe: @code{'()})
-Eine Liste von Zeichenketten, die besondere von der Maschine unterstützte
-Funktionalitäten bezeichnen. Ein Beispiel ist @code{"kvm"} für Maschinen,
-die über die KVM-Linux-Module zusammen mit entsprechender
-Hardware-Unterstützung verfügen. Ableitungen können Funktionalitäten dem
-Namen nach anfragen und werden dann auf passenden Erstellungsmaschinen
-eingeplant.
-
address@hidden table
address@hidden deftp
-
-Der Befehl @code{guix} muss sich im Suchpfad der Erstellungsmaschinen
-befinden. Um dies nachzuprüfen, können Sie Folgendes ausführen:
-
address@hidden
-ssh build-machine guix repl --version
address@hidden example
-
-Es gibt noch eine weitere Sache zu tun, sobald @file{machines.scm}
-eingerichtet ist. Wie zuvor erklärt, werden beim Auslagern Dateien zwischen
-den Stores der Maschinen hin- und hergeschickt. Damit das funktioniert,
-müssen Sie als Erstes ein Schlüsselpaar auf jeder Maschine erzeugen, damit
-der Daemon signierte Archive mit den Dateien aus dem Store versenden kann
-(siehe @ref{Aufruf von guix archive}):
-
address@hidden
-# guix archive --generate-key
address@hidden example
-
address@hidden
-Jede Erstellungsmaschine muss den Schlüssel der Hauptmaschine autorisieren,
-damit diese Store-Objekte von der Hauptmaschine empfangen kann:
-
address@hidden
-# guix archive --authorize < öffentlicher-schlüssel-hauptmaschine.txt
address@hidden example
-
address@hidden
-Andersherum muss auch die Hauptmaschine den jeweiligen Schlüssel jeder
-Erstellungsmaschine autorisieren.
-
-Der ganze Umstand mit den Schlüsseln soll ausdrücken, dass sich Haupt- und
-Erstellungsmaschinen paarweise gegenseitig vertrauen. Konkret kann der
-Erstellungs-Daemon auf der Hauptmaschine die Echtheit von den
-Erstellungsmaschinen empfangener Dateien gewährleisten (und umgekehrt), und
-auch dass sie nicht sabotiert wurden und mit einem autorisierten Schlüssel
-signiert wurden.
-
address@hidden Auslagerung testen
-Um zu testen, ob Ihr System funktioniert, führen Sie diesen Befehl auf der
-Hauptmaschine aus:
-
address@hidden
-# guix offload test
address@hidden example
-
-Dadurch wird versucht, zu jeder Erstellungsmaschine eine Verbindung
-herzustellen, die in @file{/etc/guix/machines.scm} angegeben wurde,
-sichergestellt, dass auf jeder Guile und die Guix-Module nutzbar sind, und
-jeweils versucht, etwas auf die Erstellungsmaschine zu exportieren und von
-dort zu imporieren. Dabei auftretende Fehler werden gemeldet.
-
-Wenn Sie stattdessen eine andere Maschinendatei verwenden möchten, geben Sie
-diese einfach auf der Befehlszeile an:
-
address@hidden
-# guix offload test maschinen-qualif.scm
address@hidden example
-
-Letztendlich können Sie hiermit nur die Teilmenge der Maschinen testen,
-deren Name zu einem regulären Ausdruck passt:
-
address@hidden
-# guix offload test maschinen.scm '\.gnu\.org$'
address@hidden example
-
address@hidden Auslagerungs-Lagebericht
-Um die momentane Auslastung aller Erstellungs-Hosts anzuzeigen, führen Sie
-diesen Befehl auf dem Hauptknoten aus:
-
address@hidden
-# guix offload status
address@hidden example
-
-
address@hidden SELinux-Unterstützung
address@hidden SELinux-Unterstützung
-
address@hidden SELinux, Policy für den Daemon
address@hidden Mandatory Access Control, SELinux
address@hidden Sicherheit, des guix-daemon
-Guix enthält eine SELinux-Richtliniendatei (»Policy«) unter
address@hidden/guix-daemon.cil}, die auf einem System installiert werden kann,
-auf dem SELinux aktiviert ist, damit Guix-Dateien gekennzeichnet sind und um
-das erwartete Verhalten des Daemons anzugeben. Da Guix System keine
-Grundrichtlinie (»Base Policy«) für SELinux bietet, kann diese Richtlinie
-für den Daemon auf Guix System nicht benutzt werden.
-
address@hidden Installieren der SELinux-Policy
address@hidden SELinux, Policy installieren
-Um die Richtlinie (Policy) zu installieren, führen Sie folgenden Befehl mit
-Administratorrechten aus:
-
address@hidden
-semodule -i etc/guix-daemon.cil
address@hidden example
-
-Kennzeichnen Sie dann das Dateisystem neu mit @code{restorecon} oder einem
-anderen, von Ihrem System angebotenen Mechanismus.
-
-Sobald die Richtlinie installiert ist, das Dateisystem neu gekennzeichnet
-wurde und der Daemon neugestartet wurde, sollte er im Kontext
address@hidden laufen. Sie können dies mit dem folgenden Befehl
-nachprüfen:
-
address@hidden
-ps -Zax | grep guix-daemon
address@hidden example
-
-Beobachten Sie die Protokolldateien von SELinux, wenn Sie einen Befehl wie
address@hidden build hello} ausführen, um sich zu überzeugen, dass SELinux alle
-notwendigen Operationen gestattet.
-
address@hidden Einschränkungen
address@hidden SELinux, Einschränkungen
-
-Diese Richtlinie ist nicht perfekt. Im Folgenden finden Sie eine Liste von
-Einschränkungen oder merkwürdigen Verhaltensweisen, die bedacht werden
-sollten, wenn man die mitgelieferte SELinux-Richtlinie für den Guix-Daemon
-einspielt.
-
address@hidden
address@hidden
address@hidden wird nicht wirklich benutzt. Keine der
-Socket-Operationen benutzt Kontexte, die irgendetwas mit
address@hidden zu tun haben. Es schadet nicht, diese ungenutzte
-Kennzeichnung zu haben, aber es wäre besser, für die Kennzeichnung auch
-Socket-Regeln festzulegen.
-
address@hidden
address@hidden gc} kann nicht auf beliebige Verknüpfungen zu Profilen
-zugreifen. Die Kennzeichnung des Ziels einer symbolischen Verknüpfung ist
-notwendigerweise unabhängig von der Dateikennzeichnung der
-Verknüpfung. Obwohl alle Profile unter $localstatedir gekennzeichnet sind,
-erben die Verknüpfungen auf diese Profile die Kennzeichnung desjenigen
-Verzeichnisses, in dem sie sich befinden. Für Verknüpfungen im Persönlichen
-Verzeichnis des Benutzers ist das @code{user_home_t}, aber Verknüpfungen aus
-dem Persönlichen Verzeichnis des Administratornutzers, oder @file{/tmp},
-oder das Arbeitsverzeichnis des HTTP-Servers, etc., funktioniert das
-nicht. @code{guix gc} würde es nicht gestattet, diese Verknüpfungen
-auszulesen oder zu verfolgen.
-
address@hidden
-Die vom Daemon gebotene Funktionalität, auf TCP-Verbindungen zu lauschen,
-könnte nicht mehr funktionieren. Dies könnte zusätzliche Regeln brauchen,
-weil SELinux Netzwerk-Sockets anders behandelt als Dateien.
-
address@hidden
-Derzeit wird allen Dateien mit einem Namen, der zum regulären Ausdruck
address@hidden/gnu/store/.+-(guix-.+|profile)/bin/guix-daemon} passt, die
-Kennzeichnung @code{guix_daemon_exec_t} zugewiesen, wodurch @emph{jede
-beliebige} Datei mit diesem Namen in irgendeinem Profil gestattet wäre, in
-der Domäne @code{guix_daemon_t} ausgeführt zu werden. Das ist nicht
-ideal. Ein Angreifer könnte ein Paket erstellen, dass solch eine ausführbare
-Datei enthält, und den Nutzer überzeugen, es zu installieren und
-auszuführen. Dadurch käme es in die Domäne @code{guix_daemon_t}. Ab diesem
-Punkt könnte SELinux nicht mehr verhindern, dass es auf Dateien zugreift,
-auf die Prozesse in dieser Domäne zugreifen dürfen.
-
-Wir könnten zum Zeitpunkt der Installation eine wesentlich restriktivere
-Richtlinie generieren, für die nur @emph{genau derselbe} Dateiname des
-gerade installierten @code{guix-daemon}-Programms als
address@hidden gekennzeichnet würde, statt einen vieles
-umfassenden regulären Ausdruck zu benutzen. Aber dann müsste der
-Administratornutzer zum Zeitpunkt der Installation jedes Mal die Richtlinie
-installieren oder aktualisieren müssen, sobald das Guix-Paket aktualisiert
-wird, dass das tatsächlich in Benutzung befindliche
address@hidden enthält.
address@hidden enumerate
-
address@hidden Aufruf des guix-daemon
address@hidden Aufruf von @command{guix-daemon}
-
-Das Programm @command{guix-daemon} implementiert alle Funktionalitäten, um
-auf den Store zuzugreifen. Dazu gehört das Starten von Erstellungsprozessen,
-das Ausführen des Müllsammlers, das Abfragen, ob ein Erstellungsergebnis
-verfügbar ist, etc. Normalerweise wird er so als Administratornutzer
-(@code{root}) gestartet:
-
address@hidden
-# guix-daemon --build-users-group=guixbuild
address@hidden example
-
address@hidden
-Details, wie Sie ihn einrichten, finden Sie im Abschnitt @ref{Den Daemon 
einrichten}.
-
address@hidden chroot
address@hidden Container, Erstellungsumgebung
address@hidden Erstellungsumgebung
address@hidden Reproduzierbare Erstellungen
-Standardmäßig führt @command{guix-daemon} Erstellungsprozesse mit
-unterschiedlichen UIDs aus, die aus der Erstellungsgruppe stammen, deren
-Name mit @code{--build-users-group} übergeben wurde. Außerdem läuft jeder
-Erstellungsprozess in einer chroot-Umgebung, die nur die Teilmenge des
-Stores enthält, von der der Erstellungsprozess abhängt, entsprechend seiner
-Ableitung (siehe @ref{Programmierschnittstelle, derivation}), und ein paar
-bestimmte Systemverzeichnisse, darunter standardmäßig auch @file{/dev} und
address@hidden/dev/pts}. Zudem ist die Erstellungsumgebung auf GNU/Linux ein
address@hidden: Nicht nur hat er seinen eigenen Dateisystembaum, er hat
-auch einen separaten Namensraum zum Einhängen von Dateisystemen, seinen
-eigenen Namensraum für PIDs, für Netzwerke, etc. Dies hilft dabei,
-reproduzierbare Erstellungen zu garantieren (siehe @ref{Funktionalitäten}).
-
-Wenn der Daemon im Auftrag des Nutzers eine Erstellung durchführt, erzeugt
-er ein Erstellungsverzeichnis, entweder in @file{/tmp} oder im Verzeichnis,
-das durch die Umgebungsvariable @code{TMPDIR} angegeben wurde. Dieses
-Verzeichnis wird mit dem Container geteilt, solange die Erstellung noch
-läuft, allerdings trägt es im Container stattdessen immer den Namen
-»/tmp/guix-build-NAME.drv-0«.
-
-Nach Abschluss der Erstellung wird das Erstellungsverzeichnis automatisch
-entfernt, außer wenn die Erstellung fehlgeschlagen ist und der Client
address@hidden angegeben hat (siehe @ref{Aufruf von guix build,
address@hidden).
-
-Der Daemon lauscht auf Verbindungen und erstellt jeweils einen Unterprozess
-für jede von einem Client begonnene Sitzung (d.h.@: von einem der
address@hidden). Der Befehl @command{guix processes} zeigt
-Ihnen eine Übersicht solcher Systemaktivitäten; damit werden Ihnen alle
-aktiven Sitzungen und Clients gezeigt. Weitere Informationen finden Sie
-unter @ref{Aufruf von guix processes}.
-
-Die folgenden Befehlszeilenoptionen werden unterstützt:
-
address@hidden @code
address@hidden address@hidden
-Verwende die Benutzerkonten aus der @var{Gruppe}, um Erstellungsprozesse
-auszuführen (siehe @ref{Den Daemon einrichten, build users}).
-
address@hidden --no-substitutes
address@hidden Substitute
-Benutze keine Substitute für Erstellungsergebnisse. Das heißt, dass alle
-Objekte lokal erstellt werden müssen, und kein Herunterladen von vorab
-erstellten Binärdateien erlaubt ist (siehe @ref{Substitute}).
-
-Wenn der Daemon mit @code{--no-substitutes} ausgeführt wird, können Clients
-trotzdem Substitute explizit aktivieren über den entfernten Prozeduraufruf
address@hidden (siehe @ref{Der Store}).
-
address@hidden address@hidden
address@hidden
address@hidden als standardmäßige, leerzeichengetrennte Liste der Quell-URLs für
-Substitute benutzen. Wenn diese Befehlszeilenoption @emph{nicht} angegeben
-wird, wird @indicateurl{https://@value{SUBSTITUTE-SERVER}} verwendet.
-
-Das hat zur Folge, dass Substitute von den @var{URLs} heruntergeladen werden
-können, solange sie mit einer Signatur versehen sind, der vertraut wird
-(siehe @ref{Substitute}).
-
address@hidden Build-Hook
address@hidden --no-build-hook
-Den @dfn{Build-Hook} nicht benutzen.
-
-»Build-Hook« ist der Name eines Hilfsprogramms, das der Daemon starten kann
-und an das er Erstellungsanfragen übermittelt. Durch diesen Mechanismus
-können Erstellungen an andere Maschinen ausgelagert werden (siehe
address@hidden des Daemons einrichten}).
-
address@hidden --cache-failures
-Fehler bei der Erstellung zwischenspeichern. Normalerweise werden nur
-erfolgreiche Erstellungen gespeichert.
-
-Wenn diese Befehlszeilenoption benutzt wird, kann @command{guix gc
---list-failures} benutzt werden, um die Menge an Store-Objekten abzufragen,
-die als Fehlschläge markiert sind; @command{guix gc --clear-failures}
-entfernt Store-Objekte aus der Menge zwischengespeicherter
-Fehlschläge. Siehe @ref{Aufruf von guix gc}.
-
address@hidden address@hidden
address@hidden -c @var{n}
address@hidden CPU-Kerne zum Erstellen jeder Ableitung benutzen; @code{0} 
heißt, so
-viele wie verfügbar sind.
-
-Der Vorgabewert ist @code{0}, jeder Client kann jedoch eine abweichende
-Anzahl vorgeben, zum Beispiel mit der Befehlszeilenoption @code{--cores} von
address@hidden build} (siehe @ref{Aufruf von guix build}).
-
-Dadurch wird die Umgebungsvariable @code{NIX_BUILD_CORES} im
-Erstellungsprozess definiert, welcher sie benutzen kann, um intern parallele
-Ausführungen zuzulassen — zum Beispiel durch Nutzung von @code{make
--j$NIX_BUILD_CORES}.
-
address@hidden address@hidden
address@hidden -M @var{n}
-Höchstenss @var{n} Erstellungsaufträge parallel bearbeiten. Der Vorgabewert
-liegt bei @code{1}. Wird er auf @code{0} gesetzt, werden keine Erstellungen
-lokal durchgeführt, stattdessen lagert der Daemon sie nur aus (siehe
address@hidden des Daemons einrichten}) oder sie schlagen einfach fehl.
-
address@hidden address@hidden
-Wenn der Erstellungs- oder Substitutionsprozess länger als
address@hidden keine Ausgabe erzeugt, wird er abgebrochen und ein
-Fehler beim Erstellen gemeldet.
-
-Der Vorgabewert ist @code{0}, was bedeutet, dass es keine Zeitbeschränkung
-gibt.
-
-Clients können einen anderen Wert als den hier angegebenen verwenden lassen
-(siehe @ref{Gemeinsame Erstellungsoptionen, @code{--max-silent-time}}).
-
address@hidden address@hidden
-Entsprechend wird hier der Erstellungs- oder Substitutionsprozess
-abgebrochen und als Fehlschlag gemeldet, wenn er mehr als
address@hidden dauert.
-
-Der Vorgabewert ist @code{0}, was bedeutet, dass es keine Zeitbeschränkung
-gibt.
-
-Clients können einen anderen Wert verwenden lassen (siehe @ref{Gemeinsame 
Erstellungsoptionen, @code{--timeout}}).
-
address@hidden address@hidden
-Jede Ableitung @var{n}-mal hintereinander erstellen und einen Fehler melden,
-wenn nacheinander ausgewertete Erstellungsergebnisse nicht Bit für Bit
-identisch sind. Beachten Sie, dass Clients wie @command{guix build} einen
-anderen Wert verwenden lassen können (siehe @ref{Aufruf von guix build}).
-
-Wenn dies zusammen mit @option{--keep-failed} benutzt wird, bleiben die sich
-unterscheidenden Ausgaben im Store unter dem Namen
address@hidden/gnu/store/@dots{}-check}. Dadurch können Unterschiede zwischen 
den
-beiden Ergebnissen leicht erkannt werden.
-
address@hidden --debug
-Informationen zur Fehlersuche ausgeben.
-
-Dies ist nützlich, um Probleme beim Starten des Daemons nachzuvollziehen;
-Clients könn aber auch ein abweichenden Wert verwenden lassen, zum Beispiel
-mit der Befehlszeilenoption @code{--verbosity} von @command{guix build}
-(siehe @ref{Aufruf von guix build}).
-
address@hidden address@hidden
-Füge das @var{Verzeichnis} zum chroot von Erstellungen hinzu.
-
-Dadurch kann sich das Ergebnis von Erstellungsprozessen ändern — zum
-Beispiel, wenn diese optionale Abhängigkeiten aus dem @var{Verzeichnis}
-verwenden, wenn sie verfügbar sind, und nicht, wenn es fehlt. Deshalb ist es
-nicht empfohlen, dass Sie diese Befehlszeilenoption verwenden, besser
-sollten Sie dafür sorgen, dass jede Ableitung alle von ihr benötigten
-Eingabgen deklariert.
-
address@hidden --disable-chroot
-Erstellungen ohne chroot durchführen.
-
-Diese Befehlszeilenoption zu benutzen, wird nicht empfohlen, denn auch
-dadurch bekämen Erstellungsprozesse Zugriff auf nicht deklarierte
-Abhängigkeiten. Sie ist allerdings unvermeidlich, wenn @command{guix-daemon}
-auf einem Benutzerkonto ohne ausreichende Berechtigungen ausgeführt wird.
-
address@hidden address@hidden
-Erstellungsprotokolle werden entsprechend dem @var{Typ} komprimiert, der
-entweder @code{gzip}, @code{bzip2} oder @code{none} (für keine Kompression)
-sein muss.
-
-Sofern nicht @code{--lose-logs} angegeben wurde, werden alle
-Erstellungsprotokolle in der @var{localstatedir} gespeichert. Um Platz zu
-sparen, komprimiert sie der Daemon standardmäßig automatisch mit bzip2.
-
address@hidden --disable-deduplication
address@hidden Deduplizieren
-Automatische Dateien-»Deduplizierung« im Store ausschalten.
-
-Standardmäßig werden zum Store hinzugefügte Objekte automatisch
-»dedupliziert«: Wenn eine neue Datei mit einer anderen im Store
-übereinstimmt, wird die neue Datei stattdessen als harte Verknüpfung auf die
-andere Datei angelegt. Dies reduziert den Speicherverbrauch auf der Platte
-merklich, jedoch steigt andererseits die Auslastung bei der Ein-/Ausgabe im
-Erstellungsprozess geringfügig. Durch diese Option wird keine solche
-Optimierung durchgeführt.
-
address@hidden --gc-keep-outputs[=yes|no]
-Gibt an, ob der Müllsammler (Garbage Collector, GC) die Ausgaben lebendiger
-Ableitungen behalten muss (»yes«) oder nicht (»no«).
-
address@hidden GC-Wurzeln
address@hidden Müllsammlerwurzeln
-Für »yes« behält der Müllsammler die Ausgaben aller lebendigen Ableitungen
-im Store — die @code{.drv}-Dateien. Der Vorgabewert ist aber »no«, so dass
-Ableitungsausgaben nur vorgehalten werden, wenn sie von einer
-Müllsammlerwurzel aus erreichbar sind. Siehe den Abschnitt @ref{Aufruf von 
guix gc} für weitere Informationen zu Müllsammlerwurzeln.
-
address@hidden --gc-keep-derivations[=yes|no]
-Gibt an, ob der Müllsammler (GC) Ableitungen behalten muss (»yes«), wenn sie
-lebendige Ausgaben haben, oder nicht (»no«).
-
-Für »yes«, den Vorgabewert, behält der Müllsammler Ableitungen — z.B.@:
address@hidden —, solange zumindest eine ihrer Ausgaben lebendig
-ist. Dadurch können Nutzer den Ursprung der Dateien in ihrem Store
-nachvollziehen. Setzt man den Wert auf »no«, wird ein bisschen weniger
-Speicher auf der Platte verbraucht.
-
-Auf diese Weise überträgt sich, wenn @code{--gc-keep-derivations} auf »yes«
-steht, die Lebendigkeit von Ausgaben auf Ableitungen, und wenn
address@hidden auf »yes« steht, die Lebendigkeit von Ableitungen
-auf Ausgaben. Stehen beide auf »yes«, bleiben so alle
-Erstellungsvoraussetzungen wie Quelldateien, Compiler, Bibliotheken und
-andere Erstellungswerkzeuge lebendiger Objekte im Store erhalten, ob sie von
-einer Müllsammlerwurzel aus erreichbar sind oder nicht. Entwickler können
-sich so erneute Erstellungen oder erneutes Herunterladen sparen.
-
address@hidden --impersonate-linux-2.6
-Auf Linux-basierten Systemen wird hiermit vorgetäuscht, dass es sich um
-Linux 2.6 handeln würde, indem der Kernel für einen
address@hidden als Version der Veröffentlichung mit 2.6
-antwortet.
-
-Dies kann hilfreich sein, um Programme zu erstellen, die (normalerweise zu
-Unrecht) von der Kernel-Versionsnummer abhängen.
-
address@hidden --lose-logs
-Keine Protokolle der Erstellungen vorhalten. Normalerweise würden solche in
address@hidden@var{localstatedir}/guix/log} gespeichert.
-
address@hidden address@hidden
-Verwende @var{System} als aktuellen Systemtyp. Standardmäßig ist dies das
-Paar aus Befehlssatz und Kernel, welches beim Aufruf von @code{configure}
-erkannt wurde, wie zum Beispiel @code{x86_64-linux}.
-
address@hidden address@hidden
-Lausche am @var{Endpunkt} auf Verbindungen. Dabei wird der @var{Endpunkt}
-als Dateiname eines Unix-Sockets verstanden, wenn er mit einem @code{/}
-(Schrägstrich) beginnt. Andernfalls wird der @var{Endpunkt} als Hostname
-(d.h.@: Rechnername) oder als Hostname-Port-Paar verstanden, auf dem
-gelauscht wird. Hier sind ein paar Beispiele:
-
address@hidden @code
address@hidden --listen=/gnu/var/daemon
-Lausche auf Verbindungen am Unix-Socket @file{/gnu/var/daemon}, falls nötig
-wird er dazu erstellt.
-
address@hidden --listen=localhost
address@hidden Daemon, Fernzugriff
address@hidden Fernzugriff auf den Daemon
address@hidden Daemon, Einrichten auf Clustern
address@hidden Cluster, Einrichtung des Daemons
-Lausche auf TCP-Verbindungen an der Netzwerkschnittstelle, die
address@hidden entspricht, auf Port 44146.
-
address@hidden --listen=128.0.0.42:1234
-Lausche auf TCP-Verbindungen an der Netzwerkschnittstelle, die
address@hidden entspricht, auf Port 1234.
address@hidden table
-
-Diese Befehlszeilenoption kann mehrmals wiederholt werden. In diesem Fall
-akzeptiert @command{guix-daemon} Verbindungen auf allen angegebenen
-Endpunkten. Benutzer können bei Client-Befehlen angeben, mit welchem
-Endpunkt sie sich verbinden möchten, indem sie die Umgebungsvariable
address@hidden festlegen (siehe @ref{Der Store,
address@hidden).
-
address@hidden Anmerkung
-Das Daemon-Protokoll ist @emph{weder authentifiziert noch
-verschlüsselt}. Die Benutzung von @address@hidden eignet sich für
-lokale Netzwerke, wie z.B.@: in Rechen-Clustern, wo sich nur solche Knoten
-mit dem Daemon verbinden, denen man vertraut. In Situationen, wo ein
-Fernzugriff auf den Daemon durchgeführt wird, empfehlen wir, über
-Unix-Sockets in Verbindung mit SSH zuzugreifen.
address@hidden quotation
-
-Wird @code{--listen} nicht angegeben, lauscht @command{guix-daemon} auf
-Verbindungen auf dem Unix-Socket, der sich unter
address@hidden@var{localstatedir}/guix/daemon-socket/socket} befindet.
address@hidden table
-
-
address@hidden Anwendungen einrichten
address@hidden Anwendungen einrichten
-
address@hidden Fremddistribution
-Läuft Guix aufgesetzt auf einer GNU/Linux-Distribution außer Guix System —
-einer sogenannten @dfn{Fremddistribution} —, so sind ein paar zusätzliche
-Schritte bei der Einrichtung nötig. Hier finden Sie manche davon.
-
address@hidden Locales
-
address@hidden
address@hidden Locales, nicht auf Guix System
address@hidden LOCPATH
address@hidden GUIX_LOCPATH
-Über Guix installierte Pakete benutzen nicht die Daten zu Regions- und
-Spracheinstellungen (Locales) des Wirtssystems. Stattdessen müssen Sie erst
-eines der Locale-Pakete installieren, die für Guix verfügbar sind, und dann
-den Wert Ihrer Umgebungsvariablen @code{GUIX_LOCPATH} passend festlegen:
-
address@hidden
-$ guix package -i glibc-locales
-$ export GUIX_LOCPATH=$HOME/.guix-profile/lib/locale
address@hidden example
-
-Beachten Sie, dass das Paket @code{glibc-locales} Daten für alle von
address@hidden unterstützten Locales enthält und deswegen um die address@hidden
-wiegt. Alternativ gibt es auch @code{glibc-utf8-locales}, was kleiner, aber
-auf ein paar UTF-8-Locales beschränkt ist.
-
-Die Variable @code{GUIX_LOCPATH} spielt eine ähnliche Rolle wie
address@hidden (siehe @ref{Locale Names, @code{LOCPATH},, libc, The GNU C
-Library Reference Manual}). Es gibt jedoch zwei wichtige Unterschiede:
-
address@hidden
address@hidden
address@hidden wird nur von der libc in Guix beachtet und nicht der von
-Fremddistributionen bereitgestellten libc. Mit @code{GUIX_LOCPATH} können
-Sie daher sicherstellen, dass die Programme der Fremddistribution keine
-inkompatiblen Locale-Daten von Guix laden.
-
address@hidden
-libc hängt an jeden @code{GUIX_LOCPATH}-Eintrag @code{/X.Y} an, wobei
address@hidden die Version von libc ist — z.B.@: @code{2.22}. Sollte Ihr
-Guix-Profil eine Mischung aus Programmen enthalten, die an verschiedene
-libc-Versionen gebunden sind, wird jede nur die Locale-Daten im richtigen
-Format zu laden versuchen.
address@hidden enumerate
-
-Das ist wichtig, weil das Locale-Datenformat verschiedener libc-Versionen
-inkompatibel sein könnte.
-
address@hidden Name Service Switch
-
address@hidden Name Service Switch, glibc
address@hidden NSS (Name Service Switch), glibc
address@hidden nscd (Name Service Caching Daemon)
address@hidden Name Service Caching Daemon (nscd)
-Wenn Sie Guix auf einer Fremddistribution verwenden, @emph{empfehlen wir
-stärkstens}, dass Sie den @dfn{Name Service Cache Daemon} der
-GNU-C-Bibliothek, @command{nscd}, laufen lassen, welcher auf dem Socket
address@hidden/var/run/nscd/socket} lauschen sollte. Wenn Sie das nicht tun, 
könnten
-mit Guix installierte Anwendungen Probleme beim Auflösen von Hostnamen
-(d.h.@: Rechnernamen) oder Benutzerkonten haben, oder sogar abstürzen. Die
-nächsten Absätze erklären warum.
-
address@hidden @file{nsswitch.conf}
-Die GNU-C-Bibliothek implementiert einen @dfn{Name Service Switch} (NSS),
-welcher einen erweiterbaren Mechanismus zur allgemeinen »Namensauflösung«
-darstellt: Hostnamensauflösung, Benutzerkonten und weiteres (siehe @ref{Name 
Service Switch,,, libc, The GNU C Library Reference Manual}).
-
address@hidden Network Information Service (NIS)
address@hidden NIS (Network Information Service)
-Für die Erweiterbarkeit unterstützt der NSS @dfn{Plugins}, welche neue
-Implementierungen zur Namensauflösung bieten: Zum Beispiel ermöglicht das
-Plugin @code{nss-mdns} die Namensauflösung für @code{.local}-Hostnamen, das
-Plugin @code{nis} gestattet die Auflösung von Benutzerkonten über den
-Network Information Service (NIS) und so weiter. Diese zusätzlichen
-»Auflösungsdienste« werden systemweit konfiguriert in
address@hidden/etc/nsswitch.conf} und alle auf dem System laufenden Programme 
halten
-sich an diese Einstellungen (siehe @ref{NSS Configuration File,,, libc, The
-GNU C Reference Manual}).
-
-Wenn sie eine Namensauflösung durchführen — zum Beispiel, indem sie die
address@hidden in C aufrufen — versuchen die Anwendungen als
-Erstes, sich mit dem nscd zu verbinden; ist dies erfolgreich, führt nscd für
-sie die weiteren Namensauflösungen durch. Falls nscd nicht läuft, führen sie
-selbst die Namensauflösungen durch, indem sie die Namensauflösungsdienste in
-ihren eigenen Adressraum laden und ausführen. Diese Namensauflösungsdienste
-— die @file{libnss_*.so}-Dateien — werden mit @code{dlopen} geladen, aber
-sie kommen von der C-Bibliothek des Wirtssystems und nicht von der
-C-Bibliothek, mit der die Anwendung gebunden wurde (also der C-Bibliothek
-von Guix).
-
-Und hier kommt es zum Problem: Wenn die Anwendung mit der C-Bibliothek von
-Guix (etwa glibc 2.24) gebunden wurde und die NSS-Plugins von einer anderen
-C-Bibliothek (etwa @code{libnss_mdns.so} für glibc 2.22) zu laden versucht,
-wird sie vermutlich abstürzen oder die Namensauflösungen werden unerwartet
-fehlschlagen.
-
-Durch das Ausführen von @command{nscd} auf dem System wird, neben anderen
-Vorteilen, dieses Problem der binären Inkompatibilität vermieden, weil diese
address@hidden vom @command{nscd}-Prozess geladen werden, nicht
-in den Anwendungen selbst.
-
address@hidden X11-Schriftarten
-
address@hidden Schriftarten
-Die Mehrheit der grafischen Anwendungen benutzen Fontconfig zum Finden und
-Laden von Schriftarten und für die Darstellung im X11-Client. Im Paket
address@hidden in Guix werden Schriftarten standardmäßig in
address@hidden/.guix-profile} gesucht. Um es grafischen Anwendungen, die mit
-Guix installiert wurden, zu ermöglichen, Schriftarten anzuzeigen, müssen Sie
-die Schriftarten auch mit Guix installieren. Essenzielle Pakete für
-Schriftarten sind unter anderem @code{gs-fonts}, @code{font-dejavu} und
address@hidden
-
-Um auf Chinesisch, Japanisch oder Koreanisch verfassten Text in grafischen
-Anwendungen anzeigen zu können, möchten Sie vielleicht
address@hidden oder @code{font-wqy-zenhei}
-installieren. Ersteres hat mehrere Ausgaben, für jede Sprachfamilie eine
-(siehe @ref{Pakete mit mehreren Ausgaben.}). Zum Beispiel installiert
-folgender Befehl Schriftarten für chinesische Sprachen:
-
address@hidden
-guix package -i font-adobe-source-han-sans:cn
address@hidden example
-
address@hidden @code{xterm}
-Ältere Programme wie @command{xterm} benutzen kein Fontconfig, sondern
-X-Server-seitige Schriftartendarstellung. Solche Programme setzen voraus,
-dass der volle Name einer Schriftart mit XLFD (X Logical Font Description)
-angegeben wird, z.B.@: so:
-
address@hidden
--*-dejavu sans-medium-r-normal-*-*-100-*-*-*-*-*-1
address@hidden example
-
-Um solche vollen Namen für die in Ihrem Guix-Profil installierten
-TrueType-Schriftarten zu verwenden, müssen Sie den Pfad für Schriftarten
-(Font Path) des X-Servers anpassen:
-
address@hidden Note: 'xset' does not accept symlinks so the trick below 
arranges to
address@hidden get at the real directory.  See <https://bugs.gnu.org/30655>.
address@hidden
-xset +fp $(dirname $(readlink -f 
~/.guix-profile/share/fonts/truetype/fonts.dir))
address@hidden example
-
address@hidden @code{xlsfonts}
-Danach können Sie den Befehl @code{xlsfonts} ausführen (aus dem Paket
address@hidden), um sicherzustellen, dass dort Ihre TrueType-Schriftarten
-aufgeführt sind.
-
address@hidden @code{fc-cache}
address@hidden Font-Cache
-Nach der Installation der Schriftarten müssen Sie unter Umständen den
-Schriftarten-Zwischenspeicher (Font-Cache) erneuern, um diese in Anwendungen
-benutzen zu können. Gleiches gilt, wenn mit Guix installierte Anwendungen
-anscheinend keine Schriftarten finden können. Um das Erneuern des
-Font-Caches zu erzwingen, führen Sie @code{fc-cache -f} aus. Der Befehl
address@hidden wird vom Paket @code{fontconfig} angeboten.
-
address@hidden X.509-Zertifikate
-
address@hidden @code{nss-certs}
-Das Paket @code{nss-certs} bietet X.509-Zertifikate, womit Programme die
-Identität von Web-Servern authentifizieren können, auf die über HTTPS
-zugegriffen wird.
-
-Wenn Sie Guix auf einer Fremddistribution verwenden, können Sie dieses Paket
-installieren und die relevanten Umgebungsvariablen festlegen, damit Pakete
-wissen, wo sie Zertifikate finden. Unter @ref{X.509-Zertifikate} stehen
-genaue Informationen.
-
address@hidden Emacs-Pakete
-
address@hidden @code{emacs}
-Wenn Sie mit Guix Pakete für Emacs installieren, werden deren elisp-Dateien
-entweder in @file{$HOME/.guix-profile/share/emacs/site-lisp/} oder in
-Unterverzeichnissen von
address@hidden/.guix-profile/share/emacs/site-lisp/guix.d/}
-gespeichert. Letzteres Verzeichnis gibt es, weil es Tausende von
-Emacs-Paketen gibt und sie alle im selben Verzeichnis zu speichern
-vielleicht nicht verlässlich funktioniert (wegen Namenskonflikten). Daher
-halten wir es für richtig, für jedes Paket ein anderes Verzeichnis zu
-benutzen. Das Emacs-Paketsystem organisiert die Dateistruktur ähnlich (siehe
address@hidden Files,,, emacs, The GNU Emacs Manual}).
-
-Standardmäßig »weiß« Emacs (wenn er mit Guix installiert wurde), wo diese
-Pakete liegen, Sie müssen also nichts selbst konfigurieren. Wenn Sie aber
-aus irgendeinem Grund mit Guix installierte Pakete nicht automatisch laden
-lassen möchten, können Sie Emacs mit der Befehlszeilenoption
address@hidden starten (siehe @ref{Init File,,, emacs, The GNU Emacs
-Manual}).
-
address@hidden GCC-Toolchain
-
address@hidden GCC
address@hidden ld-wrapper
-
-Guix bietet individuelle Compiler-Pakete wie etwa @code{gcc}, aber wenn Sie
-einen vollständigen Satz an Werkzeugen zum Kompilieren und Binden von
-Quellcode brauchen, werden Sie eigentlich das Paket @code{gcc-toolchain}
-haben wollen. Das Paket bietet eine vollständige GCC-Toolchain für die
-Entwicklung mit C/C++, einschließlich GCC selbst, der GNU-C-Bibliothek
-(Header-Dateien und Binärdateien samt Symbolen zur Fehlersuche/Debugging in
-der @code{debug}-Ausgabe), Binutils und einen Wrapper für den Binder/Linker.
-
-Der Zweck des Wrappers ist, die an den Binder übergebenen
-Befehlszeilenoptionen mit @code{-L} und @code{-l} zu überprüfen und jeweils
-passende Argumente mit @code{-rpath} anzufügen, womit dann der echte Binder
-aufgerufen wird. Standardmäßig weigert sich der Binder-Wrapper, mit
-Bibliotheken außerhalb des Stores zu binden, um »Reinheit« zu
-gewährleisten. Das kann aber stören, wenn man die Toolchain benutzt, um mit
-lokalen Bibliotheken zu binden. Um Referenzen auf Bibliotheken außerhalb des
-Stores zu erlauben, müssen Sie die Umgebungsvariable
address@hidden setzen.
-
address@hidden TODO What else?
-
address@hidden 
*********************************************************************
address@hidden Systeminstallation
address@hidden Systeminstallation
-
address@hidden Installieren von Guix System
address@hidden Guix System, Installation
-Dieser Abschnitt beschreibt, wie Sie »Guix System« auf einer Maschine
-installieren. Guix kann auch als Paketverwaltungswerkzeug ein bestehendes
-GNU/Linux-System ergänzen, mehr dazu finden Sie im Abschnitt
address@hidden
-
address@hidden
address@hidden Anmerkung
address@hidden This paragraph is for people reading this from tty2 of the
address@hidden installation image.
-Sie lesen diese Dokumentation mit einem Info-Betrachter. Details, wie Sie
-ihn bedienen, erfahren Sie, indem Sie die Eingabetaste (auch »Return« oder
-»Enter« genannt) auf folgender Verknüpfung drücken: @ref{Top, Info reader,,
-info-stnd, Stand-alone GNU Info}. Drücken Sie danach @kbd{l}, um hierher
-zurückzukommen.
-
-Führen Sie alternativ @command{info info} auf einer anderen Konsole (tty)
-aus, um dieses Handbuch offen zu lassen.
address@hidden quotation
address@hidden ifinfo
-
address@hidden
-* Einschränkungen::         Was Sie erwarten dürfen.
-* Hardware-Überlegungen::   Unterstützte Hardware.
-* Installation von USB-Stick oder DVD::  Das Installationsmedium 
-                                           vorbereiten.
-* Vor der Installation::     Netzwerkanbindung, Partitionierung etc.
-* Geführte grafische Installation::  Leichte grafische Installation.
-* Manuelle Installation::    Manuelle Installation für Zauberer.
-* Nach der Systeminstallation::  Wenn die Installation erfolgreich war.
-* Guix in einer VM installieren::  Ein »Guix System«-Spielplatz.
-* Ein Abbild zur Installation erstellen::  Wie ein solches entsteht.
address@hidden menu
-
address@hidden Einschränkungen
address@hidden Einschränkungen
-
-We consider Guix System to be ready for a wide range of ``desktop'' and
-server use cases.  The reliability guarantees it provides---transactional
-upgrades and rollbacks, reproducibility---make it a solid foundation.
-
-Nevertheless, before you proceed with the installation, be aware of the
-following noteworthy limitations applicable to version @value{VERSION}:
-
address@hidden
address@hidden
-Der Logical Volume Manager (LVM) wird nicht unterstützt.
-
address@hidden
-Immer mehr Systemdienste sind verfügbar (siehe @ref{Dienste}), aber manche
-könnten noch fehlen.
-
address@hidden
-GNOME, Xfce, LXDE, and Enlightenment are available (@pxref{Desktop-Dienste}), 
as well as a number of X11 window managers.  However, KDE is
-currently missing.
address@hidden itemize
-
-More than a disclaimer, this is an invitation to report issues (and success
-stories!), and to join us in improving it.  @xref{Mitwirken}, for more
-info.
-
-
address@hidden Hardware-Überlegungen
address@hidden Hardware-Überlegungen
-
address@hidden Hardwareunterstützung von Guix System
address@hidden legt den Fokus darauf, die Freiheit des Nutzers auf seinem
-Rechner zu respektieren. Es baut auf Linux-libre als Kernel auf, wodurch nur
-Hardware unterstützt wird, für die Treiber und Firmware existieren, die
-freie Software sind. Heutzutage wird ein großer Teil der handelsüblichen
-Hardware von GNU/Linux-libre unterstützt — von Tastaturen bis hin zu
-Grafikkarten, Scannern und Ethernet-Adaptern. Leider gibt es noch Bereiche,
-wo die Hardwareanbieter ihren Nutzern die Kontrolle über ihren eigenen
-Rechner verweigern. Solche Hardware wird von Guix System nicht unterstützt.
-
address@hidden WLAN, Hardware-Unterstützung
-One of the main areas where free drivers or firmware are lacking is WiFi
-devices.  WiFi devices known to work include those using Atheros chips
-(AR9271 and AR7010), which corresponds to the @code{ath9k} Linux-libre
-driver, and those using Broadcom/AirForce chips (BCM43xx with Wireless-Core
-Revision 5), which corresponds to the @code{b43-open} Linux-libre driver.
-Free firmware exists for both and is available out-of-the-box on Guix
-System, as part of @code{%base-firmware} (@pxref{»operating-system«-Referenz,
address@hidden).
-
address@hidden RYF, Respects Your Freedom
-Die @uref{https://www.fsf.org/, Free Software Foundation} betreibt
address@hidden://www.fsf.org/ryf, @dfn{Respects Your Freedom}} (RYF), ein
-Zertifizierungsprogramm für Hardware-Produkte, die Ihre Freiheit und
-Privatsphäre respektieren und sicherstellen, dass Sie die Kontrolle über Ihr
-Gerät haben. Wir ermutigen Sie dazu, die Liste RYF-zertifizierter Geräte zu
-beachten.
-
-Eine weitere nützliche Ressource ist die Website
address@hidden://www.h-node.org/, H-Node}. Dort steht ein Katalog von
-Hardware-Geräten mit Informationen darüber, wie gut sie von GNU/Linux
-unterstützt werden.
-
-
address@hidden Installation von USB-Stick oder DVD
address@hidden Installation von USB-Stick oder DVD
-
-Sie können ein ISO-9660-Installationsabbild von
address@hidden://alpha.gnu.org/gnu/guix/address@hidden@var{System}.iso.xz}
-herunterladen, dass Sie auf einen USB-Stick aufspielen oder auf eine DVD
-brennen können, wobei Sie für @var{System} eines der folgenden schreiben
-müssen:
-
address@hidden @code
address@hidden x86_64-linux
-für ein GNU/Linux-System auf Intel/AMD-kompatiblen 64-Bit-Prozessoren,
-
address@hidden i686-linux
-für ein 32-Bit-GNU/Linux-System auf Intel-kompatiblen Prozessoren.
address@hidden table
-
address@hidden start duplication of authentication part from ``Binary 
Installation''
-Laden Sie auch die entsprechende @file{.sig}-Datei herunter und verifizieren
-Sie damit die Authentizität Ihres Abbilds, indem Sie diese Befehle eingeben:
-
address@hidden
-$ wget https://alpha.gnu.org/gnu/guix/address@hidden@var{System}.iso.xz.sig
-$ gpg --verify address@hidden@var{System}.iso.xz.sig
address@hidden example
-
-Falls dieser Befehl fehlschlägt, weil Sie nicht über den nötigen
-öffentlichen Schlüssel verfügen, können Sie ihn mit diesem Befehl
-importieren:
-
address@hidden
-$ gpg --keyserver @value{KEY-SERVER} \
-      --recv-keys @value{OPENPGP-SIGNING-KEY-ID}
address@hidden example
-
address@hidden
address@hidden end duplication
-und den Befehl @code{gpg --verify} erneut ausführen.
-
-Dieses Abbild enthält die Werkzeuge, die Sie zur Installation brauchen. Es
-ist dafür gedacht,  @emph{so wie es ist} auf einen hinreichend großen
-USB-Stick oder eine DVD kopiert zu werden.
-
address@hidden Kopieren auf einen USB-Stick
-
-Um das Abbild auf einen USB-Stick zu kopieren, führen Sie folgende Schritte
-durch:
-
address@hidden
address@hidden
-Entpacken Sie das Abbild mit dem @command{xz}-Befehl:
-
address@hidden
-xz -d address@hidden@var{System}.iso.xz
address@hidden example
-
address@hidden
-Stecken Sie einen USB-Stick in Ihren Rechner ein, der mindestens address@hidden
-groß ist, und bestimmen Sie seinen Gerätenamen. Ist der Gerätename des
-USB-Sticks @file{/dev/sdX}, dann kopieren Sie das Abbild mit dem Befehl:
-
address@hidden
-dd address@hidden@var{System}.iso of=/dev/sdX
-sync
address@hidden example
-
-Sie benötigen in der Regel Administratorrechte, um auf @file{/dev/sdX}
-zuzugreifen.
address@hidden enumerate
-
address@hidden Auf eine DVD brennen
-
-Um das Abbild auf eine DVD zu kopieren, führen Sie diese Schritte durch:
-
address@hidden
address@hidden
-Entpacken Sie das Abbild mit dem @command{xz}-Befehl:
-
address@hidden
-xz -d address@hidden@var{System}.iso.xz
address@hidden example
-
address@hidden
-Legen Sie eine unbespielte DVD in Ihren Rechner ein und bestimmen Sie ihren
-Gerätenamen. Angenommen der Name des DVD-Laufwerks ist @file{/dev/srX},
-kopieren Sie das Abbild mit:
-
address@hidden
-growisofs -dvd-compat -Z /dev/address@hidden@var{System}.iso
address@hidden example
-
-Der Zugriff auf @file{/dev/srX} setzt in der Regel Administratorrechte
-voraus.
address@hidden enumerate
-
address@hidden Das System starten
-
-Sobald das erledigt ist, sollten Sie Ihr System neu starten und es vom
-USB-Stick oder der DVD hochfahren (»booten«) können. Dazu müssen Sie
-wahrscheinlich beim Starten des Rechners in das BIOS- oder UEFI-Boot-Menü
-gehen, von wo aus Sie auswählen können, dass vom USB-Stick gebootet werden
-soll.
-
-Lesen Sie den Abschnitt @ref{Guix in einer VM installieren}, wenn Sie Guix 
System
-stattdessen in einer virtuellen Maschine (VM) installieren möchten.
-
-
address@hidden Vor der Installation
address@hidden Vor der Installation
-
-Wenn Sie Ihren Rechner gebootet haben, können Sie sich vom grafischen
-Installationsprogramm durch den Installationsvorgang führen lassen, was den
-Einstieg leicht macht (siehe @ref{Geführte grafische Installation}). 
Alternativ können Sie sich auch für einen »manuellen«
-Installationsvorgang entscheiden, wenn Sie bereits mit GNU/Linux vertraut
-sind und mehr Kontrolle haben möchten, als sie das grafische
-Installationsprogramm bietet (siehe @ref{Manuelle Installation}).
-
-Das grafische Installationsprogramm steht Ihnen auf TTY1 zur Verfügung. Auf
-den TTYs 3 bis 6 können Sie vor sich eine Eingabeaufforderung für den
-Administratornutzer »root« sehen, nachdem Sie @kbd{strg-alt-f3},
address@hidden usw.@: gedrückt haben. TTY2 zeigt Ihnen dieses Handbuch,
-das Sie über die Tastenkombination @kbd{strg-alt-f2} erreichen. In dieser
-Dokumentation können Sie mit den Steuerungsbefehlen Ihres Info-Betrachters
-blättern (siehe @ref{Top,,, info-stnd, Stand-alone GNU Info}). Auf dem
-Installationssystem läuft der GPM-Maus-Daemon, wodurch Sie Text mit der
-linken Maustaste markieren und ihn mit der mittleren Maustaste einfügen
-können.
-
address@hidden Anmerkung
-Für die Installation benötigen Sie Zugang zum Internet, damit fehlende
-Abhängigkeiten Ihrer Systemkonfiguration heruntergeladen werden können. Im
-Abschnitt »Netzwerkkonfiguration« weiter unten finden Sie mehr Informationen
-dazu.
address@hidden quotation
-
address@hidden Geführte grafische Installation
address@hidden Geführte grafische Installation
-
-Das grafische Installationsprogramm ist mit einer textbasierten
-Benutzeroberfläche ausgestattet. Es kann Sie mit Dialogfeldern durch die
-Schritte führen, mit denen Sie address@hidden System installieren.
-
-Die ersten Dialogfelder ermöglichen es Ihnen, das System aufzusetzen, wie
-Sie es bei der Installation benutzen: Sie können die Sprache und
-Tastaturbelegung festlegen und die Netzwerkanbindung einrichten, die während
-der Installation benutzt wird. Das folgende Bild zeigt den Dialog zur
-Einrichtung der Netzwerkanbindung.
-
address@hidden/installer-network,5in,, Netzwerkanbindung einrichten mit dem
-grafischen Installationsprogramm}
-
-Mit den danach kommenden Schritten können Sie Ihre Festplatte
-partitionieren, wie im folgenden Bild gezeigt, und auswählen, ob Ihre
-Dateisysteme verschlüsselt werden sollen oder nicht. Sie können Ihren
-Rechnernamen und das Administratorpasswort (das »root«-Passwort) festlegen
-und ein Benutzerkonto einrichten, und noch mehr.
-
address@hidden/installer-partitions,5in,, Partitionieren mit dem grafischen
-Installationsprogramm}
-
-Beachten Sie, dass Sie mit dem Installationsprogramm jederzeit den aktuellen
-Installationsschritt verlassen und zu einem vorherigen Schritt zurückkehren
-können, wie Sie im folgenden Bild sehen können.
-
address@hidden/installer-resume,5in,, Mit einem Installationsschritt
-fortfahren}
-
-Sobald Sie fertig sind, erzeugt das Installationsprogramm eine
-Betriebssystemkonfiguration und zeigt sie an (siehe @ref{Das 
Konfigurationssystem nutzen}). Zu diesem Zeitpunkt können Sie auf »OK« drücken 
und
-die Installation wird losgehen. Ist sie erfolgreich, können Sie neu starten
-und Ihr neues System genießen. Siehe @ref{Nach der Systeminstallation} für
-Informationen, wie es weitergeht!
-
-
address@hidden Manuelle Installation
address@hidden Manuelle Installation
-
-Dieser Abschnitt beschreibt, wie Sie address@hidden System auf manuelle Weise
-auf Ihrer Maschine installieren. Diese Alternative setzt voraus, dass Sie
-bereits mit GNU/Linux, der Shell und üblichen Administrationswerkzeugen
-vertraut sind. Wenn Sie glauben, dass das nichts für Sie ist, dann möchten
-Sie vielleicht das geführte grafische Installationsprogramm benutzen (siehe
address@hidden grafische Installation}).
-
-Das Installationssystem macht Eingabeaufforderungen auf den TTYs 3 bis 6
-zugänglich, auf denen Sie als Administratornutzer Befehle eingeben können;
-Sie erreichen diese, indem Sie die Tastenkombinationen @kbd{strg-alt-f3},
address@hidden und so weiter benutzen. Es enthält viele übliche
-Werkzeuge, mit denen Sie diese Aufgabe bewältigen können. Da es sich auch um
-ein vollständiges »Guix System«-System handelt, können Sie aber auch andere
-Pakete mit dem Befehl @command{guix package} nachinstallieren, wenn Sie sie
-brauchen (siehe @ref{Aufruf von guix package}).
-
address@hidden
-* Tastaturbelegung und Netzwerkanbindung und Partitionierung::  Erstes 
-                                                                  Einrichten.
-* Fortfahren mit der Installation::  Installieren.
address@hidden menu
-
address@hidden Tastaturbelegung und Netzwerkanbindung und Partitionierung
address@hidden Tastaturbelegung, Netzwerkanbindung und Partitionierung
-
-Bevor Sie das System installieren können, wollen Sie vielleicht die
-Tastaturbelegung ändern, eine Netzwerkverbindung herstellen und die
-Zielfestplatte partitionieren. Dieser Abschnitt wird Sie durch diese
-Schritte führen.
-
address@hidden Tastaturbelegung
-
address@hidden Tastaturbelegung
-Das Installationsabbild verwendet die US-amerikanische
-QWERTY-Tastaturbelegung. Wenn Sie dies ändern möchten, können Sie den
address@hidden benutzen. Mit folgendem Befehl würden Sie zum
-Beispiel die Dvorak-Tastaturbelegung auswählen:
-
address@hidden
-loadkeys dvorak
address@hidden example
-
-Schauen Sie sich an, welche Dateien im Verzeichnis
address@hidden/run/current-system/profile/share/keymaps} stehen, um eine Liste
-verfügbarer Tastaturbelegungen zu sehen. Wenn Sie mehr Informationen
-brauchen, führen Sie @command{man loadkeys} aus.
-
address@hidden Netzwerkkonfiguration
-
-Führen Sie folgenden Befehl aus, um zu sehen, wie Ihre
-Netzwerkschnittstellen benannt sind:
-
address@hidden
-ifconfig -a
address@hidden example
-
address@hidden
address@hidden oder mit dem GNU/Linux-eigenen @command{ip}-Befehl:
-
address@hidden
-ip a
address@hidden example
-
address@hidden 
http://cgit.freedesktop.org/systemd/systemd/tree/src/udev/udev-builtin-net_id.c#n20
-Der Name kabelgebundener Schnittstellen (engl. Interfaces) beginnt mit dem
-Buchstaben @samp{e}, zum Beispiel heißt die dem ersten fest eingebauten
-Ethernet-Adapter entsprechende Schnittstelle @samp{eno1}. Drahtlose
-Schnittstellen werden mit einem Namen bezeichnet, der mit dem Buchstaben
address@hidden beginnt, etwa @samp{w1p2s0}.
-
address@hidden @asis
address@hidden Kabelverbindung
-Um ein kabelgebundenes Netzwerk einzurichten, führen Sie den folgenden
-Befehl aus, wobei Sie statt @var{Schnittstelle} den Namen der
-kabelgebundenen Schnittstelle eintippen, die Sie benutzen möchten.
-
address@hidden
-ifconfig @var{Schnittstelle} up
address@hidden example
-
address@hidden Drahtlose Verbindung
address@hidden WLAN
address@hidden WiFi
-Um Drahtlosnetzwerke einzurichten, können Sie eine Konfigurationsdatei für
-das Konfigurationswerkzeug des @command{wpa_supplicant} schreiben (wo Sie
-sie speichern, ist nicht wichtig), indem Sie eines der verfügbaren
-Textbearbeitungsprogramme wie etwa @command{nano} benutzen:
-
address@hidden
-nano wpa_supplicant.conf
address@hidden example
-
-Zum Beispiel können Sie die folgende Formulierung in der Datei speichern,
-die für viele Drahtlosnetzwerke funktioniert, sofern Sie die richtige SSID
-und Passphrase für das Netzwerk eingeben, mit dem Sie sich verbinden
-möchten:
-
address@hidden
address@hidden
-  ssid="@var{meine-ssid}"
-  key_mgmt=WPA-PSK
-  psk="geheime Passphrase des Netzwerks"
address@hidden
address@hidden example
-
-Starten Sie den Dienst für Drahtlosnetzwerke und lassen Sie ihn im
-Hintergrund laufen, indem Sie folgenden Befehl eintippen (ersetzen Sie dabei
address@hidden durch den Namen der Netzwerkschnittstelle, die Sie
-benutzen möchten):
-
address@hidden
-wpa_supplicant -c wpa_supplicant.conf -i @var{Schnittstelle} -B
address@hidden example
-
-Führen Sie @command{man wpa_supplicant} aus, um mehr Informationen zu
-erhalten.
address@hidden table
-
address@hidden DHCP
-Zu diesem Zeitpunkt müssen Sie sich eine IP-Adresse beschaffen. Auf einem
-Netzwerk, wo IP-Adressen automatisch @i{via} DHCP zugewiesen werden, können
-Sie das hier ausführen:
-
address@hidden
-dhclient -v @var{Schnittstelle}
address@hidden example
-
-Versuchen Sie, einen Server zu pingen, um zu prüfen, ob sie mit dem Internet
-verbunden sind und alles richtig funktioniert:
-
address@hidden
-ping -c 3 gnu.org
address@hidden example
-
-Einen Internetzugang herzustellen, ist in jedem Fall nötig, weil das Abbild
-nicht alle Software und Werkzeuge enthält, die nötig sein könnten.
-
address@hidden Über SSH installieren
-Wenn Sie möchten, können Sie die weitere Installation auch per Fernwartung
-durchführen, indem Sie einen SSH-Server starten:
-
address@hidden
-herd start ssh-daemon
address@hidden example
-
-Vergewissern Sie sich vorher, dass Sie entweder ein Passwort mit
address@hidden festgelegt haben, oder dass Sie für OpenSSH eine
-Authentifizierung über öffentliche Schlüssel eingerichtet haben, bevor Sie
-sich anmelden.
-
address@hidden Plattenpartitionierung
-
-Sofern nicht bereits geschehen, ist der nächste Schritt, zu partitionieren
-und dann die Zielpartition zu formatieren.
-
-Auf dem Installationsabbild sind mehrere Partitionierungswerkzeuge zu
-finden, einschließlich (siehe @ref{Overview,,, parted, GNU Parted User
-Manual}), @command{fdisk} und @command{cfdisk}. Starten Sie eines davon und
-partitionieren Sie Ihre Festplatte oder sonstigen Massenspeicher:
-
address@hidden
-cfdisk
address@hidden example
-
-Wenn Ihre Platte mit einer »GUID Partition Table« (GPT) formatiert ist, und
-Sie vorhaben, die BIOS-basierte Variante des GRUB-Bootloaders  zu
-installieren (was der Vorgabe entspricht), stellen Sie sicher, dass eine
-Partition als BIOS-Boot-Partition ausgewiesen ist (siehe @ref{BIOS
-installation,,, grub, GNU GRUB manual}).
-
address@hidden EFI, Installation
address@hidden UEFI, Installation
address@hidden ESP, EFI-Systempartition
-Falls Sie stattdessen einen EFI-basierten GRUB installieren möchten, muss
-auf der Platte eine FAT32-formatierte @dfn{EFI-Systempartition} (ESP)
-vorhanden sein. Diese Partition kann unter dem Pfad @file{/boot/efi}
-eingebunden (»gemountet«) werden und die @code{esp}-Flag der Partition muss
-gesetzt sein. Dazu würden Sie beispielsweise in @command{parted} eintippen:
-
address@hidden
-parted /dev/sda set 1 esp on
address@hidden example
-
address@hidden Anmerkung
address@hidden grub-bootloader
address@hidden grub-efi-bootloader
-Falls Sie nicht wissen, ob Sie einen EFI- oder BIOS-basierten GRUB
-installieren möchten: Wenn bei Ihnen das Verzeichnis
address@hidden/sys/firmware/efi} im Dateisystem existiert, möchten Sie 
vermutlich
-eine EFI-Installation durchführen, wozu Sie in Ihrer Konfiguration
address@hidden benutzen. Ansonsten sollten Sie den
-BIOS-basierten GRUB benutzen, der mit @code{grub-bootloader} bezeichnet
-wird.  Siehe @ref{Bootloader-Konfiguration}, wenn Sie mehr Informationen
-über Bootloader brauchen.
address@hidden quotation
-
-Sobald Sie die Platte fertig partitioniert haben, auf die Sie installieren
-möchten, müssen Sie ein Dateisystem auf Ihrer oder Ihren für Guix System
-vorgesehenen Partition(en) address@hidden unterstützt Guix System
-nur die Dateisystemtypen ext4 und btrfs. Insbesondere funktioniert
-Guix-Code, der Dateisystem-UUIDs und -Labels ausliest, nur auf diesen
-Dateisystemtypen.}. Wenn Sie eine ESP brauchen und dafür die Partition
address@hidden/dev/sda1} vorgesehen haben, müssen Sie diesen Befehl ausführen:
-
address@hidden
-mkfs.fat -F32 /dev/sda1
address@hidden example
-
-Geben Sie Ihren Dateisystemen auch besser eine Bezeichnung (»Label«), damit
-Sie sie zuverlässig wiedererkennen und später in den
address@hidden darauf Bezug nehmen können (siehe @ref{Dateisysteme}). Dazu 
benutzen Sie typischerweise die Befehlszeilenoption
address@hidden des Befehls @command{mkfs.ext4} oder entsprechende Optionen für
-andere Befehle. Wenn wir also annehmen, dass @file{/dev/sda2} die Partition
-ist, auf der Ihr Wurzeldateisystem (englisch »root«) wohnen soll, können Sie
-dort mit diesem Befehl ein Dateisystem mit der Bezeichnung @code{my-root}
-erstellen:
-
address@hidden
-mkfs.ext4 -L my-root /dev/sda2
address@hidden example
-
address@hidden verschlüsselte Partition
-Falls Sie aber vorhaben, die Partition mit dem Wurzeldateisystem zu
-verschlüsseln, können Sie dazu die Cryptsetup-/LUKS-Werkzeuge verwenden
-(siehe @inlinefmtifelse{html, @uref{https://linux.die.net/man/8/cryptsetup,
address@hidden cryptsetup}}, @code{man cryptsetup}}, um mehr darüber zu
-erfahren). Angenommen Sie wollen die Partition für das Wurzeldateisystem
-verschlüsselt auf @file{/dev/sda2} installieren, dann brauchen Sie eine
-Befehlsfolge ähnlich wie diese:
-
address@hidden
-cryptsetup luksFormat /dev/sda2
-cryptsetup open --type luks /dev/sda2 my-partition
-mkfs.ext4 -L my-root /dev/mapper/my-partition
address@hidden example
-
-Sobald das erledigt ist, binden Sie dieses Dateisystem als Installationsziel
-mit dem Einhängepunkt @file{/mnt} ein, wozu Sie einen Befehl wie hier
-eintippen (auch hier unter der Annahme, dass @code{my-root} die Bezeichnung
-des künftigen Wurzeldateisystems ist):
-
address@hidden
-mount LABEL=my-root /mnt
address@hidden example
-
-Binden Sie auch alle anderen Dateisysteme ein, die Sie auf dem Zielsystem
-benutzen möchten, mit Einhängepunkten relativ zu diesem Pfad. Wenn Sie sich
-zum Beispiel für einen Einhängepunkt @file{/boot/efi} für die
-EFI-Systempartition entschieden haben, binden Sie sie jetzt als
address@hidden/mnt/boot/efi} ein, damit @code{guix system init} sie später 
findet.
-
-Wenn Sie zudem auch vorhaben, eine oder mehrere Swap-Partitionen zu benutzen
-(siehe @ref{Memory Concepts, swap space,, libc, The GNU C Library Reference
-Manual}), initialisieren Sie diese nun mit @command{mkswap}. Angenommen Sie
-haben eine Swap-Partition auf @file{/dev/sda3}, dann würde der Befehl so
-lauten:
-
address@hidden
-mkswap /dev/sda3
-swapon /dev/sda3
address@hidden example
-
-Alternativ können Sie eine Swap-Datei benutzen. Angenommen, Sie wollten die
-Datei @file{/swapdatei} im neuen System als eine Swapdatei benutzen, dann
-müssten Sie Folgendes address@hidden Beispiel wird auf vielen
-Arten von Dateisystemen funktionieren (z.B.@: auf ext4). Auf Dateisystemen
-mit Copy-on-Write (wie z.B.@: btrfs) können sich die nötigen Schritte
-unterscheiden. Details finden Sie in der Dokumentation auf den
-Handbuchseiten von @command{mkswap} und @command{swapon}.}:
-
address@hidden
-# Das bedeutet 10 GiB Swapspeicher. "count" anpassen zum ändern.
-dd if=/dev/zero of=/mnt/swapfile bs=1MiB count=10240
-# Zur Sicherheit darf nur der Administrator lesen und schreiben.
-chmod 600 /mnt/swapfile
-mkswap /mnt/swapfile
-swapon /mnt/swapfile
address@hidden example
-
-Bedenken Sie, dass, wenn Sie die Partition für das Wurzeldateisystem
-(»root«) verschlüsselt und eine Swap-Datei in diesem Dateisystem wie oben
-beschrieben erstellt haben, die Verschlüsselung auch die Swap-Datei schützt,
-genau wie jede andere Datei in dem Dateisystem.
-
address@hidden Fortfahren mit der Installation
address@hidden Fortfahren mit der Installation
-
-Wenn die Partitionen des Installationsziels bereit sind und dessen
-Wurzeldateisystem unter @file{/mnt} eingebunden wurde, kann es losgehen mit
-der Installation. Führen Sie zuerst aus:
-
address@hidden
-herd start cow-store /mnt
address@hidden example
-
-Dadurch wird @file{/gnu/store} copy-on-write, d.h.@: dorthin von Guix
-erstellte Pakete werden in ihrer Installationsphase auf dem unter
address@hidden/mnt} befindlichen Zieldateisystem gespeichert, statt den
-Arbeitsspeicher auszulasten. Das ist nötig, weil die erste Phase des Befehls
address@hidden system init} (siehe unten) viele Dateien nach
address@hidden/gnu/store} herunterlädt oder sie erstellt, Änderungen am
address@hidden/gnu/store} aber bis dahin wie das übrige Installationssystem nur 
im
-Arbeitsspeicher gelagert werden konnten.
-
-Als Nächstes müssen Sie eine Datei bearbeiten und dort eine Deklaration des
-Betriebssystems, das Sie installieren möchten, hineinschreiben. Zu diesem
-Zweck sind im Installationssystem drei Texteditoren enthalten. Wir
-empfehlen, dass Sie GNU nano benutzen (siehe @ref{Top,,, nano, GNU nano
-Manual}), welcher Syntax und zueinander gehörende Klammern hervorheben
-kann. Andere mitgelieferte Texteditoren, die Sie benutzen können, sind GNU
-Zile (ein Emacs-Klon) und nvi (ein Klon des ursprünglichen
address@hidden von BSD). Wir empfehlen sehr, dass Sie diese Datei im
-Zieldateisystem der Installation speichern, etwa als
address@hidden/mnt/etc/config.scm}, weil Sie Ihre Konfigurationsdatei im frisch
-installierten System noch brauchen werden.
-
-Der Abschnitt @ref{Das Konfigurationssystem nutzen} gibt einen Überblick über
-die Konfigurationsdatei. Die in dem Abschnitt diskutierten
-Beispielkonfigurationen sind im Installationsabbild im Verzeichnis
address@hidden/etc/configuration} zu finden. Um also mit einer 
Systemkonfiguration
-anzufangen, die einen grafischen »Display-Server« (eine
-»Desktop«-Arbeitsumgebung) bietet, könnten Sie so etwas ausführen:
-
address@hidden
-# mkdir /mnt/etc
-# cp /etc/configuration/desktop.scm /mnt/etc/config.scm
-# nano /mnt/etc/config.scm
address@hidden example
-
-Achten Sie darauf, was in Ihrer Konfigurationsdatei steht, und besonders auf
-Folgendes:
-
address@hidden
address@hidden
-Ihre @code{bootloader-configuration}-Form muss sich auf dasjenige Ziel
-beziehen, auf das Sie GRUB installieren möchten. Sie sollte genau dann
address@hidden nennen, wenn Sie GRUB im alten BIOS-Modus
-installieren, und für neuere UEFI-Systeme sollten Sie
address@hidden nennen. Bei Altsystemen bezeichnet das
address@hidden ein Gerät wie @code{/dev/sda}, bei UEFI-Systemen
-bezeichnet es den Pfad zu einer eingebundenen EFI-Partition wie
address@hidden/boot/efi}; stellen Sie sicher, dass die ESP tatsächlich dort
-eingebunden ist und ein @code{file-system}-Eintrag dafür in Ihrer
-Konfiguration festgelegt wurde.
-
address@hidden
-Dateisystembezeichnungen müssen mit den jeweiligen @code{device}-Feldern in
-Ihrer @code{file-system}-Konfiguration übereinstimmen, sofern Sie in Ihrer
address@hidden die Prozedur @code{file-system-label} für
-ihre @code{device}-Felder benutzen.
-
address@hidden
-Gibt es verschlüsselte Partitionen oder RAID-Partitionen, dann müssen sie im
address@hidden genannt werden (siehe @ref{Zugeordnete Geräte}).
address@hidden itemize
-
-Wenn Sie damit fertig sind, Ihre Konfigurationsdatei vorzubereiten, können
-Sie das neue System initialisieren (denken Sie daran, dass zukünftige
-Wurzeldateisystem muss unter @file{/mnt} wie bereits beschrieben eingebunden
-sein):
-
address@hidden
-guix system init /mnt/etc/config.scm /mnt
address@hidden example
-
address@hidden
-Dies kopiert alle notwendigen Dateien und installiert GRUB auf
address@hidden/dev/sdX}, sofern Sie nicht noch die Befehlszeilenoption
address@hidden benutzen. Weitere Informationen finden Sie im
-Abschnitt @ref{Aufruf von guix system}. Der Befehl kann das Herunterladen oder
-Erstellen fehlender Softwarepakete auslösen, was einige Zeit in Anspruch
-nehmen kann.
-
-Sobald der Befehl erfolgreich — hoffentlich! — durchgelaufen ist, können Sie
-mit dem Befehl @command{reboot} das neue System booten lassen. Der
-Administratornutzer @code{root} hat im neuen System zunächst ein leeres
-Passwort, und Passwörter der anderen Nutzer müssen Sie später setzen, indem
-Sie den Befehl @command{passwd} als @code{root} ausführen, außer Ihre
-Konfiguration enthält schon Passwörter (siehe @ref{user-account-password,
-user account passwords}). Siehe @ref{Nach der Systeminstallation} für
-Informationen, wie es weiter geht!
-
-
address@hidden Nach der Systeminstallation
address@hidden Nach der Systeminstallation
-
-Sie haben es geschafft: Sie haben Guix System erfolgreich gebootet! Von
-jetzt an können Sie Guix System aktualisieren, wann Sie möchten, indem Sie
-zum Beispiel das hier ausführen:
-
address@hidden
-guix pull
-sudo guix system reconfigure /etc/config.scm
address@hidden example
-
address@hidden
-Dadurch wird eine neue Systemgeneration aus den neuesten Paketen und
-Diensten erstellt (siehe @ref{Aufruf von guix system}). Wir empfehlen, diese
-Schritte regelmäßig zu wiederholen, damit Ihr System die aktuellen
-Sicherheitsaktualisierungen benutzt (siehe @ref{Sicherheitsaktualisierungen}).
-
address@hidden See 
<https://lists.gnu.org/archive/html/guix-devel/2019-01/msg00268.html>.
address@hidden Anmerkung
address@hidden sudo, Wirkung auf @command{guix pull}
-Beachten Sie, dass bei Nutzung von @command{sudo guix} der
address@hidden des aktiven Benutzers ausgeführt wird und @emph{nicht}
-der des Administratornutzers »root«, weil @command{sudo} die
-Umgebungsvariable @code{PATH} unverändert lässt. Um ausdrücklich das
address@hidden des Administrators aufzurufen, müssen Sie
address@hidden -i guix @dots{}} eintippen.
address@hidden quotation
-
-Besuchen Sie uns auf @code{#guix} auf dem Freenode-IRC-Netzwerk oder auf der
-Mailing-Liste @file{guix-devel@@gnu.org}, um uns Rückmeldung zu geben!
-
-
address@hidden Guix in einer VM installieren
address@hidden Guix in einer virtuellen Maschine installieren
-
address@hidden virtuelle Maschine, Guix System installieren
address@hidden Virtual Private Server (VPS)
address@hidden VPS (Virtual Private Server)
-Wenn Sie Guix System auf einer virtuellen Maschine (VM) oder einem »Virtual
-Private Server« (VPS) statt auf Ihrer echten Maschine installieren möchten,
-ist dieser Abschnitt hier richtig für Sie.
-
-Um eine virtuelle Maschine für @uref{http://qemu.org/,QEMU} aufzusetzen, mit
-der Sie Guix System in ein »Disk-Image« installieren können (also in eine
-Datei mit einem Abbild eines Plattenspeichers), gehen Sie so vor:
-
address@hidden
address@hidden
-Zunächst laden Sie das Installationsabbild des Guix-Systems wie zuvor
-beschrieben herunter und entpacken es (siehe @ref{Installation von USB-Stick 
oder DVD}).
-
address@hidden
-Legen Sie nun ein Disk-Image an, das das System nach der Installation
-enthalten soll. Um ein qcow2-formatiertes Disk-Image zu erstellen, benutzen
-Sie den Befehl @command{qemu-img}:
-
address@hidden
-qemu-img create -f qcow2 guixsd.img 50G
address@hidden example
-
-Die Datei, die Sie herausbekommen, wird wesentlich kleiner als 50 GB sein
-(typischerweise kleiner als 1 MB), vergrößert sich aber, wenn der
-virtualisierte Speicher gefüllt wird.
-
address@hidden
-Starten Sie das USB-Installationsabbild auf einer virtuellen Maschine:
-
address@hidden
-qemu-system-x86_64 -m 1024 -smp 1 \
-  -net user -net nic,model=virtio -boot menu=on \
-  -drive address@hidden@var{System}.iso \
-  -drive file=guixsd.img
address@hidden example
-
-Halten Sie obige Reihenfolge der @option{-drive}-Befehlszeilenoptionen für
-die Laufwerke ein.
-
-Drücken Sie auf der Konsole der virtuellen Maschine schnell die
address@hidden, um ins Boot-Menü zu gelangen. Drücken Sie dort erst die
-Taste @kbd{2} und dann die Eingabetaste @kbd{RET}, um Ihre Auswahl zu
-bestätigen.
-
address@hidden
-Sie sind nun in der virtuellen Maschine als Administratornutzer @code{root}
-angemeldet und können mit der Installation wie gewohnt fortfahren. Folgen
-Sie der Anleitung im Abschnitt @ref{Vor der Installation}.
address@hidden enumerate
-
-Wurde die Installation abgeschlossen, können Sie das System starten, das
-sich nun als Abbild in der Datei @file{guixsd.img} befindet. Der Abschnitt
address@hidden in einer VM starten} erklärt, wie Sie das tun können.
-
address@hidden Ein Abbild zur Installation erstellen
address@hidden Ein Abbild zur Installation erstellen
-
address@hidden Installationsabbild
-Das oben beschriebene Installationsabbild wurde mit dem Befehl @command{guix
-system} erstellt, genauer gesagt mit:
-
address@hidden
-guix system disk-image --file-system-type=iso9660 \
-  gnu/system/install.scm
address@hidden example
-
-Die Datei @file{gnu/system/install.scm} finden Sie im Quellbaum von
-Guix. Schauen Sie sich die Datei und auch den Abschnitt @ref{Aufruf von guix 
system} an, um mehr Informationen über das Installationsabbild zu erhalten.
-
address@hidden Abbild zur Installation für ARM-Rechner erstellen
-
-Viele ARM-Chips funktionieren nur mit ihrer eigenen speziellen Variante des
address@hidden://www.denx.de/wiki/U-Boot/, U-Boot}-Bootloaders.
-
-Wenn Sie ein Disk-Image erstellen und der Bootloader nicht anderweitig schon
-installiert ist (auf einem anderen Laufwerk), ist es ratsam, ein Disk-Image
-zu erstellen, was den Bootloader enthält, mit dem Befehl:
-
address@hidden
-guix system disk-image --system=armhf-linux -e '((@@ (gnu system install) 
os-with-u-boot) (@@ (gnu system install) installation-os) 
"A20-OLinuXino-Lime2")'
address@hidden example
-
address@hidden ist der Name des Chips. Wenn Sie einen ungültigen
-Namen eingeben, wird eine Liste möglicher Chip-Namen ausgegeben.
-
address@hidden 
*********************************************************************
address@hidden Paketverwaltung
address@hidden Paketverwaltung
-
address@hidden Pakete
-Der Zweck von GNU Guix ist, Benutzern die leichte Installation,
-Aktualisierung und Entfernung von Software-Paketen zu ermöglichen, ohne dass
-sie ihre Erstellungsprozeduren oder Abhängigkeiten kennen müssen. Guix kann
-natürlich noch mehr als diese offensichtlichen Funktionalitäten.
-
-Dieses Kapitel beschreibt die Hauptfunktionalitäten von Guix, sowie die von
-Guix angebotenen Paketverwaltungswerkzeuge. Zusätzlich von den im Folgenden
-beschriebenen Befehlszeilen-Benutzerschnittstellen (siehe @ref{Aufruf von guix 
package, @code{guix package}}) können Sie auch mit der
-Emacs-Guix-Schnittstelle (siehe @ref{Top,,, emacs-guix, The Emacs-Guix
-Reference Manual}) arbeiten, nachdem Sie das Paket @code{emacs-guix}
-installiert haben (führen Sie zum Einstieg in Emacs-Guix den Emacs-Befehl
address@hidden guix-help} aus):
-
address@hidden
-guix package -i emacs-guix
address@hidden example
-
address@hidden
-* Funktionalitäten::        Wie Guix Ihr Leben schöner machen wird.
-* Aufruf von guix package::  Pakete installieren, entfernen usw.
-* Substitute::               Vorerstelle Binärdateien herunterladen.
-* Pakete mit mehreren Ausgaben.::  Ein Quellpaket, mehrere Ausgaben.
-* Aufruf von guix gc::       Den Müllsammler laufen lassen.
-* Aufruf von guix pull::     Das neueste Guix samt Distribution laden.
-* Kanäle::                  Die Paketsammlung anpassen.
-* Untergeordnete::           Mit einer anderen Version von Guix 
-                               interagieren.
-* Aufruf von guix describe::  Informationen über Ihre Guix-Version 
-                                anzeigen.
-* Aufruf von guix archive::  Import und Export von Store-Dateien.
address@hidden menu
-
address@hidden Funktionalitäten
address@hidden Funktionalitäten
-
-Wenn Sie Guix benutzen, landet jedes Paket schließlich im @dfn{Paket-Store}
-in seinem eigenen Verzeichnis — der Name ist ähnlich wie
address@hidden/gnu/store/xxx-package-1.2}, wobei @code{xxx} eine Zeichenkette in
-Base32-Darstellung ist.
-
-Statt diese Verzeichnisse direkt anzugeben, haben Nutzer ihr eigenes
address@hidden, welches auf diejenigen Pakete zeigt, die sie tatsächlich
-benutzen wollen. Diese Profile sind im Persönlichen Verzeichnis des
-jeweiligen Nutzers gespeichert als @code{$HOME/.guix-profile}.
-
-Zum Beispiel installiert @code{alice} GCC 4.7.2. Dadurch zeigt dann
address@hidden/home/alice/.guix-profile/bin/gcc} auf
address@hidden/gnu/store/@dots{}-gcc-4.7.2/bin/gcc}. Auf demselben Rechner hat
address@hidden bereits GCC 4.8.0 installiert. Das Profil von @code{bob} zeigt
-dann einfach weiterhin auf @file{/gnu/store/@dots{}-gcc-4.8.0/bin/gcc} —
-d.h.@: beide Versionen von GCC koexistieren auf demselben System, ohne sich
-zu stören.
-
-Der Befehl @command{guix package} ist das zentrale Werkzeug, um Pakete zu
-verwalten (siehe @ref{Aufruf von guix package}). Es arbeitet auf dem eigenen
-Profil jedes Nutzers und kann @emph{mit normalen Benutzerrechten} ausgeführt
-werden.
-
address@hidden Transaktionen
-Der Befehl stellt die offensichtlichen Installations-, Entfernungs- und
-Aktualisierungsoperationen zur Verfügung. Jeder Aufruf ist tatsächlich eine
-eigene @emph{Transaktion}: Entweder die angegebene Operation wird
-erfolgreich durchgeführt, oder gar nichts passiert. Wenn also der Prozess
-von @command{guix package} während der Transaktion beendet wird, oder es zum
-Stromausfall während der Transaktion kommt, dann bleibt der alte, nutzbare
-Zustands des Nutzerprofils erhalten.
-
-Zudem kann jede Pakettransaktion @emph{zurückgesetzt} werden
-(Rollback). Wird also zum Beispiel durch eine Aktualisierung eine neue
-Version eines Pakets installiert, die einen schwerwiegenden Fehler zur Folge
-hat, können Nutzer ihr Profil einfach auf die vorherige Profilinstanz
-zurücksetzen, von der sie wissen, dass sie gut lief. Ebenso unterliegt bei
-Guix auch die globale Systemkonfiguration transaktionellen Aktualisierungen
-und Rücksetzungen (siehe @ref{Das Konfigurationssystem nutzen}).
-
-Alle Pakete im Paket-Store können vom @emph{Müllsammler} (Garbage Collector)
-gelöscht werden. Guix ist in der Lage, festzustellen, welche Pakete noch
-durch Benutzerprofile referenziert werden, und entfernt nur diese, die
-nachweislich nicht mehr referenziert werden (siehe @ref{Aufruf von guix gc}). 
Benutzer können auch ausdrücklich alte Generationen ihres Profils
-löschen, damit die zugehörigen Pakete vom Müllsammler gelöscht werden
-können.
-
address@hidden Reproduzierbarkeit
address@hidden Reproduzierbare Erstellungen
-Guix verfolgt einen @dfn{rein funktionalen} Ansatz bei der Paketverwaltung,
-wie er in der Einleitung beschrieben wurde (siehe @ref{Einführung}). Jedes
-Paketverzeichnis im @file{/gnu/store} hat einen Hash all seiner bei der
-Erstellung benutzten Eingaben im Namen — Compiler, Bibliotheken,
-Erstellungs-Skripts etc. Diese direkte Entsprechung ermöglicht es Benutzern,
-eine Paketinstallation zu benutzen, die sicher dem aktuellen Stand ihrer
-Distribution entspricht. Sie maximiert auch die @dfn{Reproduzierbarkeit der
-Erstellungen} zu maximieren: Dank der isolierten Erstellungsumgebungen, die
-benutzt werden, resultiert eine Erstellung wahrscheinlich in bitweise
-identischen Dateien, auch wenn sie auf unterschiedlichen Maschinen
-durchgeführt wird (siehe @ref{Aufruf des guix-daemon, container}).
-
address@hidden Substitute
-Auf dieser Grundlage kann Guix @dfn{transparent Binär- oder Quelldateien
-ausliefern}. Wenn eine vorerstellte Binärdatei für ein
address@hidden/gnu/store}-Objekt von einer externen Quelle verfügbar ist — ein
address@hidden —, lädt Guix sie einfach herunter und entpackt sie,
-andernfalls erstellt Guix das Paket lokal aus seinem Quellcode (siehe
address@hidden). Weil Erstellungsergebnisse normalerweise Bit für Bit
-reproduzierbar sind, müssen die Nutzer den Servern, die Substitute anbieten,
-nicht blind vertrauen; sie können eine lokale Erstellung erzwingen und
-Substitute @emph{anfechten} (siehe @ref{Aufruf von guix challenge}).
-
-Kontrolle über die Erstellungsumgebung ist eine auch für Entwickler
-nützliche Funktionalität. Der Befehl @command{guix environment} ermöglicht
-es Entwicklern eines Pakets, schnell die richtige Entwicklungsumgebung für
-ihr Paket einzurichten, ohne manuell die Abhängigkeiten des Pakets in ihr
-Profil installieren zu müssen (siehe @ref{Aufruf von guix environment}).
-
address@hidden Nachbildung, von Software-Umgebungen
address@hidden Provenienzverfolgung, von Software-Artefakten
-Ganz Guix und all seine Paketdefinitionen stehen unter Versionskontrolle und
address@hidden pull} macht es möglich, auf dem Verlauf der Entwicklung von
-Guix selbst »in der Zeit zu reisen« (siehe @ref{Aufruf von guix pull}). 
Dadurch kann eine Instanz von Guix auf einer anderen Maschine oder
-zu einem späteren Zeitpunkt genau nachgebildet werden, wodurch auch
address@hidden Software-Umgebungen gänzlich nachgebildet} werden können,
-mit genauer @dfn{Provenienzverfolgung}, wo diese Software herkommt.
-
address@hidden Aufruf von guix package
address@hidden Invoking @command{guix package}
-
address@hidden Installieren von Paketen
address@hidden Entfernen von Paketen
address@hidden Paketinstallation
address@hidden Paketentfernung
-Der Befehl @command{guix package} ist ein Werkzeug, womit Nutzer Pakete
-installieren, aktualisieren, entfernen und auf vorherige Konfigurationen
-zurücksetzen können. Dabei wird nur das eigene Profil des Nutzers verwendet,
-und es funktioniert mit normalen Benutzerrechten, ohne Administratorrechte
-(siehe @ref{Funktionalitäten}). Die Syntax ist:
-
address@hidden
-guix package @var{Optionen}
address@hidden example
address@hidden Transaktionen
-In erster Linie geben die @var{Optionen} an, welche Operationen in der
-Transaktion durchgeführt werden sollen. Nach Abschluss wird ein neues Profil
-erzeugt, aber vorherige @dfn{Generationen} des Profils bleiben verfügbar,
-falls der Benutzer auf sie zurückwechseln will.
-
-Um zum Beispiel @code{lua} zu entfernen und @code{guile} und
address@hidden in einer einzigen Transaktion zu installieren:
-
address@hidden
-guix package -r lua -i guile guile-cairo
address@hidden example
-
address@hidden package} unterstützt auch ein @dfn{deklaratives Vorgehen},
-wobei der Nutzer die genaue Menge an Paketen, die verfügbar sein sollen,
-festlegt und über die Befehlszeilenoption @option{--manifest} übergibt
-(siehe @ref{profile-manifest, @option{--manifest}}).
-
address@hidden Profil
-Für jeden Benutzer wird automatisch eine symbolische Verknüpfung zu seinem
-Standardprofil angelegt als @file{$HOME/.guix-profile}. Diese symbolische
-Verknüpfung zeigt immer auf die aktuelle Generation des Standardprofils des
-Benutzers. Somit können Nutzer @file{$HOME/.guix-profile/bin} z.B.@: zu
-ihrer Umgebungsvariablen @code{PATH} hinzufügen.
address@hidden Suchpfade
-Wenn Sie nicht die Guix System Distribution benutzen, sollten Sie in
-Betracht ziehen, folgende Zeilen zu Ihrem @file{~/.bash_profile}
-hinzuzufügen (siehe @ref{Bash Startup Files,,, bash, The GNU Bash Reference
-Manual}), damit in neu erzeugten Shells alle Umgebungsvariablen richtig
-definiert werden:
-
address@hidden
-GUIX_PROFILE="$HOME/.guix-profile" ; \
-source "$HOME/.guix-profile/etc/profile"
address@hidden example
-
-Ist Ihr System für mehrere Nutzer eingerichtet, werden Nutzerprofile an
-einem Ort gespeichert, der als @dfn{Müllsammlerwurzel} registriert ist, auf
-die @file{$HOME/.guix-profile} zeigt (siehe @ref{Aufruf von guix gc}). Dieses
-Verzeichnis ist normalerweise
address@hidden@var{localstatedir}/guix/profiles/per-user/@var{Benutzer}}, wobei
address@hidden der an @code{configure} als @code{--localstatedir}
-übergebene Wert ist und @var{Benutzer} für den jeweiligen Benutzernamen
-steht. Das @file{per-user}-Verzeichnis wird erstellt, wenn
address@hidden gestartet wird, und das Unterverzeichnis
address@hidden wird durch @command{guix package} erstellt.
-
-Als @var{Optionen} kann vorkommen:
-
address@hidden @code
-
address@hidden address@hidden @dots{}
address@hidden -i @var{Paket} @dots{}
-Die angegebenen @var{Paket}e installieren.
-
-Jedes @var{Paket} kann entweder einfach durch seinen Paketnamen aufgeführt
-werden, wie @code{guile}, oder als Paketname gefolgt von einem At-Zeichen @@
-und einer Versionsnummer, wie @code{guile@@1.8.8} oder auch nur
address@hidden@@1.8} (in letzterem Fall wird die neueste Version mit Präfix
address@hidden ausgewählt.)
-
-Wird keine Versionsnummer angegeben, wird die neueste verfügbare Version
-ausgewählt. Zudem kann im @var{Paket} ein Doppelpunkt auftauchen, gefolgt
-vom Namen einer der Ausgaben des Pakets, wie @code{gcc:doc} oder
address@hidden@@2.22:lib} (siehe @ref{Pakete mit mehreren Ausgaben.}). Pakete 
mit zugehörigem Namen (und optional der Version) werden
-unter den Modulen der GNU-Distribution gesucht (siehe @ref{Paketmodule}).
-
address@hidden propagierte Eingaben
-Manchmal haben Pakete @dfn{propagierte Eingaben}: Als solche werden
-Abhängigkeiten bezeichnet, die automatisch zusammen mit dem angeforderten
-Paket installiert werden (im Abschnitt @ref{package-propagated-inputs,
address@hidden in @code{package} objects} sind weitere
-Informationen über propagierte Eingaben in Paketdefinitionen zu finden).
-
address@hidden
-Ein Beispiel ist die GNU-MPC-Bibliothek: Ihre C-Headerdateien verweisen auf
-die der GNU-MPFR-Bibliothek, welche wiederum auf die der GMP-Bibliothek
-verweisen. Wenn also MPC installiert wird, werden auch die MPFR- und
-GMP-Bibliotheken in das Profil installiert; entfernt man MPC, werden auch
-MPFR und GMP entfernt — außer sie wurden noch auf andere Art ausdrücklich
-vom Nutzer installiert.
-
-Abgesehen davon setzen Pakete manchmal die Definition von Umgebungsvariablen
-für ihre Suchpfade voraus (siehe die Erklärung von @code{--search-paths}
-weiter unten). Alle fehlenden oder womöglich falschen Definitionen von
-Umgebungsvariablen werden hierbei gemeldet.
-
address@hidden address@hidden
address@hidden -e @var{Ausdruck}
-Das Paket installieren, zu dem der @var{Ausdruck} ausgewertet wird.
-
-Beim @var{Ausdruck} muss es sich um einen Scheme-Ausdruck handeln, der zu
-einem @code{<package>}-Objekt ausgewertet wird. Diese Option ist besonders
-nützlich, um zwischen gleichnamigen Varianten eines Pakets zu unterscheiden,
-durch Ausdrücke wie @code{(@@ (gnu packages base) guile-final)}.
-
-Beachten Sie, dass mit dieser Option die erste Ausgabe des angegebenen
-Pakets installiert wird, was unzureichend sein kann, wenn eine bestimmte
-Ausgabe eines Pakets mit mehreren Ausgaben gewünscht ist.
-
address@hidden address@hidden
address@hidden -f @var{Datei}
-Das Paket installieren, zu dem der Code in der @var{Datei} ausgewertet wird.
-
-Zum Beispiel könnte die @var{Datei} eine Definition wie diese enthalten
-(siehe @ref{Pakete definieren}):
-
address@hidden
address@hidden package-hello.scm
address@hidden example
-
-Entwickler könnten es für nützlich erachten, eine solche
address@hidden im Quellbaum ihres Projekts abzulegen, mit der
-Zwischenstände der Entwicklung getestet und reproduzierbare
-Erstellungsumgebungen aufgebaut werden können (siehe @ref{Aufruf von guix 
environment}).
-
address@hidden address@hidden @dots{}
address@hidden -r @var{Paket} @dots{}
-Die angegebenen @var{Paket}e entfernen.
-
-Wie auch bei @code{--install} kann jedes @var{Paket} neben dem Paketnamen
-auch eine Versionsnummer und/oder eine Ausgabe benennen. Zum Beispiel würde
address@hidden glibc:debug} die @code{debug}-Ausgabe von @code{glibc} aus dem
-Profil entfernen.
-
address@hidden address@hidden @dots{}]
address@hidden -u address@hidden @dots{}]
address@hidden Pakete aktualisieren
-Alle installierten Pakete aktualisieren. Wenn einer oder mehr reguläre
-Ausdrücke (Regexps) angegeben wurden, werden nur diejenigen installierten
-Pakete aktualisiert, deren Name zu einer der @var{Regexp}s passt. Siehe auch
-weiter unten die Befehlszeilenoption @code{--do-not-upgrade}.
-
-Beachten Sie, dass das Paket so auf die neueste Version unter den Paketen
-gebracht wird, die in der aktuell installierten Distribution vorliegen. Um
-jedoch Ihre Distribution zu aktualisieren, sollten Sie regelmäßig
address@hidden pull} ausführen (siehe @ref{Aufruf von guix pull}).
-
address@hidden address@hidden @dots{}]
-In Verbindung mit der Befehlszeilenoption @code{--upgrade}, führe
address@hidden Aktualisierung von Paketen durch, deren Name zum regulären
-Ausdruck @var{Regexp} passt. Um zum Beispiel alle Pakete im aktuellen Profil
-zu aktualisieren mit Ausnahme derer, die »emacs« im Namen haben:
-
address@hidden
-$ guix package --upgrade . --do-not-upgrade emacs
address@hidden example
-
address@hidden @address@hidden
address@hidden -m @var{Datei}
address@hidden Profildeklaration
address@hidden Profilmanifest
-Erstellt eine neue Generation des Profils aus dem vom Scheme-Code in
address@hidden gelieferten Manifest-Objekt.
-
-Dadurch könnrn Sie den Inhalt des Profils @emph{deklarieren}, statt ihn
-durch eine Folge von Befehlen wie @code{--install} u.Ä. zu generieren. Der
-Vorteil ist, dass die @var{Datei} unter Versionskontrolle gestellt werden
-kann, auf andere Maschinen zum Reproduzieren desselben Profils kopiert
-werden kann und Ähnliches.
-
address@hidden FIXME: Add reference to (guix profile) documentation when 
available.
-Der Code in der @var{Datei} muss ein @dfn{Manifest}-Objekt liefern, was
-ungefähr einer Liste von Paketen entspricht:
-
address@hidden packages->manifest
address@hidden
-(use-package-modules guile emacs)
-
-(packages->manifest
- (list emacs
-       guile-2.0
-       ;; Eine bestimmte Paketausgabe nutzen.
-       (list guile-2.0 "debug")))
address@hidden example
-
address@hidden specifications->manifest
-In diesem Beispiel müssen wir wissen, welche Module die Variablen
address@hidden und @code{guile-2.0} definieren, um die richtige Angabe mit
address@hidden machen zu können, was umständlich sein kann. Wir
-können auch normale Paketnamen angeben und sie durch
address@hidden>manifest} zu den entsprechenden Paketobjekten
-auflösen, zum Beispiel so:
-
address@hidden
-(specifications->manifest
- '("emacs" "guile@@2.2" "guile@@2.2:debug"))
address@hidden example
-
address@hidden --roll-back
address@hidden rücksetzen
address@hidden Zurücksetzen von Transaktionen
address@hidden Transaktionen, zurücksetzen
-Wechselt zur vorherigen @dfn{Generation} des Profils zurück — d.h.@: macht
-die letzte Transaktion rückgängig.
-
-In Verbindung mit Befehlszeilenoptionen wie @code{--install} wird zuerst
-zurückgesetzt, bevor andere Aktionen durchgeführt werden.
-
-Ein Rücksetzen der ersten Generation, die installierte Pakete enthält,
-wechselt das Profil zur @dfn{nullten Generation}, die keinerlei Dateien
-enthält, abgesehen von Metadaten über sich selbst.
-
-Nach dem Zurücksetzen überschreibt das Installieren, Entfernen oder
-Aktualisieren von Paketen vormals zukünftige Generationen, d.h.@: der
-Verlauf der Generationen eines Profils ist immer linear.
-
address@hidden address@hidden
address@hidden -S @var{Muster}
address@hidden Generationen
-Wechselt zu der bestimmten Generation, die durch das @var{Muster} bezeichnet
-wird.
-
-Als @var{Muster} kann entweder die Nummer einer Generation oder eine Nummer
-mit vorangestelltem »+« oder »-« dienen. Letzteres springt die angegebene
-Anzahl an Generationen vor oder zurück. Zum Beispiel kehrt
address@hidden nach einem Zurücksetzen wieder zur neueren
-Generation zurück.
-
-Der Unterschied zwischen @code{--roll-back} und
address@hidden ist, dass @code{--switch-generation} keine
-nullte Generation erzeugen wird; existiert die angegebene Generation nicht,
-bleibt schlicht die aktuelle Generation erhalten.
-
address@hidden address@hidden
address@hidden Suchpfade
-Führe die Definitionen von Umgebungsvariablen auf, in Bash-Syntax, die nötig
-sein könnten, um alle installierten Pakete nutzen zu können. Diese
-Umgebungsvariablen werden benutzt, um die @dfn{Suchpfade} für Dateien
-festzulegen, die von einigen installierten Paketen benutzt werden.
-
-Zum Beispiel braucht GCC die Umgebungsvariablen @code{CPATH} und
address@hidden, um zu wissen, wo sich im Benutzerprofil Header und
-Bibliotheken befinden (siehe @ref{Environment Variables,,, gcc, Using the
-GNU Compiler Collection (GCC)}). Wenn GCC und, sagen wir, die C-Bibliothek
-im Profil installiert sind, schlägt @code{--search-paths} also vor, diese
-Variablen jeweils auf @address@hidden/include} und
address@hidden@var{profile}/lib} verweisen zu lassen.
-
-Die typische Nutzung ist, in der Shell diese Variablen zu definieren:
-
address@hidden
-$ eval `guix package --search-paths`
address@hidden example
-
-Als @var{Art} kann entweder @code{exact}, @code{prefix} oder @code{suffix}
-gewählt werden, wodurch die gelieferten Definitionen der Umgebungsvariablen
-entweder exakt die Einstellungen für Guix meldet, oder sie als Präfix oder
-Suffix an den aktuellen Wert dieser Variablen anhängt. Gibt man keine
address@hidden an, wird der Vorgabewert @code{exact} verwendet.
-
-Diese Befehlszeilenoption kann auch benutzt werden, um die
address@hidden Suchpfade mehrerer Profile zu berechnen. Betrachten Sie
-dieses Beispiel:
-
address@hidden
-$ guix package -p foo -i guile
-$ guix package -p bar -i guile-json
-$ guix package -p foo -p bar --search-paths
address@hidden example
-
-Der letzte Befehl oben meldet auch die Definition der Umgebungsvariablen
address@hidden, obwohl für sich genommen weder @file{foo} noch
address@hidden zu dieser Empfehlung führen würden.
-
-
address@hidden address@hidden
address@hidden -p @var{Profil}
-Auf @var{Profil} anstelle des Standardprofils des Benutzers arbeiten.
-
address@hidden Kollisionen, in einem Profil
address@hidden Paketkollisionen in Profilen
address@hidden Profilkollisionen
address@hidden --allow-collisions
-Kollidierende Pakete im neuen Profil zulassen. Benutzung auf eigene Gefahr!
-
-Standardmäßig wird @command{guix package} @dfn{Kollisionen} als Fehler
-auffassen und melden. Zu Kollisionen kommt es, wenn zwei oder mehr
-verschiedene Versionen oder Varianten desselben Pakets im Profil landen.
-
address@hidden --bootstrap
-Erstellt das Profil mit dem Bootstrap-Guile. Diese Option ist nur für
-Entwickler der Distribution nützlich.
-
address@hidden table
-
-Zusätzlich zu diesen Aktionen unterstützt @command{guix package} folgende
-Befehlszeilenoptionen, um den momentanen Zustand eines Profils oder die
-Verfügbarkeit von Paketen nachzulesen:
-
address@hidden @option
-
address@hidden address@hidden
address@hidden -s @var{Regexp}
address@hidden Suche nach Paketen
-Führt alle verfügbaren Pakete auf, deren Name, Zusammenfassung oder
-Beschreibung zum regulären Ausdruck @var{Regexp} passt, ohne Groß- und
-Kleinschreibung zu unterscheiden und sortiert nach ihrer Relevanz. Alle
-Metadaten passender Pakete werden im @code{recutils}-Format geliefert (siehe
address@hidden, GNU recutils databases,, recutils, GNU recutils manual}).
-
-So können bestimmte Felder mit dem Befehl @command{recsel} extrahiert
-werden, zum Beispiel:
-
address@hidden
-$ guix package -s malloc | recsel -p name,version,relevance
-name: jemalloc
-version: 4.5.0
-relevance: 6
-
-name: glibc
-version: 2.25
-relevance: 1
-
-name: libgc
-version: 7.6.0
-relevance: 1
address@hidden example
-
-Ebenso kann der Name aller zu den Bedingungen der address@hidden, Version 3,
-verfügbaren Pakete ermittelt werden:
-
address@hidden
-$ guix package -s "" | recsel -p name -e 'license ~ "LGPL 3"'
-name: elfutils
-
-name: gmp
address@hidden
address@hidden example
-
-Es ist auch möglich, Suchergebnisse näher einzuschränken, indem Sie
address@hidden mehrmals übergeben. Zum Beispiel liefert folgender Befehl eines
-Liste von Brettspielen:
-
address@hidden
-$ guix package -s '\<board\>' -s game | recsel -p name
-name: gnubg
address@hidden
address@hidden example
-
-Würden wir @code{-s game} weglassen, bekämen wir auch Software-Pakete
-aufgelistet, die mit »printed circuit boards« (elektronischen Leiterplatten)
-zu tun haben; ohne die spitzen Klammern um @code{board} bekämen wir auch
-Pakete, die mit »keyboards« (Tastaturen, oder musikalischen Keyboard) zu tun
-haben.
-
-Es ist Zeit für ein komplexeres Beispiel. Folgender Befehl sucht
-kryptografische Bibliotheken, filtert Haskell-, Perl-, Python- und
-Ruby-Bibliotheken heraus und gibt Namen und Zusammenfassung passender Pakete
-aus:
-
address@hidden
-$ guix package -s crypto -s library | \
-    recsel -e '! (name ~ "^(ghc|perl|python|ruby)")' -p name,synopsis
address@hidden example
-
address@hidden
-Siehe @ref{Selection Expressions,,, recutils, GNU recutils manual}, es
-enthält weitere Informationen über @dfn{Auswahlausdrücke} mit @code{recsel
--e}.
-
address@hidden address@hidden
-Zeigt Details über das @var{Paket} aus der Liste verfügbarer Pakete, im
address@hidden (siehe @ref{Top, GNU recutils databases,, recutils,
-GNU recutils manual}).
-
address@hidden
-$ guix package --show=python | recsel -p name,version
-name: python
-version: 2.7.6
-
-name: python
-version: 3.3.5
address@hidden example
-
-Sie können auch den vollständigen Namen eines Pakets angeben, um Details nur
-über diese Version angezeigt zu bekommen:
address@hidden
-$ guix package --show=python@@3.4 | recsel -p name,version
-name: python
-version: 3.4.3
address@hidden example
-
-
-
address@hidden address@hidden
address@hidden -I address@hidden
-Listet die derzeit installierten Pakete im angegebenen Profil auf, die
-zuletzt installierten Pakete zuletzt. Wenn ein regulärer Ausdruck
address@hidden angegeben wird, werden nur installierte Pakete aufgeführt,
-deren Name zu @var{Regexp} passt.
-
-Zu jedem installierten Paket werden folgende Informationen angezeigt, durch
-Tabulatorzeichen getrennt: der Paketname, die Version als Zeichenkette,
-welche Teile des Pakets installiert sind (zum Beispiel @code{out}, wenn die
-Standard-Paketausgabe installiert ist, @code{include}, wenn seine Header
-installiert sind, usw.)@: und an welchem Pfad das Paket im Store zu finden
-ist.
-
address@hidden address@hidden
address@hidden -A address@hidden
-Listet Pakete auf, die in der aktuell installierten Distribution dieses
-Systems verfügbar sind (siehe @ref{GNU-Distribution}). Wenn ein regulärer
-Ausdruck @var{Regexp} angegeben wird, werden nur Pakete aufgeführt, deren
-Name zum regulären Ausdruck @var{Regexp} passt.
-
-Zu jedem Paket werden folgende Informationen getrennt durch Tabulatorzeichen
-ausgegeben: der Name, die Version als Zeichenkette, die Teile des Programms
-(siehe @ref{Pakete mit mehreren Ausgaben.}) und die Stelle im Quellcode, an
-der das Paket definiert ist.
-
address@hidden address@hidden
address@hidden -l address@hidden
address@hidden Generationen
-Liefert eine Liste der Generationen zusammen mit dem Datum, an dem sie
-erzeugt wurden; zu jeder Generation werden zudem die installierten Pakete
-angezeigt, zuletzt installierte Pakete zuletzt. Beachten Sie, dass die
-nullte Generation niemals angezeigt wird.
-
-Zu jedem installierten Paket werden folgende Informationen durch
-Tabulatorzeichen getrennt angezeigt: der Name des Pakets, die Version als
-Zeichenkette, welcher Teil des Pakets installiert ist (siehe @ref{Pakete mit 
mehreren Ausgaben.}) und an welcher Stelle sich das Paket im Store
-befindet.
-
-Wenn ein @var{Muster} angegeben wird, liefert der Befehl nur dazu passende
-Generationen. Gültige Muster sind zum Beispiel:
-
address@hidden
address@hidden @emph{Ganze Zahlen und kommagetrennte ganze Zahlen}. Beide 
Muster bezeichnen
-Generationsnummern. Zum Beispiel liefert @code{--list-generations=1} die
-erste Generation.
-
-Durch @code{--list-generations=1,8,2} werden drei Generationen in der
-angegebenen Reihenfolge angezeigt. Weder Leerzeichen noch ein Komma am
-Schluss der Liste ist erlaubt.
-
address@hidden @emph{Bereiche}. @code{--list-generations=2..9} gibt die
-angegebenen Generationen und alles dazwischen aus. Beachten Sie, dass der
-Bereichsanfang eine kleinere Zahl als das Bereichsende sein muss.
-
-Sie können auch kein Bereichsende angeben, zum Beispiel liefert
address@hidden alle Generationen ab der zweiten.
-
address@hidden @emph{Zeitdauern}. Sie können auch die letzten @address@hidden, 
Wochen
-oder Monate angeben, indem Sie eine ganze Zahl gefolgt von jeweils »d«, »w«
-oder »m« angeben (dem ersten Buchstaben der Maßeinheit der Dauer im
-Englischen). Zum Beispiel listet @code{--list-generations=20d} die
-Generationen auf, die höchstens 20 Tage alt sind.
address@hidden itemize
-
address@hidden address@hidden
address@hidden -d address@hidden
-Wird kein @var{Muster} angegeben, werden alle Generationen außer der
-aktuellen entfernt.
-
-Dieser Befehl akzeptiert dieselben Muster wie
address@hidden Wenn ein @var{Muster} angegeben wird, werden
-die passenden Generationen gelöscht. Wenn das @var{Muster} für eine
-Zeitdauer steht, werden diejenigen Generationen gelöscht, die @emph{älter}
-als die angegebene Dauer sind. Zum Beispiel löscht
address@hidden die Generationen, die mehr als einen Monat
-alt sind.
-
-Falls die aktuelle Generation zum Muster passt, wird sie @emph{nicht}
-gelöscht. Auch die nullte Generation wird niemals gelöscht.
-
-Beachten Sie, dass Sie auf gelöschte Generationen nicht zurückwechseln
-können. Dieser Befehl sollte also nur mit Vorsicht benutzt werden.
-
address@hidden table
-
-Zu guter Letzt können Sie, da @command{guix package} Erstellungsprozesse zu
-starten vermag, auch alle gemeinsamen Erstellungsoptionen (siehe 
@ref{Gemeinsame Erstellungsoptionen}) verwenden. Auch Paketumwandlungsoptionen 
wie
address@hidden sind möglich (siehe @ref{Paketumwandlungsoptionen}). Beachten 
Sie jedoch, dass die verwendeten
-Paketumwandlungsoptionen verloren gehen, nachdem Sie die Pakete aktualisiert
-haben. Damit Paketumwandlungen über Aktualisierungen hinweg erhalten
-bleiben, sollten Sie Ihre eigene Paketvariante in einem Guile-Modul
-definieren und zur Umgebungsvariablen @code{GUIX_PACKAGE_PATH} hinzufügen
-(siehe @ref{Pakete definieren}).
-
address@hidden Substitute
address@hidden Substitute
-
address@hidden Substitute
address@hidden vorerstellte Binärdateien
-Guix kann transparent Binär- oder Quelldateien ausliefern. Das heißt, Dinge
-können sowohl lokal erstellt, als auch als vorerstellte Objekte von einem
-Server heruntergeladen werden, oder beides gemischt. Wir bezeichnen diese
-vorerstellten Objekte als @dfn{Substitute} — sie substituieren lokale
-Erstellungsergebnisse. In vielen Fällen geht das Herunterladen eines
-Substituts wesentlich schneller, als Dinge lokal zu erstellen.
-
-Substitute können alles sein, was das Ergebnis einer Ableitungserstellung
-ist (siehe @ref{Ableitungen}). Natürlich sind sie üblicherweise vorerstellte
-Paket-Binärdateien, aber wenn zum Beispiel ein Quell-Tarball das Ergebnis
-einer Ableitungserstellung ist, kann auch er als Substitut verfügbar sein.
-
address@hidden
-* Offizieller Substitut-Server::  Eine besondere Quelle von Substituten.
-* Substitut-Server autorisieren::  Wie man Substitute an- und abschaltet.
-* Substitutauthentifizierung::  Wie Guix Substitute verifiziert.
-* Proxy-Einstellungen::      Wie Sie Substitute über einen Proxy beziehen.
-* Fehler bei der Substitution::  Was passiert, wenn die Substitution 
-                                   fehlschlägt.
-* Vom Vertrauen gegenüber Binärdateien::  Wie können Sie diesem binären 
-                                              Blob trauen?
address@hidden menu
-
address@hidden Offizieller Substitut-Server
address@hidden Offizieller Substitut-Server
-
address@hidden Hydra
address@hidden Build-Farm
-Der Server @address@hidden ist die Fassade für eine
-offizielle »Build-Farm«, ein Erstellungswerk, das kontinuierlich Guix-Pakete
-für einige Prozessorarchitekturen erstellt und sie als Substitute zur
-Verfügung stellt. Dies ist die standardmäßige Quelle von Substituten; durch
-Übergeben der Befehlszeilenoption @option{--substitute-urls} an entweder den
address@hidden (siehe @ref{daemon-substitute-urls,, @code{guix-daemon
---substitute-urls}}) oder Client-Werkzeuge wie @command{guix package} (siehe
address@hidden,, die Befehlszeilenoption
address@hidden beim Client}) kann eine abweichende Einstellung
-benutzt werden.
-
-Substitut-URLs können entweder HTTP oder HTTPS sein. HTTPS wird empfohlen,
-weil die Kommunikation verschlüsselt ist; umgekehrt kann bei HTTP die
-Kommunikation belauscht werden, wodurch der Angreifer zum Beispiel erfahren
-könnte, ob Ihr System über noch nicht behobene Sicherheitsschwachstellen
-verfügt.
-
-Substitute von der offiziellen Build-Farm sind standardmäßig erlaubt, wenn
-Sie die Guix-System-Distribution verwenden (siehe @ref{GNU-Distribution}). Auf 
Fremddistributionen sind sie allerdings standardmäßig
-ausgeschaltet, solange Sie sie nicht ausdrücklich in einem der empfohlenen
-Installationsschritte erlaubt haben (siehe @ref{Installation}). Die
-folgenden Absätze beschreiben, wie Sie Substitute für die offizielle
-Build-Farm an- oder ausschalten; dieselbe Prozedur kann auch benutzt werden,
-um Substitute für einen beliebigen anderen Substitutsserver zu erlauben.
-
address@hidden Substitut-Server autorisieren
address@hidden Substitut-Server autorisieren
-
address@hidden Sicherheit
address@hidden Substitute, deren Autorisierung
address@hidden Access Control List (ACL), für Substitute
address@hidden ACL (Access Control List), für Substitute
-Um es Guix zu gestatten, Substitute von @address@hidden
-oder einem Spiegelserver davon herunterzuladen, müssen Sie den zugehörigen
-öffentlichen Schlüssel zur Access Control List (ACL,
-Zugriffssteuerungsliste) für Archivimporte hinzufügen, mit Hilfe des Befehls
address@hidden archive} (siehe @ref{Aufruf von guix archive}). Dies impliziert,
-dass Sie darauf vertrauen, dass @address@hidden nicht
-kompromittiert wurde und echte Substitute liefert.
-
-Der öffentliche Schlüssel für @address@hidden wird zusammen
-mit Guix installiert, in das Verzeichnis
address@hidden@var{prefix}/share/guix/hydra.gnu.org.pub}, wobei @var{prefix} 
das bei
-der Installation angegebene Präfix von Guix ist. Wenn Sie Guix aus seinem
-Quellcode heraus installieren, sollten Sie sichergehen, dass Sie die
-GPG-Signatur (auch »Beglaubigung« genannt) von
address@hidden@value{VERSION}.tar.gz} prüfen, worin sich dieser öffentliche
-Schlüssel befindet. Dann können Sie so etwas wie hier ausführen:
-
address@hidden
-# guix archive --authorize < 
@var{prefix}/share/guix/@value{SUBSTITUTE-SERVER}.pub
address@hidden example
-
address@hidden Anmerkung
-Genauso enthält die Datei @file{hydra.gnu.org.pub} den öffentlichen
-Schlüssel für eine unabhängige Build-Farm, die auch vom Guix-Projekt
-betrieben wird. Sie ist unter @indicateurl{https://mirror.hydra.gnu.org}
-erreichbar ist.
address@hidden quotation
-
-Sobald es eingerichtet wurde, sollte sich die Ausgabe eines Befehls wie
address@hidden build} von so etwas:
-
address@hidden
-$ guix build emacs --dry-run
-Folgende Ableitungen würden erstellt:
-   /gnu/store/yr7bnx8xwcayd6j95r2clmkdl1qh688w-emacs-24.3.drv
-   /gnu/store/x8qsh1hlhgjx6cwsjyvybnfv2i37z23w-dbus-1.6.4.tar.gz.drv
-   /gnu/store/1ixwp12fl950d15h2cj11c73733jay0z-alsa-lib-1.0.27.1.tar.bz2.drv
-   /gnu/store/nlma1pw0p603fpfiqy7kn4zm105r5dmw-util-linux-2.21.drv
address@hidden
address@hidden example
-
address@hidden
-in so etwas verwandeln:
-
address@hidden
-$ guix build emacs --dry-run
-112.3 MB würden heruntergeladen:
-   /gnu/store/pk3n22lbq6ydamyymqkkz7i69wiwjiwi-emacs-24.3
-   /gnu/store/2ygn4ncnhrpr61rssa6z0d9x22si0va3-libjpeg-8d
-   /gnu/store/71yz6lgx4dazma9dwn2mcjxaah9w77jq-cairo-1.12.16
-   /gnu/store/7zdhgp0n1518lvfn8mb96sxqfmvqrl7v-libxrender-0.9.7
address@hidden
address@hidden example
-
address@hidden
-Das zeigt an, dass Substitute von @address@hidden nutzbar
-sind und für zukünftige Erstellungen heruntergeladen werden, wann immer es
-möglich ist.
-
address@hidden Substitute, wie man sie ausschaltet
-Der Substitutsmechanismus kann global ausgeschaltet werden, indem Sie dem
address@hidden beim Starten die Befehlszeilenoption
address@hidden übergeben (siehe @ref{Aufruf des guix-daemon}). Er
-kann auch temporär ausgeschaltet werden, indem Sie @code{--no-substitutes}
-an @command{guix package}, @command{guix build} und andere
-Befehlszeilenwerkzeuge übergeben.
-
address@hidden Substitutauthentifizierung
address@hidden Substitutauthentifizierung
-
address@hidden digitale Signaturen
-Guix erkennt, wenn ein verfälschtes Substitut benutzt würde, und meldet
-einen Fehler. Ebenso werden Substitute ignoriert, die nich signiert sind,
-oder nicht mit einem in der ACL aufgelisteten Schlüssel signiert sind.
-
-Es gibt nur eine Ausnahme: Wenn ein unautorisierter Server Substitute
-anbietet, die @emph{Bit für Bit identisch} mit denen von einem autorisierten
-Server sind, können sie auch vom unautorisierten Server heruntergeladen
-werden. Zum Beispiel, angenommen wir haben zwei Substitutserver mit dieser
-Befehlszeilenoption ausgewählt:
-
address@hidden
---substitute-urls="https://a.example.org https://b.example.org";
address@hidden example
-
address@hidden
address@hidden Reproduzierbare Erstellungen
-Wenn in der ACL nur der Schlüssel für @code{b.example.org} aufgeführt wurde,
-aber @code{a.example.org} @emph{exakt dieselben} Substitute anbietet, wird
-Guix auch Substitute von @code{a.example.org} herunterladen, weil es in der
-Liste zuerst kommt und als Spiegelserver für @code{b.example.org} aufgefasst
-werden kann. In der Praxis haben unabhängige Maschinen bei der Erstellung
-normalerweise dieselben Binärdateien als Ergebnis, dank bit-reproduzierbarer
-Erstellungen (siehe unten).
-
-Wenn Sie HTTPS benutzen, wird das X.509-Zertifikat des Servers @emph{nicht}
-validiert (mit anderen Worten, die Identität des Servers wird nicht
-authentifiziert), entgegen dem, was HTTPS-Clients wie Web-Browser
-normalerweise tun. Da Guix Substitutinformationen selbst überprüft, wie oben
-erklärt, wäre es unnötig (wohingegen mit X.509-Zertifikaten geprüft wird, ob
-ein Domain-Name zu öffentlichen Schlüsseln passt).
-
address@hidden Proxy-Einstellungen
address@hidden Proxy-Einstellungen
-
address@hidden http_proxy
-Substitute werden über HTTP oder HTTPS heruntergeladen. Die
-Umgebungsvariable @code{http_proxy} kann in der Umgebung von
address@hidden definiert werden und wirkt sich dann auf das
-Herunterladen von Substituten aus. Beachten Sie, dass der Wert von
address@hidden in der Umgebung, in der @command{guix build},
address@hidden package} und andere Client-Befehle ausgeführt werden,
address@hidden Rolle spielt}.
-
address@hidden Fehler bei der Substitution
address@hidden Fehler bei der Substitution
-
-Selbst wenn ein Substitut für eine Ableitung verfügbar ist, schlägt die
-versuchte Substitution manchmal fehl. Das kann aus vielen Gründen geschehen:
-die Substitutsserver könnten offline sein, das Substitut könnte kürzlich
-gelöscht worden sein, die Netzwerkverbindunge könnte unterbrochen worden
-sein, usw.
-
-Wenn Substitute aktiviert sind und ein Substitut für eine Ableitung zwar
-verfügbar ist, aber die versuchte Substitution fehlschlägt, kann Guix
-versuchen, die Ableitung lokal zu erstellen, je nachdem, ob
address@hidden übergeben wurde (siehe @ref{fallback-option,, common build
-option @code{--fallback}}). Genauer gesagt, wird keine lokale Erstellung
-durchgeführt, solange kein @code{--fallback} angegeben wurde, und die
-Ableitung wird als Fehlschlag angesehen. Wenn @code{--fallback} übergeben
-wurde, wird Guix versuchen, die Ableitung lokal zu erstellen, und ob die
-Ableitung erfolgreich ist oder nicht, hängt davon ab, ob die lokale
-Erstellung erfolgreich ist oder nicht. Beachten Sie, dass, falls Substitute
-ausgeschaltet oder erst gar kein Substitut verfügbar ist, @emph{immer} eine
-lokale Erstellung durchgeführt wird, egal ob @code{--fallback} übergeben
-wurde oder nicht.
-
-Um eine Vorstellung zu bekommen, wieviele Substitute gerade verfügbar sind,
-können Sie den Befehl @command{guix weather} benutzen (siehe @ref{Aufruf von 
guix weather}). Dieser Befehl zeigt Statistiken darüber an, wie es um die
-von einem Server verfügbaren Substitute steht.
-
address@hidden Vom Vertrauen gegenüber Binärdateien
address@hidden Vom Vertrauen gegenüber Binärdateien
-
address@hidden Vertrauen, gegenüber vorerstellten Binärdateien
-Derzeit hängt die Kontrolle jedes Individuums über seine Rechner von
-Institutionen, Unternehmen und solchen Gruppierungen ab, die über genug
-Macht und Entschlusskraft verfügen, die Rechnerinfrastruktur zu sabotieren
-und ihre Schwachstellen auszunutzen. Auch wenn es bequem ist, Substitute von
address@hidden@value{SUBSTITUTE-SERVER}} zu benutzen, ermuntern wir Nutzer, auch
-selbst Erstellungen durchzuführen oder gar ihre eigene Build-Farm zu
-betreiben, damit @address@hidden ein weniger interessantes
-Ziel wird. Eine Art, uns zu helfen, ist, die von Ihnen erstellte Software
-mit dem Befehl @command{guix publish} zu veröffentlichen, damit andere eine
-größere Auswahl haben, von welchem Server sie Substitute beziehen möchten
-(siehe @ref{Aufruf von guix publish}).
-
-Guix hat die richtigen Grundlagen, um die Reproduzierbarkeit von
-Erstellungen zu maximieren (siehe @ref{Funktionalitäten}). In den meisten 
Fällen
-sollten unabhängige Erstellungen eines bestimmten Pakets zu bitweise
-identischen Ergebnissen führen. Wir können also mit Hilfe einer
-vielschichtigen Menge an unabhängigen Paketerstellungen die Integrität
-unseres Systems besser gewährleisten. Der Befehl @command{guix challenge}
-hat das Ziel, Nutzern zu ermöglichen, Substitutserver zu beurteilen, und
-Entwickler dabei zu unterstützen, nichtdeterministische Paketerstellungen zu
-finden (siehe @ref{Aufruf von guix challenge}). Ebenso ermöglicht es die
-Befehlszeilenoption @option{--check} von @command{guix build}, dass Nutzer
-bereits installierte Substitute auf Echtheit zu prüfen, indem sie lokal
-nachgebaut werden (siehe @ref{build-check, @command{guix build --check}}).
-
-In Zukunft wollen wir, dass Guix Binärdateien an und von Nutzern
-peer-to-peer veröffentlichen kann. Wenn Sie mit uns dieses Projekt
-diskutieren möchten, kommen Sie auf unsere Mailing-Liste
address@hidden@@gnu.org}.
-
address@hidden Pakete mit mehreren Ausgaben.
address@hidden Pakete mit mehreren Ausgaben.
-
address@hidden mehrere Ausgaben, bei Paketen
address@hidden Paketausgaben
address@hidden Ausgaben
-
-Oft haben in Guix definierte Pakete eine einzige @dfn{Ausgabe} — d.h.@: aus
-dem Quellpaket entsteht genau ein Verzeichnis im Store. Wenn Sie
address@hidden package -i glibc} ausführen, wird die Standard-Paketausgabe
-des GNU-libc-Pakets installiert; die Standardausgabe wird @code{out}
-genannt, aber ihr Name kann weggelassen werden, wie sie an obigem Befehl
-sehen. In diesem speziellen Fall enthält die Standard-Paketausgabe von
address@hidden alle C-Headerdateien, gemeinsamen Bibliotheken (»Shared
-Libraries«), statischen Bibliotheken (»Static Libraries«), Dokumentation für
-Info sowie andere zusätzliche Dateien.
-
-Manchmal ist es besser, die verschiedenen Arten von Dateien, die aus einem
-einzelnen Quellpaket hervorgehen, in getrennte Ausgaben zu unterteilen. Zum
-Beispiel installiert die GLib-C-Bibliothek (die von GTK und damit
-zusammenhängenden Paketen benutzt wird) mehr als 20 MiB an HTML-Seiten mit
-Referenzdokumentation. Um den Nutzern, die das nicht brauchen, Platz zu
-sparen, wird die Dokumentation in einer separaten Ausgabe abgelegt, genannt
address@hidden Um also die Hauptausgabe von GLib zu installieren, zu der alles
-außer der Dokumentation gehört, ist der Befehl:
-
address@hidden
-guix package -i glib
address@hidden example
-
address@hidden Dokumentation
-Der Befehl, um die Dokumentation zu installieren, ist:
-
address@hidden
-guix package -i glib:doc
address@hidden example
-
-Manche Pakete installieren Programme mit unterschiedlich großem
-»Abhängigkeiten-Fußabdruck«. Zum Beispiel installiert das Paket WordNet
-sowohl Befehlszeilenwerkzeuge als auch grafische Benutzerschnittstellen
-(GUIs). Erstere hängen nur von der C-Bibliothek ab, während Letztere auch
-von Tcl/Tk und den zu Grunde liegenden X-Bibliotheken abhängen. Jedenfalls
-belassen wir deshalb die Befehlszeilenwerkzeuge in der
-Standard-Paketausgabe, während sich die GUIs in einer separaten Ausgabe
-befinden. So können Benutzer, die die GUIs nicht brauchen, Platz sparen. Der
-Befehl @command{guix size} kann dabei helfen, solche Situationen zu erkennen
-(siehe @ref{Aufruf von guix size}). @command{guix graph} kann auch helfen
-(siehe @ref{Aufruf von guix graph}).
-
-In der GNU-Distribution gibt es viele solche Pakete mit mehreren
-Ausgaben. Andere Konventionen für Ausgabenamen sind zum Beispiel @code{lib}
-für Bibliotheken und eventuell auch ihre Header-Dateien,, @code{bin} für
-eigenständige Programme und @code{debug} für Informationen zur
-Fehlerbehandlung (siehe @ref{Dateien zur Fehlersuche installieren}). Die 
Ausgaben
-eines Pakets stehen in der dritten Spalte der Anzeige von @command{guix
-package --list-available} (siehe @ref{Aufruf von guix package}).
-
-
address@hidden Aufruf von guix gc
address@hidden @command{guix gc} aufrufen
-
address@hidden Müllsammler
address@hidden Plattenspeicher
-Pakete, die zwar installiert sind, aber nicht benutzt werden, können vom
address@hidden entfernt werden. Mit dem Befehl @command{guix gc} können
-Benutzer den Müllsammler ausdrücklich aufrufen, um Speicher im Verzeichnis
address@hidden/gnu/store} freizugeben. Dies ist der @emph{einzige} Weg, Dateien 
aus
address@hidden/gnu/store} zu entfernen — das manuelle Entfernen von Dateien 
kann den
-Store irreparabel beschädigen!
-
address@hidden GC-Wurzeln
address@hidden Müllsammlerwurzeln
-Der Müllsammler kennt eine Reihe von @dfn{Wurzeln}: Jede Datei in
address@hidden/gnu/store}, die von einer Wurzel aus erreichbar ist, gilt als
address@hidden und kann nicht entfernt werden; jede andere Datei gilt als
address@hidden und ist ein Kandidat, gelöscht zu werden. Die Menge der
-Müllsammlerwurzeln (kurz auch »GC-Wurzeln«, von englisch »Garbage
-Collector«) umfasst Standard-Benutzerprofile; standardmäßig werden diese
-Müllsammlerwurzeln durch symbolische Verknüpfungen in
address@hidden/var/guix/gcroots} dargestellt. Neue Müllsammlerwurzeln können zum
-Beispiel mit @command{guix build --root} festgelegt werden (siehe
address@hidden von guix build}). Der Befehl @command{guix gc --list-roots} 
listet
-sie auf.
-
-Bevor Sie mit @code{guix gc --collect-garbage} Speicher freimachen, wollen
-Sie vielleicht alte Generationen von Benutzerprofilen löschen, damit alte
-Paketerstellungen von diesen Generationen entfernt werden können. Führen Sie
-dazu @code{guix package --delete-generations} aus (siehe @ref{Aufruf von guix 
package}).
-
-Unsere Empfehlung ist, dass Sie den Müllsammler regelmäßig laufen lassen und
-wenn Sie wenig freien Speicherplatz zur Verfügung haben. Um zum Beispiel
-sicherzustellen, dass Sie mindestens address@hidden auf Ihrer Platte zur
-Verfügung haben, benutzen Sie einfach:
-
address@hidden
-guix gc -F 5G
address@hidden example
-
-Es ist völlig sicher, dafür eine nicht interaktive, regelmäßige
-Auftragsausführung vorzugeben (siehe @ref{Geplante Auftragsausführung} für eine
-Erklärung, wie man das tun kann). @command{guix gc} ohne
-Befehlszeilenargumente auszuführen, lässt so viel Müll wie möglich sammeln,
-aber das ist oft nicht, was man will, denn so muss man unter Umständen
-Software erneut erstellen oder erneut herunterladen, weil der Müllsammler
-sie als »tot« ansieht, sie aber zur Erstellung anderer Software wieder
-gebraucht wird — das trifft zum Beispiel auf die Compiler-Toolchain zu.
-
-Der Befehl @command{guix gc} hat drei Arbeitsmodi: Er kann benutzt werden,
-um als Müllsammler tote Dateien zu entfernen (das Standardverhalten), um
-ganz bestimmte, angegebene Datein zu löschen (mit der Befehlszeilenoption
address@hidden), um Müllsammlerinformationen auszugeben oder
-fortgeschrittenere Anfragen zu verarbeiten. Die
-Müllsammler-Befehlszeilenoptionen sind wie folgt:
-
address@hidden @code
address@hidden address@hidden
address@hidden -C address@hidden
-Lässt Müll sammeln — z.B.@: nicht erreichbare Dateien in @file{/gnu/store}
-und seinen Unterverzeichnissen. Wird keine andere Befehlszeilenoption
-angegeben, wird standardmäßig diese durchgeführt.
-
-Wenn ein @var{Minimum} angegeben wurde, hört der Müllsammler auf, sobald
address@hidden Bytes gesammelt wurden. Das @var{Minimum} kann die Anzahl der
-Bytes bezeichnen oder mit einer Einheit als Suffix versehen sein, wie etwa
address@hidden für Mebibytes und @code{GB} für Gigabytes (siehe @ref{Block size,
-size specifications,, coreutils, GNU Coreutils}).
-
-Wird kein @var{Minimum} angegeben, sammelt der Müllsammler allen Müll.
-
address@hidden address@hidden
address@hidden -F @var{Menge}
-Sammelt Müll, bis die angegebene @var{Menge} an freiem Speicher in
address@hidden/gnu/store} zur Verfügung steht, falls möglich; die @var{Menge} 
ist
-eine Speichergröße wie @code{500MiB}, wie oben beschrieben.
-
-Wenn die angegebene  @var{Menge} oder mehr bereits in @file{/gnu/store} frei
-verfügbar ist, passiert nichts.
-
address@hidden address@hidden
address@hidden -d address@hidden
-Bevor der Müllsammelvorgang beginnt, werden hiermit alle Generationen von
-allen Benutzerprofilen gelöscht, die älter sind als die angegebene
address@hidden; wird es als Administratornutzer »root« ausgeführt, geschieht
-dies mit den Profilen @emph{von allen Benutzern}.
-
-Zum Beispiel löscht der folgende Befehl alle Generationen Ihrer Profile, die
-älter als zwei Monate sind (ausgenommen die momentanen Generationen), und
-schmeißt dann den Müllsammler an, um Platz freizuräumen, bis mindestens 10
-GiB verfügbar sind:
-
address@hidden
-guix gc -d 2m -F 10G
address@hidden example
-
address@hidden --delete
address@hidden -D
-Versucht, alle als Argumente angegebenen Dateien oder Verzeichnisse im Store
-zu löschen. Dies schlägt fehl, wenn manche der Dateien oder Verzeichnisse
-nicht im Store oder noch immer lebendig sind.
-
address@hidden --list-failures
-Store-Objekte auflisten, die zwischengespeicherten Erstellungsfehlern
-entsprechen.
-
-Hierbei wird nichts ausgegeben, sofern der Daemon nicht mit
address@hidden gestartet wurde (siehe @ref{Aufruf des guix-daemon,
address@hidden).
-
address@hidden --list-roots
-Die Müllsammlerwurzeln auflisten, die dem Nutzer gehören. Wird der Befehl
-als Administratornutzer ausgeführt, werden @emph{alle} Müllsammlerwurzeln
-aufgelistet.
-
address@hidden --clear-failures
-Die angegebenen Store-Objekte aus dem Zwischenspeicher für fehlgeschlagene
-Erstellungen entfernen.
-
-Auch diese Option macht nur Sinn, wenn der Daemon mit
address@hidden gestartet wurde. Andernfalls passiert nichts.
-
address@hidden --list-dead
-Zeigt die Liste toter Dateien und Verzeichnisse an, die sich noch im Store
-befinden — das heißt, Dateien, die von keiner Wurzel mehr erreichbar sind.
-
address@hidden --list-live
-Zeige die Liste lebendiger Store-Dateien und -Verzeichnisse.
-
address@hidden table
-
-Außerdem können Referenzen unter bestehenden Store-Dateien gefunden werden:
-
address@hidden @code
-
address@hidden --references
address@hidden --referrers
address@hidden Paketabhängigkeiten
-Listet die referenzierten bzw. sie referenzierenden Objekte der angegebenen
-Store-Dateien auf.
-
address@hidden --requisites
address@hidden -R
address@hidden Abschluss
-Listet alle Voraussetzungen der als Argumente übergebenen Store-Dateien
-auf. Voraussetzungen sind die Store-Dateien selbst, ihre Referenzen sowie
-die Referenzen davon, rekursiv. Mit anderen Worten, die zurückgelieferte
-Liste ist der @dfn{transitive Abschluss} dieser Store-Dateien.
-
-Der Abschnitt @ref{Aufruf von guix size} erklärt ein Werkzeug, um den
-Speicherbedarf des Abschlusses eines Elements zu ermitteln. Siehe
address@hidden von guix graph} für ein Werkzeug, um den Referenzgraphen zu
-veranschaulichen.
-
address@hidden --derivers
address@hidden Ableitung
-Liefert die Ableitung(en), die zu den angegebenen Store-Objekten führen
-(siehe @ref{Ableitungen}).
-
-Zum Beispiel liefert dieser Befehl:
-
address@hidden
-guix gc --derivers `guix package -I ^emacs$ | cut -f4`
address@hidden example
-
address@hidden
-die @file{.drv}-Datei(en), die zum in Ihrem Profil installierten
address@hidden führen.
-
-Beachten Sie, dass es auch sein kann, dass keine passenden
address@hidden existieren, zum Beispiel wenn diese Dateien bereits dem
-Müllsammler zum Opfer gefallen sind. Es kann auch passieren, dass es mehr
-als eine passende @file{.drv} gibt, bei Ableitungen mit fester Ausgabe.
address@hidden table
-
-Zuletzt können Sie mit folgenden Befehlszeilenoptionen die Integrität des
-Stores prüfen und den Plattenspeicherverbrauch im Zaum halten.
-
address@hidden @option
-
address@hidden address@hidden
address@hidden Integrität, des Stores
address@hidden Integritätsprüfung
-Die Integrität des Stores verifizieren
-
-Standardmäßig wird sichergestellt, dass alle Store-Objekte, die in der
-Datenbank des Daemons als gültig markiert wurden, auch tatsächlich in
address@hidden/gnu/store} existieren.
-
-Wenn angegeben, müssen die @var{Optionen} eine kommagetrennte Liste aus
-mindestens einem der Worte @code{contents} und @code{repair} sein.
-
-Wenn Sie @option{--verify=contents} übergeben, berechnet der Daemon den Hash
-des Inhalts jedes Store-Objekts und vergleicht ihn mit dem Hash in der
-Datenbank. Sind die Hashes ungleich, wird eine Datenbeschädigung
-gemeldet. Weil dabei @emph{alle Dateien im Store} durchlaufen werden, kann
-der Befehl viel Zeit brauchen, besonders auf Systemen mit langsamer Platte.
-
address@hidden Store, reparieren
address@hidden Datenbeschädigung, Behebung
-Mit @option{--verify=repair} oder @option{--verify=contents,repair} versucht
-der Daemon, beschädigte Store-Objekte zu reparieren, indem er Substitute für
-selbige herunterlädt (siehe @ref{Substitute}). Weil die Reparatur nicht
-atomar und daher womöglich riskant ist, kann nur der Systemadministrator den
-Befehl benutzen. Eine weniger aufwendige Alternative, wenn Sie wissen,
-welches Objekt beschädigt ist, ist, @command{guix build --repair} zu
-benutzen (siehe @ref{Aufruf von guix build}).
-
address@hidden --optimize
address@hidden Deduplizieren
-Den Store durch Nutzung harter Verknüpfungen für identische Dateien
-optimieren — mit anderen Worten wird der Store @dfn{dedupliziert}.
-
-Der Daemon führt Deduplizierung automatisch nach jeder erfolgreichen
-Erstellung und jedem Importieren eines Archivs durch, sofern er nicht mit
address@hidden (siehe @ref{Aufruf des guix-daemon,
address@hidden) gestartet wurde. Diese Befehlszeilenoption
-brauchen Sie also in erster Linie dann, wenn der Daemon zuvor mit
address@hidden gestartet worden ist.
-
address@hidden table
-
address@hidden Aufruf von guix pull
address@hidden @command{guix pull} aufrufen
-
address@hidden Aktualisieren von Guix
address@hidden Updaten von Guix
address@hidden @command{guix pull}
address@hidden pull
-Nach der Installation oder Aktualisierung wird stets die neueste Version von
-Paketen verwendet, die in der aktuell installierten Distribution verfügbar
-ist. Um die Distribution und die Guix-Werkzeuge zu aktualisieren, führen Sie
address@hidden pull} aus. Der Befehl lädt den neuesten Guix-Quellcode
-einschließlich Paketbeschreibungen herunter und installiert ihn. Quellcode
-wird aus einem @uref{https://git-scm.com, Git}-Repository geladen,
-standardmäßig dem offiziellen Repository von address@hidden, was Sie aber
-auch ändern können.
-
-Danach wird @command{guix package} Pakete und ihre Versionen entsprechend
-der gerade heruntergeladenen Kopie von Guix benutzen. Nicht nur das, auch
-alle Guix-Befehle und Scheme-Module werden aus der neuesten Version von Guix
-kommen. Neue @command{guix}-Unterbefehle, die durch die Aktualisierung
-hinzugekommen sind, werden also auch verfügbar.
-
-Jeder Nutzer kann seine Kopie von Guix mittels @command{guix pull}
-aktualisieren, wodurch sich nur für den Nutzer etwas verändert, der
address@hidden pull} ausgeführt hat. Wenn also zum Beispiel der
-Administratornutzer @code{root} den Befehl @command{guix pull} ausführt, hat
-das keine Auswirkungen auf die für den Benutzer @code{alice} sichtbare
-Guix-Version, und umgekehrt.
-
-Das Ergebnis von @command{guix pull} ist ein als
address@hidden/.config/guix/current} verfügbares @dfn{Profil} mit dem neuesten
-Guix. Stellen Sie sicher, dass es am Anfang Ihres Suchpfades steht, damit
-Sie auch wirklich das neueste Guix und sein Info-Handbuch sehen (siehe
address@hidden):
-
address@hidden
-export PATH="$HOME/.config/guix/current/bin:$PATH"
-export INFOPATH="$HOME/.config/guix/current/share/info:$INFOPATH"
address@hidden example
-
-Die Befehlszeilenoption @code{--list-generations} oder kurz @code{-l} listet
-ältere von @command{guix pull} erzeugte Generationen auf, zusammen mit
-Informationen zu deren Provenienz.
-
address@hidden
-$ 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, @dots{}
-  69 packages upgraded: borg@@1.1.6, cheese@@3.28.0, @dots{}
address@hidden example
-
-Im Abschnitt @ref{Aufruf von guix describe, @command{guix describe}} werden
-andere Möglichkeiten erklärt, sich den momentanen Zustand von Guix
-beschreiben zu lassen.
-
-Das Profil @code{~/.config/guix/current} verhält sich genau wie jedes andere
-Profil, das von @command{guix package} erzeugt wurde (siehe @ref{Aufruf von 
guix package}). Das bedeutet, Sie können seine Generationen auflisten und es
-auf die vorherige Generation — also das vorherige Guix — zurücksetzen und so
-weiter:
-
address@hidden
-$ 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
address@hidden example
-
-Der Befehl @command{guix pull} wird in der Regel ohne Befehlszeilenargumente
-aufgerufen, aber er versteht auch folgende Befehlszeilenoptionen:
-
address@hidden @code
address@hidden address@hidden
address@hidden address@hidden
address@hidden address@hidden
-Download code for the @code{guix} channel from the specified @var{url}, at
-the given @var{commit} (a valid Git commit ID represented as a hexadecimal
-string), or @var{branch}.
-
address@hidden @file{channels.scm}, Konfigurationsdatei
address@hidden Konfigurationsdatei für Kanäle
-Diese Befehlszeilenoptionen sind manchmal bequemer, aber Sie können Ihre
-Konfiguration auch in der Datei @file{~/.config/guix/channels.scm} oder über
-die Option @option{--channels} angeben (siehe unten).
-
address@hidden address@hidden
address@hidden -C @var{Datei}
-Die Liste der Kanäle aus der angegebenen @var{Datei} statt aus
address@hidden/.config/guix/channels.scm} auslesen. Die @var{Datei} muss
-Scheme-Code enthalten, der zu einer Liste von Kanalobjekten ausgewertet
-wird. Siehe @ref{Kanäle} für nähere Informationen.
-
address@hidden address@hidden
address@hidden -l address@hidden
-Alle Generationen von @file{~/.config/guix/current} bzw., wenn ein
address@hidden angegeben wird, die dazu passenden Generationen auflisten. Die
-Syntax für das @var{Muster} ist dieselbe wie bei @code{guix package
---list-generations} (siehe @ref{Aufruf von guix package}).
-
-Im Abschnitt @ref{Aufruf von guix describe, @command{guix describe}} wird eine
-Möglichkeit erklärt, sich Informationen nur über die aktuelle Generation
-anzeigen zu lassen.
-
address@hidden address@hidden
address@hidden -p @var{Profil}
-Auf @var{Profil} anstelle von @file{~/.config/guix/current} arbeiten.
-
address@hidden --dry-run
address@hidden -n
-Anzeigen, welche(r) Commit(s) für die Kanäle benutzt würde(n) und was
-jeweils erstellt oder substituiert würde, ohne es tatsächlich durchzuführen.
-
address@hidden address@hidden
address@hidden -s @var{System}
-Versuchen, für die angegebene Art von @var{System} geeignete Binärdateien zu
-erstellen — z.B.@: @code{i686-linux} — statt für die Art von System, das die
-Erstellung durchführt.
-
address@hidden --verbose
-Ausführliche Informationen ausgeben und Erstellungsprotokolle auf der
-Standardfehlerausgabe ausgeben.
-
address@hidden --bootstrap
-Das neueste Guix mit dem Bootstrap-Guile erstellen. Diese
-Befehlszeilenoption ist nur für Guix-Entwickler von Nutzen.
address@hidden table
-
-Mit Hilfe von @dfn{Kanälen} können Sie bei @command{guix pull} anweisen, von
-welchem Repository und welchem Branch Guix aktualisiert werden soll, sowie
-von welchen @emph{weiteren} Repositorys Paketmodule bezogen werden
-sollen. Im Abschnitt @ref{Kanäle} finden Sie nähere Informationen.
-
-Außerdem unterstützt @command{guix pull} alle gemeinsamen
-Erstellungsoptionen (siehe @ref{Gemeinsame Erstellungsoptionen}).
-
address@hidden Kanäle
address@hidden Kanäle
-
address@hidden Kanäle
address@hidden @file{channels.scm}, Konfigurationsdatei
address@hidden Konfigurationsdatei für Kanäle
address@hidden @command{guix pull}, Konfigurationsdatei
address@hidden Konfiguration von @command{guix pull}
-Guix und die Sammlung darin verfügbarer Pakete können Sie durch Ausführen
-von @command{guix pull} aktualisieren (siehe @ref{Aufruf von guix pull}). 
Standardmäßig lädt @command{guix pull} Guix selbst vom offiziellen
-Repository von address@hidden herunter und installiert es. Diesen Vorgang
-können Sie anpassen, indem Sie @dfn{Kanäle} in der Datei
address@hidden/.config/guix/channels.scm} angeben. Ein Kanal enthält eine Angabe
-einer URL und eines Branches eines zu installierenden Git-Repositorys und
-Sie können @command{guix pull} veranlassen, die Aktualisierungen von einem
-oder mehreren Kanälen zu beziehen. Mit anderen Worten können Kanäle benutzt
-werden, um Guix @emph{anzupassen} und zu @emph{erweitern}, wie wir im
-Folgenden sehen werden.
-
address@hidden Einen eigenen Guix-Kanal benutzen
-
-Der Kanal namens @code{guix} gibt an, wovon Guix selbst — seine
-Befehlszeilenwerkzeuge und seine Paketsammlung — heruntergeladen werden
-sollten. Wenn Sie zum Beispiel mit Ihrer eigenen Kopie des Guix-Repositorys
-arbeiten möchten und diese auf @code{example.org} zu finden ist, und zwar im
-Branch namens @code{super-hacks}, dann schreiben Sie folgende Spezifikation
-in @code{~/.config/guix/channels.scm}:
-
address@hidden
-;; 'guix pull' mein eigenes Repository benutzen lassen.
-(list (channel
-        (name 'guix)
-        (url "https://example.org/my-guix.git";)
-        (branch "super-hacks")))
address@hidden lisp
-
address@hidden
-Ab dann wird @command{guix pull} seinen Code vom Branch @code{super-hacks}
-des Repositorys auf @code{example.org} beziehen.
-
address@hidden Weitere Kanäle angeben
-
address@hidden Paketsammlung erweitern (Kanäle)
address@hidden Eigene Pakete (Kanäle)
address@hidden Kanäle, für eigene Pakete
-Sie können auch @emph{weitere Kanäle} als Bezugsquelle angeben. Sagen wir,
-Sie haben ein paar eigene Paketvarianten oder persönliche Pakete, von denen
-Sie meinen, dass sie @emph{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. Dann würden Sie zunächst Module
-mit diesen Paketdefinitionen schreiben (siehe @ref{Paketmodule}) und
-diese dann in einem Git-Repository verwalten, welches Sie selbst oder jeder
-andere dann als zusätzlichen Kanal eintragen können, von dem Pakete geladen
-werden. Klingt gut, oder?
-
address@hidden What follows stems from discussions at
address@hidden <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=22629#134> as 
well as
address@hidden earlier discussions on address@hidden
address@hidden Warnung
-Bevor Sie, verehrter Nutzer, ausrufen: »Wow, das ist @emph{soooo coool}!«,
-und Ihren eigenen Kanal der Welt zur Verfügung stellen, möchten wir Ihnen
-auch ein paar Worte der Warnung mit auf den Weg geben:
-
address@hidden
address@hidden
-Bevor Sie einen Kanal veröffentlichen, überlegen Sie sich bitte erst, ob Sie
-die Pakete nicht besser zum eigentlichen Guix-Projekt beisteuern (siehe
address@hidden). Das Guix-Projekt ist gegenüber allen Arten freier
-Software offen und zum eigentlichen Guix gehörende Pakete stehen allen
-Guix-Nutzern zur Verfügung, außerdem profitieren sie von Guix’
-Qualitätssicherungsprozess.
-
address@hidden
-Wenn Sie Paketdefinitionen außerhalb von Guix betreuen, sehen wir
-Guix-Entwickler es als @emph{Ihre Aufgabe an, deren Kompatibilität
-sicherzstellen}. Bedenken Sie, dass Paketmodule und Paketdefinitionen nur
-Scheme-Code sind, der verschiedene Programmierschnittstellen (APIs)
-benutzt. Wir nehmen uns das Recht heraus, diese APIs jederzeit zu ändern,
-damit wir Guix besser machen können, womöglich auf eine Art, wodurch Ihr
-Kanal nicht mehr funktioniert. Wir ändern APIs nie einfach so, werden aber
-auch @emph{nicht} versprechen, APIs nicht zu verändern.
-
address@hidden
-Das bedeutet auch, dass Sie, wenn Sie einen externen Kanal verwenden und
-dieser kaputt geht, Sie dies bitte @emph{den Autoren des Kanals} und nicht
-dem Guix-Projekt melden.
address@hidden itemize
-
-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
address@hidden://www.gnu.org/philosophy/free-sw.html, freier Software}
-entspricht. Bitte schicken Sie eine E-Mail an @email{guix-devel@@gnu.org},
-wenn Sie dies diskutieren möchten.
address@hidden quotation
-
-Um einen Kanal zu benutzen, tragen Sie ihn in
address@hidden/.config/guix/channels.scm} ein, damit @command{guix pull} diesen
-Kanal @emph{zusätzlich} zu den standardmäßigen Guix-Kanälen als Paketquelle
-verwendet:
-
address@hidden %default-channels
address@hidden
-;; Meine persönlichen Pakete zu denen von Guix dazunehmen.
-(cons (channel
-        (name 'meine-persönlichen-pakete)
-        (url "https://example.org/personal-packages.git";))
-      %default-channels)
address@hidden lisp
-
address@hidden
-Beachten Sie, dass der obige Schnipsel (wie immer!)@: Scheme-Code ist; mit
address@hidden fügen wir einen Kanal zur Liste der Kanäle hinzu, an die die
-Variable @code{%default-channels} gebunden ist (siehe @ref{Pairs,
address@hidden and lists,, guile, GNU Guile Reference Manual}). Mit diesem
-Dateiinhalt wird @command{guix pull} nun nicht mehr nur Guix, sondern auch
-die Paketmodule aus Ihrem Repository erstellen. Das Ergebnis in
address@hidden/.config/guix/current} ist so die Vereinigung von Guix und Ihren
-eigenen Paketmodulen.
-
address@hidden
-$ guix pull --list-generations
address@hidden
-Generation 19  Aug 27 2018 16:20:48
-  guix d894ab8
-    repository URL: https://git.savannah.gnu.org/git/guix.git
-    branch: master
-    commit: d894ab8e9bfabcefa6c49d9ba2e834dd5a73a300
-  meine-persönlichen-pakete dd3df5e
-    repository URL: https://example.org/personal-packages.git
-    branch: master
-    commit: dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb
-  11 new packages: mein-gimp, mein-emacs-mit-coolen-features, @dots{}
-  4 packages upgraded: emacs-racket-mode@@0.0.2-2.1b78827, @dots{}
address@hidden example
-
address@hidden
-Obige Ausgabe von @command{guix pull} zeigt an, dass address@hidden
-sowohl Guix als auch Pakete aus dem Kanal @code{meine-persönlichen-pakete}
-enthält. Unter den aufgeführten neuen und aktualisierten Paketen kommen
-vielleicht manche wie @code{mein-gimp} und
address@hidden aus @code{meine-persönlichen-pakete},
-während andere aus dem Standard-Guix-Kanal kommen.
-
-Um einen Kanal zu erzeugen, müssen Sie ein Git-Repository mit Ihren eigenen
-Paketmodulen erzeugen und den Zugriff darauf ermöglichen. Das Repository
-kann beliebigen Inhalt haben, aber wenn es ein nützlicher Kanal sein soll,
-muss es Guile-Module enthalten, die Pakete exportieren. Sobald Sie anfangen,
-einen Kanal zu benutzen, verhält sich Guix, als wäre das Wurzelverzeichnis
-des Git-Repositorys des Kanals in Guiles Ladepfad enthalten (siehe @ref{Load
-Paths,,, guile, GNU Guile Reference Manual}). Wenn Ihr Kanal also zum
-Beispiel eine Datei als @file{my-packages/my-tools.scm} enthält, die ein
-Guile-Modul definiert, dann wird das Modul unter dem Namen
address@hidden(my-packages my-tools)} verfügbar sein und Sie werden es wie jedes
-andere Modul benutzen können (siehe @ref{Module,,, guile, GNU Guile
-Reference Manual}).
-
address@hidden Abhängigkeiten, bei Kanälen
address@hidden Metadaten, bei Kanälen
address@hidden Kanalabhängigkeiten deklarieren
-
-Kanalautoren können auch beschließen, die Paketsammlung von anderen Kanälen
-zu erweitern. Dazu können sie in einer Metadatendatei @file{.guix-channel}
-deklarieren, dass ihr Kanal von anderen Kanälen abhängt. Diese Datei muss im
-Wurzelverzeichnis des Kanal-Repositorys platziert werden.
-
-Die Metadatendatei sollte einen einfachen S-Ausdruck wie diesen enthalten:
-
address@hidden
-(channel
- (version 0)
- (dependencies
-  (channel
-   (name irgendeine-sammlung)
-   (url "https://example.org/erste-sammlung.git";))
-  (channel
-   (name eine-andere-sammlung)
-   (url "https://example.org/zweite-sammlung.git";)
-   (branch "testing"))))
address@hidden lisp
-
-Im Beispiel oben wird deklariert, dass dieser Kanal von zwei anderen Kanälen
-abhängt, die beide automatisch geladen werden. Die vom Kanal angebotenen
-Module werden in einer Umgebung kompiliert, in der die Module all dieser
-deklarierten Kanäle verfügbar sind.
-
-Um Verlässlichkeit und Wartbarkeit zu gewährleisten, sollen Sie darauf
-verzichten, eine Abhängigkeit von Kanälen herzustellen, die Sie nicht
-kontrollieren, außerdem sollten Sie sich auf eine möglichst kleine Anzahl
-von Abhängigkeiten beschränken.
-
address@hidden Guix nachbilden
-
address@hidden Festsetzen, bei Kanälen
address@hidden Nachbilden von Guix
address@hidden Reproduzierbarkeit von Guix
-Die Ausgabe von @command{guix pull --list-generations} oben zeigt genau, aus
-welchen Commits diese Guix-Instanz erstellt wurde. Wir können Guix so zum
-Beispiel auf einer anderen Maschine nachbilden, indem wir eine
-Kanalspezifikation in @file{~/.config/guix/channels.scm} angeben, die auf
-diese Commits »festgesetzt« ist.
-
address@hidden
-;; Ganz bestimmte Commits der relevanten Kanäle installieren.
-(list (channel
-       (name 'guix)
-       (url "https://git.savannah.gnu.org/git/guix.git";)
-       (commit "d894ab8e9bfabcefa6c49d9ba2e834dd5a73a300"))
-      (channel
-       (name 'meine-persönlichen-pakete)
-       (url "https://example.org/personal-packages.git";)
-       (branch "dd3df5e2c8818760a8fc0bd699e55d3b69fef2bb")))
address@hidden lisp
-
-Der Befehl @command{guix describe --format=channels} kann diese Kanalliste
-sogar direkt erzeugen (siehe @ref{Aufruf von guix describe}).
-
-Somit läuft auf beiden Maschinen @emph{genau dasselbe Guix} und es hat
-Zugang zu @emph{genau denselben Paketen}. Die Ausgabe von @command{guix
-build gimp} auf der einen Maschine wird Bit für Bit genau dieselbe wie die
-desselben Befehls auf der anderen Maschine sein. Das bedeutet auch, dass
-beide Maschinen Zugang zum gesamten Quellcode von Guix und daher auch
-transitiv Zugang zum Quellcode jedes davon definierten Pakets haben.
-
-Das verleiht Ihnen Superkräfte, mit denen Sie die Provenienz binärer
-Artefakte sehr feinkörnig nachverfolgen können und Software-Umgebungen nach
-Belieben nachbilden können. Sie können es als eine Art Fähigkeit zur
-»Meta-Reproduzierbarkeit« auffassen, wenn Sie möchten. Der Abschnitt
address@hidden beschreibt eine weitere Möglichkeit, diese Superkräfte zu
-nutzen.
-
address@hidden Untergeordnete
address@hidden Untergeordnete
-
address@hidden TODO: Remove this once we're more confident about API stability.
address@hidden Anmerkung
-Die hier beschriebenen Funktionalitäten sind in der Version @value{VERSION}
-bloß eine »Technologie-Vorschau«, daher kann sich die Schnittstelle in
-Zukunft noch ändern.
address@hidden quotation
-
address@hidden Untergeordnete
address@hidden Mischen von Guix-Versionen
-Manchmal könnten Sie Pakete aus der gerade laufenden Fassung von Guix mit
-denen mischen wollen, die in einer anderen Guix-Version verfügbar sind.
address@hidden ermöglichen dies, indem Sie verschiedene
-Guix-Versionen beliebig mischen können.
-
address@hidden untergeordnete Pakete
-Aus technischer Sicht ist ein »Untergeordneter« im Kern ein separater
-Guix-Prozess, der über eine REPL (siehe @ref{Aufruf von guix repl}) mit Ihrem
-Haupt-Guix-Prozess verbunden ist. Das Modul @code{(guix inferior)}
-ermöglicht es Ihnen, Untergeordnete zu erstellen und mit ihnen zu
-kommunizieren. Dadurch steht Ihnen auch eine hochsprachliche Schnittstelle
-zur Verfügung, um die von einem Untergeordneten angebotenen Pakete zu
-durchsuchen und zu verändern — @dfn{untergeordnete Pakete}.
-
-In Kombination mit Kanälen (siehe @ref{Kanäle}) bieten Untergeordnete eine
-einfache Möglichkeit, mit einer anderen Version von Guix zu
-interagieren. Nehmen wir zum Beispiel an, Sie wollen das aktuelle
address@hidden in Ihr Profil installieren, zusammen mit dem
address@hidden, wie es in einer früheren Guix-Version existiert hat —
-vielleicht weil das neuere @code{guile-json} eine inkompatible API hat und
-Sie daher Ihren Code mit der alten API benutzen möchten. Dazu könnten Sie
-ein Manifest für @code{guix package --manifest} schreiben (siehe
address@hidden von guix package}); in diesem Manifest würden Sie einen
-Untergeordneten für diese alte Guix-Version erzeugen, für die Sie sich
-interessieren, und aus diesem Untergeordneten das @code{guile-json}-Paket
-holen:
-
address@hidden
-(use-modules (guix inferior) (guix channels)
-             (srfi srfi-1))   ;für die Prozedur 'first'
-
-(define channels
-  ;; Dies ist die alte Version, aus der wir
-  ;; guile-json extrahieren möchten.
-  (list (channel
-         (name 'guix)
-         (url "https://git.savannah.gnu.org/git/guix.git";)
-         (commit
-          "65956ad3526ba09e1f7a40722c96c6ef7c0936fe"))))
-
-(define inferior
-  ;; Ein Untergeordneter, der obige Version repräsentiert.
-  (inferior-for-channels channels))
-
-;; Daraus erzeugen wir jetzt ein Manifest mit dem aktuellen
-;; »guile«-Paket und dem alten »guile-json«-Paket.
-(packages->manifest
- (list (first (lookup-inferior-packages inferior "guile-json"))
-       (specification->package "guile")))
address@hidden lisp
-
-Bei seiner ersten Ausführung könnte für @command{guix package --manifest}
-erst der angegebene Kanal erstellt werden müssen, bevor der Untergeordnete
-erstellt werden kann; nachfolgende Durchläufe sind wesentlich schneller,
-weil diese Guix-Version bereits zwischengespeichert ist.
-
-Folgende Prozeduren werden im Modul @code{(guix inferior)} angeboten, um
-einen Untergeordneten zu öffnen:
-
address@hidden {Scheme-Prozedur} inferior-for-channels @var{Kanäle} @
-   [#:cache-directory] [#:ttl] Liefert einen Untergeordneten für die
address@hidden, einer Liste von Kanälen. Dazu wird der Zwischenspeicher im
-Verzeichnis @var{cache-directory} benutzt, dessen Einträge nach @var{ttl}
-Sekunden gesammelt werden dürfen. Mit dieser Prozedur wird eine neue
-Verbindung zum Erstellungs-Daemon geöffnet.
-
-Als Nebenwirkung erstellt oder substituiert diese Prozedur unter Umständen
-Binärdateien für die @var{Kanäle}, was einige Zeit in Anspruch nehmen kann.
address@hidden deffn
-
address@hidden {Scheme-Prozedur} open-inferior @var{Verzeichnis} @
-  [#:command "bin/guix"] Öffnet das untergeordnete Guix mit dem Befehl
address@hidden im angegebenen @var{Verzeichnis} durch Ausführung von
address@hidden@var{Verzeichnis}/@var{command} repl} oder entsprechend. Liefert
address@hidden, wenn der Untergeordnete nicht gestartet werden konnte.
address@hidden deffn
-
address@hidden untergeordnete Pakete
-Die im Folgenden aufgeführten Prozeduren ermöglichen es Ihnen,
-untergeordnete Pakete abzurufen und zu verändern.
-
address@hidden {Scheme-Prozedur} inferior-packages @var{Untergeordneter}
-Liefert die Liste der Pakete in @var{Untergeordneter}.
address@hidden deffn
-
address@hidden {Scheme-Prozedur} lookup-inferior-packages @var{Untergeordneter} 
@var{Name} @
-   address@hidden Liefert die sortierte Liste der untergeordneten Pakete in
address@hidden, die zum Muster @var{Name} in @var{Untergeordneter}
-passen, dabei kommen höhere Versionsnummern zuerst. Wenn @var{Version} auf
-wahr gesetzt ist, werden nur Pakete geliefert, deren Versionsnummer mit dem
-Präfix @var{Version} beginnt.
address@hidden deffn
-
address@hidden {Scheme-Prozedur} inferior-package? @var{Objekt}
-Liefert wahr, wenn das @var{obj} ein Untergeordneter ist.
address@hidden deffn
-
address@hidden {Scheme-Prozedur} inferior-package-name @var{Paket}
address@hidden {Scheme-Prozedur} inferior-package-version @var{Paket}
address@hidden {Scheme-Prozedur} inferior-package-synopsis @var{Paket}
address@hidden {Scheme-Prozedur} inferior-package-description @var{Paket}
address@hidden {Scheme-Prozedur} inferior-package-home-page @var{Paket}
address@hidden {Scheme-Prozedur} inferior-package-location @var{Paket}
address@hidden {Scheme-Prozedur} inferior-package-inputs @var{Paket}
address@hidden {Scheme-Prozedur} inferior-package-native-inputs @var{Paket}
address@hidden {Scheme-Prozedur} inferior-package-propagated-inputs @var{Paket}
address@hidden {Scheme-Prozedur} inferior-package-transitive-propagated-inputs 
@var{Paket}
address@hidden {Scheme-Prozedur} inferior-package-native-search-paths 
@var{Paket}
address@hidden {Scheme-Prozedur} 
inferior-package-transitive-native-search-paths @var{Paket}
address@hidden {Scheme-Prozedur} inferior-package-search-paths @var{Paket}
-Diese Prozeduren sind das Gegenstück zu den Zugriffsmethoden des Verbunds
-»package« für Pakete (siehe @ref{»package«-Referenz}). Die meisten davon
-funktionieren durch eine Abfrage auf dem Untergeordneten, von dem das
address@hidden kommt, weshalb der Untergeordnete noch lebendig sein muss, wenn
-Sie diese Prozeduren aufrufen.
address@hidden deffn
-
-Untergeordnete Pakete können transparent wie jedes andere Paket oder
-dateiartige Objekt in G-Ausdrücken verwendet werden (siehe
address@hidden). Sie werden auch transparent wie reguläre Pakete von
-der Prozedur @code{packages->manifest} behandelt, welche oft in Manifesten
-benutzt wird (siehe @ref{Aufruf von guix package, siehe die
-Befehlszeilenoption @option{--manifest} von @command{guix package}}). Somit
-können Sie ein untergeordnetes Paket ziemlich überall dort verwenden, wo Sie
-ein reguläres Paket einfügen würden: in Manifesten, im Feld @code{packages}
-Ihrer @code{operating-system}-Deklaration und so weiter.
-
address@hidden Aufruf von guix describe
address@hidden @command{guix describe} aufrufen
-
address@hidden Reproduzierbarkeit
address@hidden Nachbilden von Guix
-Sie könnten sich des Öfteren Fragen stellen wie: »Welche Version von Guix
-benutze ich gerade?« oder »Welche Kanäle benutze ich?« Diese Informationen
-sind in vielen Situationen nützlich: wenn Sie eine Umgebung auf einer
-anderen Maschine oder mit einem anderen Benutzerkonto @emph{nachbilden}
-möchten, wenn Sie einen Fehler melden möchten, wenn Sie festzustellen
-versuchen, welche Änderung an den von Ihnen verwendeten Kanälen diesen
-Fehler verursacht hat, oder wenn Sie Ihren Systemzustand zum Zweck der
-Reproduzierbarkeit festhalten möchten. Der Befehl @command{guix describe}
-gibt Ihnen Antwort auf diese Fragen.
-
-Wenn Sie ihn aus einem mit @command{guix pull} bezogenen @command{guix}
-heraus ausführen, zeigt Ihnen @command{guix describe} die Kanäle an, aus
-denen es erstellt wurde, jeweils mitsamt ihrer Repository-URL und Commit-ID
-(siehe @ref{Kanäle}):
-
address@hidden
-$ guix describe
-Generation 10  Sep 03 2018 17:32:44    (current)
-  guix e0fa68c
-    repository URL: https://git.savannah.gnu.org/git/guix.git
-    branch: master
-    commit: e0fa68c7718fffd33d81af415279d6ddb518f727
address@hidden example
-
-Wenn Sie mit dem Versionskontrollsystem Git vertraut sind, erkennen Sie
-vielleicht die Ähnlichkeit zu @command{git describe}; die Ausgabe ähnelt
-auch der von @command{guix pull --list-generations} eingeschränkt auf die
-aktuelle Generation (siehe @ref{Aufruf von guix pull, die Befehlszeilenoption
address@hidden). Weil die oben gezeigte Git-Commit-ID
-eindeutig eine bestimmte Version von Guix bezeichnet, genügt diese
-Information, um die von Ihnen benutzte Version von Guix zu beschreiben, und
-auch, um sie nachzubilden.
-
-Damit es leichter ist, Guix nachzubilden, kann Ihnen @command{guix describe}
-auch eine Liste der Kanäle statt einer menschenlesbaren Beschreibung wie
-oben liefern:
-
address@hidden
-$ guix describe -f channels
-(list (channel
-        (name 'guix)
-        (url "https://git.savannah.gnu.org/git/guix.git";)
-        (commit
-          "e0fa68c7718fffd33d81af415279d6ddb518f727")))
address@hidden example
-
address@hidden
-Sie können die Ausgabe in einer Datei speichern, die Sie an @command{guix
-pull -C} auf einer anderen Maschine oder zu einem späteren Zeitpunkt
-übergeben, wodurch dann eine Instanz @emph{von genau derselben Guix-Version}
-installiert wird (siehe @ref{Aufruf von guix pull, die Befehlszeilenoption
address@hidden). Daraufhin können Sie, weil Sie jederzeit dieselbe Version von
-Guix installieren können, auch gleich @emph{eine vollständige
-Softwareumgebung genau nachbilden}. Wir halten das trotz aller
-Bescheidenheit für @emph{klasse} und hoffen, dass Ihnen das auch gefällt!
-
-Die genauen Befehlszeilenoptionen, die @command{guix describe} unterstützt,
-lauten wie folgt:
-
address@hidden @code
address@hidden address@hidden
address@hidden -f @var{Format}
-Die Ausgabe im angegebenen @var{Format} generieren, was eines der Folgenden
-sein muss:
-
address@hidden @code
address@hidden human
-für menschenlesbare Ausgabe,
address@hidden Kanäle
-eine Liste von Kanalspezifikationen erzeugen, die an @command{guix pull -C}
-übergeben werden oder als @file{~/.config/guix/channels.scm} eingesetzt
-werden können (siehe @ref{Aufruf von guix pull}),
address@hidden json
address@hidden JSON
-generiert eine Liste von Kanalspezifikationen im JSON-Format,
address@hidden recutils
-generiert eine Liste von Kanalspezifikationen im Recutils-Format.
address@hidden table
-
address@hidden address@hidden
address@hidden -p @var{Profil}
-Informationen über das @var{Profil} anzeigen.
address@hidden table
-
address@hidden Aufruf von guix archive
address@hidden @command{guix archive} aufrufen
-
address@hidden @command{guix archive}
address@hidden Archivdateien
-Der Befehl @command{guix archive} ermöglicht es Nutzern, Dateien im Store in
-eine einzelne Archivdatei zu @dfn{exportieren} und diese später auf einer
-Maschine, auf der Guix läuft, zu @dfn{importieren}. Insbesondere können so
-Store-Objekte von einer Maschine in den Store einer anderen Maschine
-übertragen werden.
-
address@hidden Anmerkung
-Wenn Sie nach einer Möglichkeit suchen, Archivdateien für andere Werkzeuge
-als Guix zu erstellen, finden Sie Informationen dazu im Abschnitt
address@hidden von guix pack}.
address@hidden quotation
-
address@hidden Store-Objekte exportieren
-Führen Sie Folgendes aus, um Store-Dateien als ein Archiv auf die
-Standardausgabe zu exportieren:
-
address@hidden
-guix archive --export @var{Optionen} @var{Spezifikationen}...
address@hidden example
-
address@hidden sind dabei entweder die Namen von Store-Dateien oder
-Paketspezifikationen wie bei @command{guix package} (siehe @ref{Aufruf von 
guix package}). Zum Beispiel erzeugt der folgende Befehl ein Archiv der
address@hidden des Pakets @code{git} sowie die Hauptausgabe von
address@hidden:
-
address@hidden
-guix archive --export git:gui /gnu/store/...-emacs-24.3 > groß.nar
address@hidden example
-
-Wenn die angegebenen Pakete noch nicht erstellt worden sind, werden sie
-durch @command{guix archive} automatisch erstellt. Der Erstellungsprozess
-kann durch die gemeinsamen Erstellungsoptionen gesteuert werden (siehe
address@hidden Erstellungsoptionen}).
-
-Um das @code{emacs}-Paket auf eine über SSH verbundene Maschine zu
-übertragen, würde man dies ausführen:
-
address@hidden
-guix archive --export -r emacs | ssh die-maschine guix archive --import
address@hidden example
-
address@hidden
-Auf gleiche Art kann auch ein vollständiges Benutzerprofil von einer
-Maschine auf eine andere übertragen werden:
-
address@hidden
-guix archive --export -r $(readlink -f ~/.guix-profile) | \
-  ssh die-maschine guix-archive --import
address@hidden example
-
address@hidden
-Jedoch sollten Sie in beiden Beispielen beachten, dass alles, was zu
address@hidden, dem Profil oder deren Abhängigkeiten (wegen @code{-r}) gehört,
-übertragen wird, egal ob es schon im Store der Zielmaschine vorhanden ist
-oder nicht. Mit der Befehlszeilenoption @code{--missing} lässt sich
-herausfinden, welche Objekte im Ziel-Store noch fehlen. Der Befehl
address@hidden copy} vereinfacht und optimiert diesen gesamten Prozess, ist
-also, was Sie in diesem Fall wahrscheinlich eher benutzen wollten (siehe
address@hidden von guix copy}).
-
address@hidden Nar, Archivformat
address@hidden Normalisiertes Archiv (Nar)
-Archive werden als »Normalisiertes Archiv«, kurz »Nar«, formatiert. Diese
-Technik folgt einem ähnlichen Gedanken wie beim »tar«-Format, unterscheidet
-sich aber auf eine für unsere Zwecke angemessene Art. Erstens werden im
-Nar-Format nicht sämtliche Unix-Metadaten aller Dateien aufgenommen, sondern
-nur der Dateityp (ob es sich um eine reguläre Datei, ein Verzeichnis oder
-eine symbolische Verknüpfung handelt). Unix-Dateiberechtigungen sowie
-Besitzer und Gruppe werden nicht gespeichert. Zweitens entspricht die
-Reihenfolge, in der der Inhalt von Verzeichnissen abgelegt wird, immer der
-Reihenfolge, in der die Dateinamen gemäß der C-Locale sortiert
-würden. Dadurch wird die Erstellung von Archivdateien völlig
-deterministisch.
-
address@hidden FIXME: Add xref to daemon doc about signatures.
-Beim Exportieren versieht der Daemon den Inhalt des Archivs mit einer
-digitalen Signatur, auch Beglaubigung genannt. Diese digitale Signatur wird
-an das Archiv angehängt. Beim Importieren verifiziert der Daemon die
-Signatur und lehnt den Import ab, falls die Signatur ungültig oder der
-signierende Schlüssel nicht autorisiert ist.
-
-Die wichtigsten Befehlszeilenoptionen sind:
-
address@hidden @code
address@hidden --export
-Exportiert die angegebenen Store-Dateien oder Pakete (siehe unten) und
-schreibt das resultierende Archiv auf die Standardausgabe.
-
-Abhängigkeiten @emph{fehlen} in der Ausgabe, außer wenn @code{--recursive}
-angegeben wurde.
-
address@hidden -r
address@hidden --recursive
-Zusammen mit @code{--export} wird @command{guix archive} hiermit angewiesen,
-Abhängigkeiten der angegebenen Objekte auch ins Archiv aufzunehmen. Das
-resultierende Archiv ist somit eigenständig; es enthält den Abschluss der
-exportierten Store-Objekte.
-
address@hidden --import
-Ein Archiv von der Standardeingabe lesen und darin enthaltende Dateien in
-den Store importieren. Der Import bricht ab, wenn das Archiv keine gültige
-digitale Signatur hat oder wenn es von einem öffentlichen Schlüssel signiert
-wurde, der keiner der autorisierten Schlüssel ist (siehe @code{--authorize}
-weiter unten).
-
address@hidden --missing
-Eine Liste der Store-Dateinamen von der Standardeingabe lesen, je ein Name
-pro Zeile, und auf die Standardausgabe die Teilmenge dieser Dateien
-schreiben, die noch nicht im Store vorliegt.
-
address@hidden address@hidden
address@hidden Signieren, von Archiven
-Ein neues Schlüsselpaar für den Daemon erzeugen. Dies ist erforderlich,
-damit Archive mit @code{--export} exportiert werden können. Beachten Sie,
-dass diese Option normalerweise einige Zeit in Anspruch nimmt, da erst
-Entropie für die Erzeugung des Schlüsselpaares gesammelt werden muss.
-
-Das erzeugte Schlüsselpaar wird typischerweise unter @file{/etc/guix}
-gespeichert, in den Dateien @file{signing-key.pub} (für den öffentlichen
-Schlüssel) und @file{signing-key.sec} (für den privaten Schlüssel, der
-geheim gehalten werden muss). Wurden keine @var{Parameters} angegeben, wird
-ein ECDSA-Schlüssel unter Verwendung der Kurve Ed25519 erzeugt, oder, falls
-die Libgcrypt-Version älter als 1.6.0 ist, ein 4096-Bit-RSA-Schlüssel. Sonst
-geben die @var{Parameter} für Libgcrypt geeignete Parameter für
address@hidden an (siehe @ref{General public-key related Functions,
address@hidden,, gcrypt, The Libgcrypt Reference Manual}).
-
address@hidden --authorize
address@hidden Autorisieren, von Archiven
-Mit dem auf der Standardeingabe übergebenen öffentlichen Schlüssel signierte
-Importe autorisieren. Der öffentliche Schlüssel muss als
-»advanced«-formatierter S-Ausdruck gespeichert sein, d.h.@: im selben Format
-wie die Datei @file{signing-key.pub}.
-
-Die Liste autorisierter Schlüssel wird in der Datei @file{/etc/guix/acl}
-gespeichert, die auch von Hand bearbeitet werden kann. Die Datei enthält
address@hidden://people.csail.mit.edu/rivest/Sexp.txt, »advanced«-formatierte
-S-Ausdrücke} und ist als eine Access Control List für die
address@hidden://theworld.com/~cme/spki.txt, Simple Public-Key Infrastructure
-(SPKI)} aufgebaut.
-
address@hidden address@hidden
address@hidden -x @var{Verzeichnis}
-Ein Archiv mit einem einzelnen Objekt lesen, wie es von Substitutservern
-geliefert wird (siehe @ref{Substitute}) und ins @var{Verzeichnis}
-entpacken. Dies ist eine systemnahe Operation, die man nur selten direkt
-benutzt; siehe unten.
-
-Zum Beispiel entpackt folgender Befehl das Substitut für Emacs, wie es von
address@hidden@value{SUBSTITUTE-SERVER}} geliefert wird, nach @file{/tmp/emacs}:
-
address@hidden
-$ wget -O - \
-  https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-emacs-24.5 \
-  | bunzip2 | guix archive -x /tmp/emacs
address@hidden example
-
-Archive mit nur einem einzelnen Objekt unterscheiden sich von Archiven für
-mehrere Dateien, wie sie @command{guix archive --export} erzeugt; sie
-enthalten nur ein einzelnes Store-Objekt und @emph{keine} eingebettete
-Signatur. Beim Entpacken findet also @emph{keine} Signaturprüfung statt und
-ihrer Ausgabe sollte so erst einmal nicht vertraut werden.
-
-Der eigentliche Zweck dieser Operation ist, die Inspektion von
-Archivinhalten von Substitutservern möglich zu machen, auch wenn diesen
-unter Umständen nicht vertraut wird.
-
address@hidden table
-
-
address@hidden 
*********************************************************************
address@hidden Entwicklung
address@hidden Entwicklung
-
address@hidden Softwareentwicklung
-Wenn Sie ein Software-Entwickler sind, gibt Ihnen Guix Werkzeuge an die
-Hand, die Sie für hilfreich erachten dürften — ganz unabhängig davon, in
-welcher Sprache Sie entwickeln. Darum soll es in diesem Kapitel gehen.
-
-Der Befehl @command{guix environment} stellt eine bequeme Möglichkeit dar,
-wie Sie eine @dfn{Entwicklungsumgebung} aufsetzen können, in der all die
-Abhängigkeiten und Werkzeuge enthalten sind, die Sie brauchen, wenn Sie an
-Ihrem Lieblingssoftwarepaket arbeiten. Der Befehl @command{guix pack} macht
-es Ihnen möglich, @dfn{Anwendungsbündel} zu erstellen, die leicht an Nutzer
-verteilt werden können, die kein Guix benutzen.
-
address@hidden
-* Aufruf von guix environment::  Entwicklungsumgebungen einrichten.
-* Aufruf von guix pack::     Software-Bündel erstellen.
address@hidden menu
-
address@hidden Aufruf von guix environment
address@hidden @command{guix environment} aufrufen
-
address@hidden reproduzierbare Erstellungsumgebungen
address@hidden Entwicklungsumgebungen
address@hidden @command{guix environment}
address@hidden Umgebung, Paketerstellungsumgebung
-Der Zweck von @command{guix environment} ist es, Hacker beim Aufbau einer
-reproduzierbaren Entwicklungsumgebung zu unterstützen, ohne dass diese ihr
-Paketprofil verunreinigen müssen. Das Werkzeug @command{guix environment}
-nimmt eines oder mehrere Pakete entgegen und erstellt erst all ihre
-Eingaben, um dann eine Shell-Umgebung herzustellen, in der diese benutzt
-werden können.
-
-Die allgemeine Syntax lautet:
-
address@hidden
-guix environment @var{Optionen} @address@hidden
address@hidden example
-
-Folgendes Beispiel zeigt, wie eine neue Shell gestartet wird, auf der alles
-für die Entwicklung von address@hidden eingerichtet ist:
-
address@hidden
-guix environment guile
address@hidden example
-
-Wenn benötigte Abhängigkeiten noch nicht erstellt worden sind, wird
address@hidden environment} sie automatisch erstellen lassen. Die Umgebung
-der neuen Shell ist eine ergänzte Version der Umgebung, in der @command{guix
-environment} ausgeführt wurde. Sie enthält neben den existierenden
-Umgebungsvariablen auch die nötigen Suchpfade, um das angegebene Paket
-erstellen zu können. Um eine »reine« Umgebung zu erstellen, in der die
-ursprünglichen Umgebungsvariablen nicht mehr vorkommen, kann die
-Befehlszeilenoption @code{--pure} benutzt address@hidden ergänzen
-Nutzer fälschlicherweise Umgebungsvariable wie @code{PATH} in ihrer
address@hidden/.bashrc}-Datei. Das hat zur Folge, dass wenn @code{guix 
environment}
-Bash startet, selbige @file{~/.bashrc} von Bash gelesen wird und die neuen
-Umgebungen somit »verunreinigt«. Es ist ein Fehler, solche Umgebungsvariable
-in @file{.bashrc} zu definieren, stattdessen sollten sie in
address@hidden geschrieben werden, was nur von Login-Shells mit
-»source« geladen wird. Siehe @ref{Bash Startup Files,,, bash, The GNU Bash
-Reference Manual} für Details über beim Starten von Bash gelesene Dateien}.
-
address@hidden GUIX_ENVIRONMENT
address@hidden environment} definiert die Variable @code{GUIX_ENVIRONMENT} in
-der neu erzeugten Shell. Ihr Wert ist der Dateiname des Profils dieser neuen
-Umgebung. Das könnten Nutzer verwenden, um zum Beispiel eine besondere
-Prompt als Eingabeaufforderung für Entwicklungsumgebungen in ihrer
address@hidden festzulegen (siehe @ref{Bash Startup Files,,, bash, The GNU
-Bash Reference Manual}):
-
address@hidden
-if [ -n "$GUIX_ENVIRONMENT" ]
-then
-    export PS1="\u@@\h \w [dev]\$ "
-fi
address@hidden example
-
address@hidden
-…@: oder um ihr Profil durchzusehen:
-
address@hidden
-$ ls "$GUIX_ENVIRONMENT/bin"
address@hidden example
-
-Des Weiteren kann mehr als ein Paket angegeben werden. In diesem Fall wird
-die Vereinigung der Eingaben der jeweiligen Pakete zugänglich gemacht. Zum
-Beispiel erzeugt der folgende Befehl eine Shell, in der alle Abhängigkeiten
-von sowohl Guile als auch Emacs verfügbar sind:
-
address@hidden
-guix environment guile emacs
address@hidden example
-
-Manchmal will man keine interaktive Shell-Sitzung. Ein beliebiger Befehl
-kann aufgerufen werden, indem man nach Angabe der Pakete noch @code{--} vor
-den gewünschten Befehl schreibt, um ihn von den übrigen Argumenten
-abzutrennen:
-
address@hidden
-guix environment guile -- make -j4
address@hidden example
-
-In anderen Situationen ist es bequemer, aufzulisten, welche Pakete in der
-Umgebung benötigt werden. Zum Beispiel führt der folgende Befehl
address@hidden aus einer Umgebung heraus aus, in der address@hidden und
-NumPy enthalten sind:
-
address@hidden
-guix environment --ad-hoc python2-numpy python-2.7 -- python
address@hidden example
-
-Man kann auch sowohl die Abhängigkeiten eines Pakets haben wollen, als auch
-ein paar zusätzliche Pakete, die nicht Erstellungs- oder
-Laufzeitabhängigkeiten davon sind, aber trotzdem bei der Entwicklung
-nützlich sind. Deshalb hängt die Wirkung von der Position der
-Befehlszeilenoption @code{--ad-hoc} ab. Pakete, die links von
address@hidden stehen, werden als Pakete interpretiert, deren
-Abhängigkeiten zur Umgebung hinzugefügt werden. Pakete, die rechts stehen,
-werden selbst zur Umgebung hinzugefügt. Zum Beispiel erzeugt der folgende
-Befehl eine Guix-Entwicklungsumgebung, die zusätzlich Git und strace
-umfasst:
-
address@hidden
-guix environment guix --ad-hoc git strace
address@hidden example
-
-Manchmal ist es wünschenswert, die Umgebung so viel wie möglich zu
-isolieren, um maximale Reinheit und Reproduzierbarkeit zu
-bekommen. Insbesondere ist es wünschenswert, den Zugriff auf @file{/usr/bin}
-und andere Systemressourcen aus der Entwicklungsumgebung heraus zu
-verhindern, wenn man Guix auf einer fremden Wirtsdistribution benutzt, die
-nicht Guix System ist. Zum Beispiel startet der folgende Befehl eine
-Guile-REPL in einer isolierten Umgebung, einem sogenannten »Container«, in
-der nur der Store und das aktuelle Arbeitsverzeichnis eingebunden sind:
-
address@hidden
-guix environment --ad-hoc --container guile -- guile
address@hidden example
-
address@hidden Anmerkung
-Die Befehlszeilenoption @code{--container} funktioniert nur mit Linux-libre
-3.19 oder neuer.
address@hidden quotation
-
-Im Folgenden werden die verfügbaren Befehlszeilenoptionen zusammengefasst.
-
address@hidden @code
address@hidden address@hidden
address@hidden -r @var{Datei}
address@hidden persistente Umgebung
address@hidden Müllsammlerwurzel, für Umgebungen
-Die @var{Datei} zu einer symbolischen Verknüpfung auf das Profil dieser
-Umgebung machen und als eine Müllsammlerwurzel registrieren.
-
-Das ist nützlich, um seine Umgebung vor dem Müllsammler zu schützen und sie
-»persistent« zu machen.
-
-Wird diese Option weggelassen, ist die Umgebung nur, solange die Sitzung von
address@hidden environment} besteht, vor dem Müllsammler sicher. Das
-bedeutet, wenn Sie das nächste Mal dieselbe Umgebung neu erzeugen, müssen
-Sie vielleicht Pakete neu erstellen oder neu herunterladen. @ref{Aufruf von 
guix gc} hat mehr Informationen über Müllsammlerwurzeln.
-
address@hidden address@hidden
address@hidden -e @var{Ausdruck}
-Eine Umgebung für das Paket oder die Liste von Paketen erzeugen, zu der der
address@hidden ausgewertet wird.
-
-Zum Beispiel startet dies:
-
address@hidden
-guix environment -e '(@@ (gnu packages maths) petsc-openmpi)'
address@hidden example
-
-eine Shell mit der Umgebung für eben diese bestimmte Variante des Pakets
-PETSc.
-
-Wenn man dies ausführt:
-
address@hidden
-guix environment --ad-hoc -e '(@@ (gnu) %base-packages)'
address@hidden example
-
-bekommt man eine Shell, in der alle Basis-Pakete verfügbar sind.
-
-Die obigen Befehle benutzen nur die Standard-Ausgabe des jeweiligen
-Pakets. Um andere Ausgaben auszuwählen, können zweielementige Tupel
-spezifiziert werden:
-
address@hidden
-guix environment --ad-hoc -e '(list (@@ (gnu packages bash) bash) "include")'
address@hidden example
-
address@hidden address@hidden
address@hidden -l @var{Datei}
-Eine Umgebung erstellen für das Paket oder die Liste von Paketen, zu der der
-Code in der @var{Datei} ausgewertet wird.
-
-Zum Beispiel könnte die @var{Datei} eine Definition wie diese enthalten
-(siehe @ref{Pakete definieren}):
-
address@hidden
address@hidden environment-gdb.scm
address@hidden example
-
address@hidden address@hidden
address@hidden -m @var{Datei}
-Eine Umgebung für die Pakete erzeugen, die im Manifest-Objekt enthalten
-sind, das vom Scheme-Code in der @var{Datei} geliefert wird.
-
-Dies verhält sich ähnlich wie die gleichnamige Option des Befehls
address@hidden package} (siehe @ref{profile-manifest, @option{--manifest}})
-und benutzt auch dieselben Manifestdateien.
-
address@hidden --ad-hoc
-Alle angegebenen Pakete in der resultierenden Umgebung einschließen, als
-wären sie Eingaben eines @i{ad hoc} definierten Pakets. Diese
-Befehlszeilenoption ist nützlich, um schnell Umgebungen aufzusetzen, ohne
-dafür einen Paketausdruck schreiben zu müssen, der die gewünschten Eingaben
-enthält.
-
-Zum Beispiel wird mit diesem Befehl:
-
address@hidden
-guix environment --ad-hoc guile guile-sdl -- guile
address@hidden example
-
address@hidden in einer Umgebung ausgeführt, in der sowohl Guile als auch
-Guile-SDL zur Verfügung stehen.
-
-Beachten Sie, dass in diesem Beispiel implizit die vorgegebene Ausgabe von
address@hidden und @code{guile-sdl} verwendet wird, es aber auch möglich ist,
-eine bestimmte Ausgabe auszuwählen — z.B.@: wird mit @code{glib:bin} die
-Ausgabe @code{bin} von @code{glib} gewählt (siehe @ref{Pakete mit mehreren 
Ausgaben.}).
-
-Diese Befehlszeilenoption kann mit dem standardmäßigen Verhalten von
address@hidden environment} verbunden werden. Pakete, die vor @code{--ad-hoc}
-aufgeführt werden, werden als Pakete interpretiert, deren Abhängigkeiten zur
-Umgebung hinzugefügt werden, was dem standardmäßigen Verhalten
-entspricht. Pakete, die danach aufgeführt werden, werden selbst zur Umgebung
-hinzugefügt.
-
address@hidden --pure
-Bestehende Umgebungsvariable deaktivieren, wenn die neue Umgebung erzeugt
-wird, mit Ausnahme der mit @option{--preserve} angegebenen Variablen (siehe
-unten). Dies bewirkt, dass eine Umgebung erzeugt wird, in der die Suchpfade
-nur Paketeingaben nennen und sonst nichts.
-
address@hidden address@hidden
address@hidden -E @var{Regexp}
-Wenn das hier zusammen mit @option{--pure} angegeben wird, bleiben die zum
-regulären Ausdruck @var{Regexp} passenden Umgebungsvariablen erhalten — mit
-anderen Worten werden sie auf eine »weiße Liste« von Umgebungsvariablen
-gesetzt, die erhalten bleiben müssen. Diese Befehlszeilenoption kann
-mehrmals wiederholt werden.
-
address@hidden
-guix environment --pure --preserve=^SLURM --ad-hoc openmpi @dots{} \
-  -- mpirun @dots{}
address@hidden example
-
-In diesem Beispiel wird @command{mpirun} in einem Kontext ausgeführt, in dem
-die einzig definierten Umgebungsvariablen @code{PATH} und solche sind, deren
-Name mit @code{SLURM} beginnt, sowie die üblichen besonders »kostbaren«
-Variablen (@code{HOME}, @code{USER}, etc.).
-
address@hidden --search-paths
-Die Umgebungsvariablendefinitionen anzeigen, aus denen die Umgebung besteht.
-
address@hidden address@hidden
address@hidden -s @var{System}
-Versuchen, für das angegebene @var{System} zu erstellen — z.B.@:
address@hidden
-
address@hidden --container
address@hidden -C
address@hidden container
-Den @var{Befehl} in einer isolierten Umgebung (einem sogenannten
-»Container«) ausführen. Das aktuelle Arbeitsverzeichnis außerhalb des
-Containers wird in den Container zugeordnet. Zusätzlich wird, wenn es mit
-der Befehlszeilenoption @code{--user} nicht anders spezifiziert wurde, ein
-stellvertretendes persönliches Verzeichnis erzeugt, dessen Inhalt der des
-wirklichen persönlichen Verzeichnisses ist, sowie eine passend konfigurierte
-Datei @file{/etc/passwd}.
-
-Der erzeugte Prozess läuft außerhalb des Containers als der momentane
-Nutzer. Innerhalb des Containers hat er dieselbe UID und GID wie der
-momentane Nutzer, außer die Befehlszeilenoption @option{--user} wird
-übergeben (siehe unten).
-
address@hidden --network
address@hidden -N
-Bei isolierten Umgebungen (»Containern«) wird hiermit der
-Netzwerk-Namensraum mit dem des Wirtssystems geteilt. Container, die ohne
-diese Befehlszeilenoption erzeugt wurden, haben nur Zugriff auf das
-Loopback-Gerät.
-
address@hidden --link-profile
address@hidden -P
-Bei isolierten Umgebungen (»Containern«) wird das Umgebungsprofil im
-Container als @file{~/.guix-profile} verknüpft. Das ist äquivalent dazu, den
-Befehl @command{ln -s $GUIX_ENVIRONMENT ~/.guix-profile} im Container
-auszuführen. Wenn das Verzeichnis bereits existiert, schlägt das Verknüpfen
-fehl und die Umgebung wird nicht hergestellt. Dieser Fehler wird immer
-eintreten, wenn @command{guix environment} im persönlichen Verzeichnis des
-Benutzers aufgerufen wurde.
-
-Bestimmte Pakete sind so eingerichtet, dass sie in @code{~/.guix-profile}
-nach Konfigurationsdateien und Daten suchen,@footnote{Zum Beispiel
-inspiziert das Paket @code{fontconfig} das Verzeichnis
address@hidden/.guix-profile/share/fonts}, um zusätzliche Schriftarten zu 
finden.}
-weshalb @code{--link-profile} benutzt werden kann, damit sich diese
-Programme auch in der isolierten Umgebung wie erwartet verhalten.
-
address@hidden address@hidden
address@hidden -u @var{Benutzer}
-Bei isolierten Umgebungen (»Containern«) wird der Benutzername
address@hidden anstelle des aktuellen Benutzers benutzt. Der erzeugte
-Eintrag in @file{/etc/passwd} im Container wird also den Namen
address@hidden enthalten und das persönliche Verzeichnis wird den Namen
address@hidden/home/BENUTZER} tragen; keine GECOS-Daten über den Nutzer werden 
in
-die Umgebung übernommen. Des Weiteren sind UID und GID innerhalb der
-isolierten Umgebung auf 1000 gesetzt. @var{Benutzer} muss auf dem System
-nicht existieren.
-
-Zusätzlich werden alle geteilten oder exponierten Pfade (siehe jeweils
address@hidden und @code{--expose}), deren Ziel innerhalb des persönlichen
-Verzeichnisses des aktuellen Benutzers liegt, relativ zu
address@hidden/home/BENUTZER} erscheinen, einschließlich der automatischen 
Zuordnung
-des aktuellen Arbeitsverzeichnisses.
-
address@hidden
-# wird Pfade als /home/foo/wd, /home/foo/test und /home/foo/target exponieren
-cd $HOME/wd
-guix environment --container --user=foo \
-     --expose=$HOME/test \
-     --expose=/tmp/target=$HOME/target
address@hidden example
-
-Obwohl dies das Datenleck von Nutzerdaten durch Pfade im persönlichen
-Verzeichnis und die Benutzereinträge begrenzt, kann dies nur als Teil einer
-größeren Lösung für Privatsphäre und Anonymität sinnvoll eingesetzt
-werden. Es sollte nicht für sich allein dazu eingesetzt werden.
-
address@hidden address@hidden@var{Ziel}]
-Bei isolierten Umgebungen (»Containern«) wird das Dateisystem unter
address@hidden vom Wirtssystem als Nur-Lese-Dateisystem @var{Ziel} im
-Container zugänglich gemacht. Wenn kein @var{Ziel} angegeben wurde, wird die
address@hidden auch als Ziel-Einhängepunkt in der isolierten Umgebung benutzt.
-
-Im folgenden Beispiel wird eine Guile-REPL in einer isolierten Umgebung
-gestartet, in der das persönliche Verzeichnis des Benutzers als Verzeichnis
address@hidden/austausch} nur für Lesezugriffe zugänglich gemacht wurde:
-
address@hidden
-guix environment --container --expose=$HOME=/austausch --ad-hoc guile -- guile
address@hidden example
-
address@hidden address@hidden@var{Ziel}]
-Bei isolierten Umgebungen (»Containern«) wird das Dateisystem unter
address@hidden vom Wirtssystem als beschreibbares Dateisystem @var{Ziel} im
-Container zugänglich gemacht. Wenn kein @var{Ziel} angegeben wurde, wird die
address@hidden auch als Ziel-Einhängepunkt in der isolierten Umgebung benutzt.
-
-Im folgenden Beispiel wird eine Guile-REPL in einer isolierten Umgebung
-gestartet, in der das persönliche Verzeichnis des Benutzers als Verzeichnis
address@hidden/austausch} sowohl für Lese- als auch für Schreibzugriffe 
zugänglich
-gemacht wurde:
-
address@hidden
-guix environment --container --share=$HOME=/austausch --ad-hoc guile -- guile
address@hidden example
address@hidden table
-
address@hidden environment} unterstützt auch alle gemeinsamen
-Erstellungsoptionen, die von @command{guix build} unterstützt werden (siehe
address@hidden Erstellungsoptionen}), und die Paketumwandlungsoptionen (siehe
address@hidden).
-
address@hidden Aufruf von guix pack
address@hidden @command{guix pack} aufrufen
-
-Manchmal möchten Sie Software an Leute weitergeben, die (noch!) nicht das
-Glück haben, Guix zu benutzen. Mit Guix würden sie nur @command{guix package
--i @var{irgendetwas}} einzutippen brauchen, aber wenn sie kein Guix haben,
-muss es anders gehen. Hier kommt @command{guix pack} ins Spiel.
-
address@hidden Anmerkung
-Wenn Sie aber nach einer Möglichkeit suchen, Binärdateien unter Maschinen
-auszutauschen, auf denen Guix bereits läuft, sollten Sie einen Blick auf die
-Abschnitte @ref{Aufruf von guix copy}, @ref{Aufruf von guix publish} und
address@hidden von guix archive} werfen.
address@hidden quotation
-
address@hidden Pack
address@hidden Bündel
address@hidden Anwendungsbündel
address@hidden Software-Bündel
-Der Befehl @command{guix pack} erzeugt ein gut verpacktes
address@hidden: Konkret wird dadurch ein Tarball oder eine andere Art
-von Archiv mit den Binärdateien der Software erzeugt, die Sie sich gewünscht
-haben, zusammen mit all ihren Abhängigkeiten. Der resultierende Archiv kann
-auch auf jeder Maschine genutzt werden, die kein Guix hat, und jeder kann
-damit genau dieselben Binärdateien benutzen, die Ihnen unter Guix zur
-Verfügung stehen. Das Bündel wird dabei auf eine Bit für Bit reproduzierbare
-Art erzeugt, damit auch jeder nachprüfen kann, dass darin wirklich
-diejenigen Binärdateien enthalten sind, von denen Sie es behaupten.
-
-Um zum Beispiel ein Bündel mit Guile, Emacs, Geiser und all ihren
-Abhängigkeiten zu erzeugen, führen Sie diesen Befehl aus:
-
address@hidden
-$ guix pack guile emacs geiser
address@hidden
-/gnu/store/@dots{}-pack.tar.gz
address@hidden example
-
-Als Ergebnis erhalten Sie einen Tarball mit einem Verzeichnis
address@hidden/gnu/store}, worin sich alles relevanten Pakete befinden. Der
-resultierende Tarball enthält auch ein @dfn{Profil} mit den drei angegebenen
-Paketen; es ist dieselbe Art von Profil, die auch @command{guix package -i}
-erzeugen würde. Mit diesem Mechanismus wird auch der binäre Tarball zur
-Installation von Guix erzeugt (siehe @ref{Aus Binärdatei installieren}).
-
-Benutzer des Bündels müssten dann aber zum Beispiel
address@hidden/gnu/store/@dots{}-profile/bin/guile} eintippen, um Guile 
auszuführen,
-was Ihnen zu unbequem sein könnte. Ein Ausweg wäre, dass Sie etwa eine
-symbolische Verknüpfung @file{/opt/gnu/bin} auf das Profil anlegen:
-
address@hidden
-guix pack -S /opt/gnu/bin=bin guile emacs geiser
address@hidden example
-
address@hidden
-Benutzer müssten dann nur noch @file{/opt/gnu/bin/guile} eintippen, um Guile
-zu genießen.
-
address@hidden pfad-agnostische Binärdateien, mit @command{guix pack}
-Doch was ist, wenn die Empfängerin Ihres Bündels keine Administratorrechte
-auf ihrer Maschine hat, das Bündel also nicht ins Wurzelverzeichnis ihres
-Dateisystems entpacken kann? Dann möchten Sie vielleicht die
-Befehlszeilenoption @code{--relocatable} benutzen (siehe weiter unten). Mit
-dieser Option werden @dfn{pfad-agnostische Binärdateien} erzeugt, die auch
-in einem beliebigen anderen Verzeichnis in der Dateisystemhierarchie
-abgelegt und von dort ausgeführt werden können. In obigem Beispiel würden
-Benutzer Ihren Tarball in ihr Persönliches Verzeichnis (das
-»Home«-Verzeichnis) entpacken und von dort den Befehl
address@hidden/opt/gnu/bin/guile} ausführen.
-
address@hidden Docker, ein Abbild erstellen mit guix pack
-Eine weitere Möglichkeit ist, das Bündel im Format eines Docker-Abbilds
-(englisch Docker-Image) zu erzeugen. Das geht mit dem folgenden Befehl:
-
address@hidden
-guix pack -f docker guile emacs geiser
address@hidden example
-
address@hidden
-Das Ergebnis ist ein Tarball, der dem Befehl @command{docker load} übergeben
-werden kann. In der
address@hidden://docs.docker.com/engine/reference/commandline/load/,
-Dokumentation von Docker} finden Sie nähere Informationen.
-
address@hidden Singularity, ein Abbild erstellen mit guix pack
address@hidden SquashFS, ein Abbild erstellen mit guix pack
-Und noch eine weitere Möglichkeit ist, dass Sie ein SquashFS-Abbild mit
-folgendem Befehl erzeugen:
-
address@hidden
-guix pack -f squashfs guile emacs geiser
address@hidden example
-
address@hidden
-Das Ergebnis ist ein SquashFS-Dateisystemabbild, dass entweder als
-Dateisystem eingebunden oder mit Hilfe der @uref{http://singularity.lbl.gov,
-Singularity-Container-Ausführungsumgebung} als Dateisystemcontainer benutzt
-werden kann, mit Befehlen wie @command{singularity shell} oder
address@hidden exec}.
-
-Es gibt mehrere Befehlszeilenoptionen, mit denen Sie Ihr Bündel anpassen
-können:
-
address@hidden @code
address@hidden address@hidden
address@hidden -f @var{Format}
-Generiert ein Bündel im angegebenen @var{Format}.
-
-Die verfügbaren Formate sind:
-
address@hidden @code
address@hidden tarball
-Das standardmäßig benutzte Format. Damit wird ein Tarball generiert, der
-alle angegebenen Binärdateien und symbolischen Verknüpfungen enthält.
-
address@hidden docker
-Generiert einen Tarball gemäß der
address@hidden://github.com/docker/docker/blob/master/image/spec/v1.2.md,
-Docker Image Specification}, d.h.@: der Spezifikation für Docker-Abbilder.
-
address@hidden squashfs
-Generiert ein SquashFS-Abbild, das alle angegebenen Binärdateien und
-symbolischen Verknüpfungen enthält, sowie leere Einhängepunkte für virtuelle
-Dateisysteme wie procfs.
address@hidden table
-
address@hidden pfad-agnostische Binärdateien
address@hidden --relocatable
address@hidden -R
-Erzeugt @dfn{pfad-agnostische Binärdateien} — also »portable« Binärdateien,
-die an einer beliebigen Stelle in der Dateisystemhierarchie platziert und
-von dort ausgeführt werden können.
-
-Wenn diese Befehlszeilenoption einmal übergeben wird, funktionieren die
-erzeugten Binärdateien nur dann, wenn @dfn{Benutzernamensräume} des
-Linux-Kernels unterstützt werden. Wenn sie @address@hidden gibt
-einen Trick, wie Sie sich das merken können: @code{-RR}, womit
-PRoot-Unterstützung hinzugefügt wird, kann man sich als Abkürzung für
-»Rundum Relocatable« oder englisch »Really Relocatable« vorstellen. Ist das
-nicht prima?} übergeben wird, laufen die Binärdateien notfalls mit PRoot,
-wenn keine Benutzernamensräume zur Verfügung stehen, funktionieren also
-ziemlich überall — siehe unten für die Auswirkungen.
-
-Zum Beispiel können Sie ein Bash enthalltendes Bündel erzeugen mit:
-
address@hidden
-guix pack -RR -S /mybin=bin bash
address@hidden example
-
address@hidden
-…@: Sie können dieses dann auf eine Maschine ohne Guix kopieren und als
-normaler Nutzer aus Ihrem Persönlichen Verzeichnis (auch »Home«-Verzeichnis
-genannt) dann ausführen mit:
-
address@hidden
-tar xf pack.tar.gz
-./meine-bin/sh
address@hidden example
-
address@hidden
-Wenn Sie in der so gestarteten Shell dann @code{ls /gnu/store} eintippen,
-sehen Sie, dass Ihnen angezeigt wird, in @file{/gnu/store} befänden sich
-alle Abhängigkeiten von @code{bash}, obwohl auf der Maschine überhaupt kein
-Verzeichnis @file{/gnu/store} existiert! Dies ist vermutlich die einfachste
-Art, mit Guix erstellte Software für eine Maschine ohne Guix auszuliefern.
-
address@hidden Anmerkung
-Wenn die Voreinstellung verwendet wird, funktionieren pfad-agnostische
-Binärdateien nur mit @dfn{Benutzernamensräumen} (englisch @dfn{User
-namespaces}), einer Funktionalität des Linux-Kernels, mit der Benutzer ohne
-besondere Berechtigungen Dateisysteme einbinden (englisch »mount«) oder die
-Wurzel des Dateisystems wechseln können (»change root«, kurz »chroot«). Alte
-Versionen von Linux haben diese Funktionalität noch nicht unterstützt und
-manche Distributionen von GNU/Linux schalten sie ab.
-
-Um pfad-agnostische Binärdateien zu erzeugen, die auch ohne
-Benutzernamensräume funktionieren, können Sie die Befehlszeilenoption
address@hidden oder @option{-R} @emph{zweimal} angeben. In diesem
-Fall werden die Binärdateien zuerst überprüfen, ob Benutzernamensräume
-unterstützt werden, und sonst notfalls PRoot benutzen, um das Programm
-auszuführen, wenn Benutzernamensräume nicht unterstützt werden.
-
-Das Programm @uref{https://proot-me.github.io/, PRoot} bietet auch
-Unterstützung für Dateisystemvirtualisierung, indem der Systemaufruf
address@hidden auf das laufende Programm angewendet wird. Dieser Ansatz
-funktioniert auch ohne besondere Kernel-Unterstützung, aber das Programm
-braucht mehr Zeit, um selbst Systemaufrufe durchzuführen.
address@hidden quotation
-
address@hidden address@hidden
address@hidden -e @var{Ausdruck}
-Als Paket benutzen, wozu der @var{Ausdruck} ausgewertet wird.
-
-Der Zweck hiervon ist derselbe wie bei der gleichnamigen Befehlszeilenoption
-in @command{guix build} (siehe @ref{Zusätzliche Erstellungsoptionen,
address@hidden in @command{guix build}}).
-
address@hidden address@hidden
address@hidden -m @var{Datei}
-Die Pakete benutzen, die im Manifest-Objekt aufgeführt sind, das vom
-Scheme-Code in der angegebenen @var{Datei} geliefert wird.
-
-Dies hat einen ähnlichen Zweck wie die gleichnamige Befehlszeilenoption in
address@hidden package} (siehe @ref{profile-manifest, @option{--manifest}})
-und benutzt dieselben Regeln für Manifest-Dateien. Damit können Sie eine
-Reihe von Paketen einmal definieren und dann sowohl zum Erzeugen von
-Profilesn als auch zum Erzeugen von Archiven benutzen, letztere für
-Maschinen, auf denen Guix nicht installiert ist. Beachten Sie, dass Sie
address@hidden eine Manifest-Datei @emph{oder} eine Liste von Paketen
-angeben können, aber nicht beides.
-
address@hidden address@hidden
address@hidden -s @var{System}
-Versuchen, für die angegebene Art von @var{System} geeignete Binärdateien zu
-erstellen — z.B.@: @code{i686-linux} — statt für die Art von System, das die
-Erstellung durchführt.
-
address@hidden address@hidden
address@hidden Cross-Kompilieren
-Lässt für das angegebene @var{Tripel} cross-erstellen, dieses muss ein
-gültiges GNU-Tripel wie z.B.@: @code{"mips64el-linux-gnu"} sein (siehe
address@hidden target triplets, GNU configuration triplets,, autoconf,
-Autoconf}).
-
address@hidden address@hidden
address@hidden -C @var{Werkzeug}
-Komprimiert den resultierenden Tarball mit dem angegebenen @var{Werkzeug} —
-dieses kann @code{gzip}, @code{bzip2}, @code{xz}, @code{lzip} oder
address@hidden für keine Kompression sein.
-
address@hidden address@hidden
address@hidden -S @var{Spezifikation}
-Fügt die in der @var{Spezifikation} festgelegten symbolischen Verknüpfungen
-zum Bündel hinzu.  Diese Befehlszeilenoption darf mehrmals vorkommen.
-
-Die @var{Spezifikation} muss von der Form
address@hidden@address@hidden sein, wobei der @var{Quellort} der Ort
-der symbolischen Verknüpfung, die erstellt wird, und @var{Zielort} das Ziel
-der symbolischen Verknüpfung ist.
-
-Zum Beispiel wird mit @code{-S /opt/gnu/bin=bin} eine symbolische
-Verknüpfung @file{/opt/gnu/bin} auf das Unterverzeichnis @file{bin} im
-Profil erzeugt.
-
address@hidden --save-provenance
-Provenienzinformationen für die auf der Befehlszeile übergebenen Pakete
-speichern. Zu den Provenienzinformationen gehören die URL und der Commit
-jedes benutzten Kanals (siehe @ref{Kanäle}).
-
-Provenienzinformationen werden in der Datei
address@hidden/gnu/store/@dots{}-profile/manifest} im Bündel zusammen mit den
-üblichen Paketmetadaten abgespeichert — also Name und Version jedes Pakets,
-welche Eingaben dabei propagiert werden und so weiter. Die Informationen
-nützen den Empfängern des Bündels, weil sie dann wissen, woraus das Bündel
-(angeblich) besteht.
-
-Der Vorgabe nach wird diese Befehlszeilenoption @emph{nicht} verwendet, weil
-Provenienzinformationen genau wie Zeitstempel nichts zum Erstellungsprozess
-beitragen. Mit anderen Worten gibt es unendlich viele Kanal-URLs und
-Commit-IDs, aus denen dasselbe Bündel stammen könnte. Wenn solche »stillen«
-Metadaten Teil des Ausgabe sind, dann wird also die bitweise
-Reproduzierbarkeit von Quellcode zu Binärdateien eingeschränkt.
-
address@hidden --localstatedir
address@hidden address@hidden
-Das »lokale Zustandsverzeichnis« @file{/var/guix} ins resultierende Bündel
-aufnehmen, speziell auch das Profil
address@hidden/var/guix/profiles/per-user/root/@var{Name}} — der vorgegebene
address@hidden ist @code{guix-profile}, was @file{~root/.guix-profile}
-entspricht.
-
address@hidden/var/guix} enthält die Store-Datenbank (siehe @ref{Der Store}) 
sowie
-die Müllsammlerwurzeln (siehe @ref{Aufruf von guix gc}). Es ins Bündel
-aufzunehmen, bedeutet, dass der enthaltene Store »vollständig« ist und von
-Guix verwaltet werden kann, andernfalls wäre der Store im Bündel »tot« und
-nach dem Auspacken des Bündels könnte Guix keine Objekte mehr dort
-hinzufügen oder entfernen.
-
-Ein Anwendungsfall hierfür ist der eigenständige, alle Komponenten
-umfassende binäre Tarball von Guix (siehe @ref{Aus Binärdatei installieren}).
-
address@hidden --bootstrap
-Mit den Bootstrap-Binärdateien das Bündel erstellen. Diese Option ist nur
-für Guix-Entwickler nützlich.
address@hidden table
-
-Außerdem unterstützt @command{guix pack} alle gemeinsamen
-Erstellungsoptionen (siehe @ref{Gemeinsame Erstellungsoptionen}) und alle
-Paketumwandlungsoptionen (siehe @ref{Paketumwandlungsoptionen}).
-
-
address@hidden 
*********************************************************************
address@hidden Programmierschnittstelle
address@hidden Programmierschnittstelle
-
-GNU Guix bietet mehrere Programmierschnittstellen (APIs) in der
-Programmiersprache Scheme an, mit denen Software-Pakete definiert, erstellt
-und gesucht werden können. Die erste Schnittstelle erlaubt es Nutzern, ihre
-eigenen Paketdefinitionen in einer Hochsprache zu schreiben. Diese
-Definitionen nehmen Bezug auf geläufige Konzepte der Paketverwaltung, wie
-den Namen und die Version eines Pakets, sein Erstellungssystem (Build
-System) und seine Abhängigkeiten (Dependencies). Diese Definitionen können
-dann in konkrete Erstellungsaktionen umgewandelt werden.
-
-Erstellungsaktionen werden vom Guix-Daemon für dessen Nutzer
-durchgeführt. Bei einer normalen Konfiguration hat der Daemon Schreibzugriff
-auf den Store, also das Verzeichnis @file{/gnu/store}, Nutzer hingegen
-nicht. Die empfohlene Konfiguration lässt den Daemon die Erstellungen in
-chroot-Umgebungen durchführen, mit eigenen Benutzerkonten für
-»Erstellungsbenutzer«, um gegenseitige Beeinflussung der Erstellung und des
-übrigen Systems zu minimieren.
-
address@hidden Ableitung
-Systemnahe APIs stehen zur Verfügung, um mit dem Daemon und dem Store zu
-interagieren. Um den Daemon anzuweisen, eine Erstellungsaktion
-durchzuführen, versorgen ihn Nutzer jeweils mit einer @dfn{Ableitung}. Eine
-Ableitung ist, wie durchzuführende Erstellungsaktionen, sowie die
-Umgebungen, in denen sie durchzuführen sind, in Guix eigentlich intern
-dargestellt werden. Ableitungen verhalten sich zu Paketdefinitionen
-vergleichbar mit Assembler-Code zu C-Programmen. Der Begriff »Ableitung«
-kommt daher, dass Erstellungsergebnisse daraus @emph{abgeleitet} werden.
-
-Dieses Kapitel beschreibt der Reihe nach all diese Programmierschnittstellen
-(APIs), angefangen mit hochsprachlichen Paketdefinitionen.
-
address@hidden
-* Paketmodule::              Pakete aus Sicht des Programmierers.
-* Pakete definieren::        Wie Sie neue Pakete definieren.
-* Erstellungssysteme::       Angeben, wie Pakete erstellt werden.
-* Der Store::                Den Paket-Store verändern.
-* Ableitungen::              Systemnahe Schnittstelle für Paketableitungen.
-* Die Store-Monade::         Rein funktionale Schnittstelle zum Store.
-* G-Ausdrücke::             Erstellungsausdrücke verarbeiten.
-* Aufruf von guix repl::     Interaktiv an Guix herumbasteln.
address@hidden menu
-
address@hidden Paketmodule
address@hidden Paketmodule
-
-Aus Programmierersicht werden die Paketdefinitionen der GNU-Distribution als
-Guile-Module in Namensräumen wie @code{(gnu packages @dots{})} sichtbar
address@hidden Sie, dass Pakete unter dem Modulnamensraum
address@hidden(gnu packages @dots{})} nicht notwendigerweise auch »GNU-Pakete«
-sind. Dieses Schema für die Benennung von Modulen folgt lediglich den
-üblichen Guile-Konventionen: @code{gnu} bedeutet, dass die Module als Teil
-des GNU-Systems ausgeliefert werden, und @code{packages} gruppiert Module
-mit Paketdefinitionen.} (siehe @ref{Module, Guile modules,, guile, GNU
-Guile Reference Manual}). Zum Beispiel exportiert das Modul @code{(gnu
-packages emacs)} eine Variable namens @code{emacs}, die an ein
address@hidden<package>}-Objekt gebunden ist (@pxref{Pakete definieren}).
-
-The @code{(gnu packages @dots{})} module name space is automatically scanned
-for packages by the command-line tools.  For instance, when running
address@hidden package -i emacs}, all the @code{(gnu packages @dots{})} modules
-are scanned until one that exports a package object whose name is
address@hidden is found.  This package search facility is implemented in the
address@hidden(gnu packages)} module.
-
address@hidden Anpassung, von Paketen
address@hidden package module search path
-Users can store package definitions in modules with different names---e.g.,
address@hidden(my-packages emacs)address@hidden that the file name and module 
name
-must match.  For instance, the @code{(my-packages emacs)} module must be
-stored in a @file{my-packages/emacs.scm} file relative to the load path
-specified with @option{--load-path} or @code{GUIX_PACKAGE_PATH}.
address@hidden and the File System,,, guile, GNU Guile Reference Manual}, for
-details.}.  There are two ways to make these package definitions visible to
-the user interfaces:
-
address@hidden
address@hidden
-By adding the directory containing your package modules to the search path
-with the @code{-L} flag of @command{guix package} and other commands
-(@pxref{Gemeinsame Erstellungsoptionen}), or by setting the 
@code{GUIX_PACKAGE_PATH}
-environment variable described below.
-
address@hidden
-By defining a @dfn{channel} and configuring @command{guix pull} so that it
-pulls from it.  A channel is essentially a Git repository containing package
-modules.  @xref{Kanäle}, for more information on how to define and use
-channels.
address@hidden enumerate
-
address@hidden works similarly to other search path variables:
-
address@hidden {Environment Variable} GUIX_PACKAGE_PATH
-This is a colon-separated list of directories to search for additional
-package modules.  Directories listed in this variable take precedence over
-the own modules of the distribution.
address@hidden defvr
-
-The distribution is fully @dfn{bootstrapped} and @dfn{self-contained}: each
-package is built based solely on other packages in the distribution.  The
-root of this dependency graph is a small set of @dfn{bootstrap binaries},
-provided by the @code{(gnu packages bootstrap)} module.  For more
-information on bootstrapping, @pxref{Bootstrapping}.
-
address@hidden Pakete definieren
address@hidden Pakete definieren
-
-Mit den Modulen @code{(guix packages)} und @code{(guix build-system)} können
-Paketdefinitionen auf einer hohen Abstraktionsebene geschrieben werden. Zum
-Beispiel sieht die Paketdefinition bzw. das @dfn{Rezept} für das Paket von
-GNU Hello so aus:
-
address@hidden
-(define-module (gnu packages hello)
-  #:use-module (guix packages)
-  #:use-module (guix download)
-  #:use-module (guix build-system gnu)
-  #:use-module (guix licenses)
-  #:use-module (gnu packages gawk))
-
-(define-public hello
-  (package
-    (name "hello")
-    (version "2.10")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "mirror://gnu/hello/hello-" version
-                                  ".tar.gz"))
-              (sha256
-               (base32
-                "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"))))
-    (build-system gnu-build-system)
-    (arguments '(#:configure-flags '("--enable-silent-rules")))
-    (inputs `(("gawk" ,gawk)))
-    (synopsis "Hello, GNU world: An example GNU package")
-    (description "Guess what GNU Hello prints!")
-    (home-page "http://www.gnu.org/software/hello/";)
-    (license gpl3+)))
address@hidden example
-
address@hidden
-Auch ohne ein Experte in Scheme zu sein, könnten Leser erraten haben, was
-die verschiedenen Felder dabei bedeuten. Dieser Ausdruck bindet die Variable
address@hidden an ein @code{<package>}-Objekt, was an sich nur ein Verbund
-(Record) ist (siehe @ref{SRFI-9, Scheme records,, guile, GNU Guile Reference
-Manual}). Die Felder dieses Paket-Objekts lassen sich mit den Prozeduren aus
-dem Modul @code{(guix packages)} auslesen, zum Beispiel liefert
address@hidden(package-name hello)} — Überraschung! — @code{"hello"}.
-
-Mit etwas Glück können Sie die Definition vielleicht teilweise oder sogar
-ganz aus einer anderen Paketsammlung importieren, indem Sie den Befehl
address@hidden import} verwenden (siehe @ref{Aufruf von guix import}).
-
-In obigem Beispiel wurde @var{hello} in einem eigenen Modul ganz für sich
-alleine definiert, und zwar @code{(gnu packages hello)}. Technisch gesehen
-muss es nicht unbedingt in einem solchen Modul definiert werden, aber es ist
-bequem, denn alle Module unter @code{(gnu packages @dots{})} werden
-automatisch von den Befehlszeilenwerkzeugen gefunden (siehe @ref{Paketmodule}).
-
-Ein paar Dinge sind noch erwähnenswert in der obigen Paketdefinition:
-
address@hidden
address@hidden
-Das @code{source}-Feld für die Quelle des Pakets ist ein
address@hidden<origin>}-Objekt, was den Paketursprung angibt (siehe 
@ref{»origin«-Referenz} für eine vollständige Referenz). Hier wird dafür die 
Methode
address@hidden aus dem Modul @code{(guix download)} benutzt, d.h.@: die
-Quelle ist eine Datei, die über FTP oder HTTP heruntergeladen werden soll.
-
-Das Präfix @code{mirror://gnu} lässt @code{url-fetch} einen der
-GNU-Spiegelserver benutzen, die in @code{(guix download)} definiert sind.
-
-Das Feld @code{sha256} legt den erwarteten SHA256-Hashwert der
-herunterzuladenden Datei fest. Ihn anzugeben ist Pflicht und er ermöglicht
-es Guix, die Integrität der Datei zu überprüfen. Die Form @code{(base32
address@hidden)} geht der base32-Darstellung des Hash-Wertes voraus. Sie finden 
die
-base32-Darstellung mit Hilfe der Befehle @code{guix download} (siehe
address@hidden von guix download}) und @code{guix hash} (siehe @ref{Aufruf von 
guix hash}).
-
address@hidden Patches
-Wenn nötig kann in der @code{origin}-Form auch ein @code{patches}-Feld
-stehen, wo anzuwendende Patches aufgeführt werden, sowie ein
address@hidden mit einem Scheme-Ausdruck mit den Anweisungen, wie der
-Quellcode zu modifizieren ist.
-
address@hidden
address@hidden GNU-Erstellungssystem
-Das Feld @code{build-system} legt fest, mit welcher Prozedur das Paket
-erstellt werden soll (siehe @ref{Erstellungssysteme}). In diesem Beispiel steht
address@hidden für das wohlbekannte GNU-Erstellungssystem, wo Pakete
-mit der üblichen Befehlsfolge @code{./configure && make && make check &&
-make install} konfiguriert, erstellt und installiert werden.
-
address@hidden
-Das Feld @code{arguments} gibt an, welche Optionen dem Erstellungssystem
-mitgegeben werden sollen (siehe @ref{Erstellungssysteme}). In diesem Fall
-interpretiert @var{gnu-build-system} diese als Auftrag, @file{configure} mit
-der Befehlszeilenoption @code{--enable-silent-rules} auszuführen.
-
address@hidden quote
address@hidden Maskierung
address@hidden '
address@hidden quote
-Was hat es mit diesen einfachen Anführungszeichen (@code{'}) auf sich? Sie
-gehören zur Syntax von Scheme und führen eine wörtlich zu interpretierende
-Datenlisten ein; dies nennt sich Maskierung oder Quotierung. @code{'} ist
-synonym mit @code{quote}. @ref{Expression Syntax, quoting,, guile, GNU Guile
-Reference Manual} enthält weitere Details. Hierbei ist also der Wert des
address@hidden eine Liste von Argumenten, die an das
-Erstellungssystem weitergereicht werden, wie bei @code{apply} (siehe
address@hidden Evaluation, @code{apply},, guile, GNU Guile Reference Manual}).
-
-Ein Doppelkreuz gefolgt von einem Doppelpunkt (@code{#:}) definiert ein
address@hidden (siehe @ref{Keywords,,, guile, GNU Guile
-Reference Manual}) und @code{#:configure-flags} ist ein Schlüsselwort, um
-eine Befehlszeilenoption an das Erstellungssystem mitzugeben (siehe
address@hidden With Keywords,,, guile, GNU Guile Reference Manual}).
-
address@hidden
-Das Feld @code{inputs} legt Eingaben an den Erstellungsprozess fest — d.h.@:
-Abhängigkeiten des Pakets zur Erstellungs- oder Laufzeit. Hier definieren
-wir eine Eingabe namens @code{"gawk"}, deren Wert wir auf den Wert der
address@hidden festlegen; @var{gawk} ist auch selbst wiederum an ein
address@hidden<package>}-Objekt als Variablenwert gebunden.
-
address@hidden Backquote (Quasimaskierung)
address@hidden `
address@hidden quasiquote
address@hidden Komma (Demaskierung)
address@hidden ,
address@hidden unquote
address@hidden ,@@
address@hidden unquote-splicing
-Auch mit @code{`} (einem Backquote, stattdessen kann man auch das längere
-Synonym @code{quasiquote} schreiben) können wir eine wörtlich als Daten
-interpretierte Liste im @code{inputs}-Feld einführen, aber bei dieser
-»Quasimaskierung« kann @code{,} (ein Komma, oder dessen Synonym
address@hidden) benutzt werden, um den ausgewerteten Wert eines Ausdrucks in
-diese Liste einzufügen (siehe @ref{Expression Syntax, unquote,, guile, GNU
-Guile Reference Manual}).
-
-Beachten Sie, dass GCC, Coreutils, Bash und andere essenzielle Werkzeuge
-hier nicht als Eingaben aufgeführt werden müssen. Stattdessen sorgt schon
address@hidden dafür, dass diese vorhanden sein müssen (siehe
address@hidden).
-
-Sämtliche anderen Abhängigkeiten müssen aber im @code{inputs}-Feld
-aufgezählt werden. Jede hier nicht angegebene Abhängigkeit wird während des
-Erstellungsprozesses schlicht nicht verfügbar sein, woraus ein
-Erstellungsfehler resultieren kann.
address@hidden itemize
-
-Siehe @ref{»package«-Referenz} für eine umfassende Beschreibung aller
-erlaubten Felder.
-
-Sobald eine Paketdefinition eingesetzt wurde, können Sie das Paket mit Hilfe
-des Befehlszeilenwerkzeugs @code{guix build} dann auch tatsächlich erstellen
-(siehe @ref{Aufruf von guix build}) und dabei jegliche Erstellungsfehler, auf
-die Sie stoßen, beseitigen (siehe @ref{Fehlschläge beim Erstellen 
untersuchen}). Sie
-können den Befehl @command{guix edit} benutzen, um leicht zur
-Paketdefinition zurückzuspringen (siehe @ref{Aufruf von guix edit}). Unter
address@hidden finden Sie mehr Informationen darüber, wie Sie
-Paketdefinitionen testen, und unter @ref{Aufruf von guix lint} finden Sie
-Informationen, wie Sie prüfen, ob eine Definition alle Stilkonventionen
-einhält.
address@hidden GUIX_PACKAGE_PATH
-Zuletzt finden Sie unter @ref{Kanäle} Informationen, wie Sie die
-Distribution um Ihre eigenen Pakete in einem »Kanal« erweitern.
-
-Zu all dem sei auch erwähnt, dass Sie das Aktualisieren einer
-Paketdefinition auf eine vom Anbieter neu veröffentlichte Version mit dem
-Befehl @command{guix refresh} teilweise automatisieren können (siehe
address@hidden von guix refresh}).
-
-Hinter den Kulissen wird die einem @code{<package>}-Objekt entsprechende
-Ableitung zuerst durch @code{package-derivation} berechnet. Diese Ableitung
-wird in der @code{.drv}-Datei unter @file{/gnu/store} gespeichert. Die von
-ihr vorgeschriebenen Erstellungsaktionen können dann durch die Prozedur
address@hidden umgesetzt werden (siehe @ref{Der Store}).
-
address@hidden {Scheme-Prozedur} package-derivation @var{Store} @var{Paket} 
address@hidden
-Das @code{<derivation>}-Objekt zum @var{Paket} für das angegebene
address@hidden liefern (siehe @ref{Ableitungen}).
-
-Als @var{Paket} muss ein gültiges @code{<package>}-Objekt angegeben werden
-und das @var{System} muss eine Zeichenkette sein, die das Zielsystem angibt
-— z.B.@: @code{"x86_64-linux"} für ein auf x86_64 laufendes, Linux-basiertes
-GNU-System. @var{Store} muss eine Verbindung zum Daemon sein, der die
-Operationen auf dem Store durchführt (siehe @ref{Der Store}).
address@hidden deffn
-
address@hidden
address@hidden Cross-Kompilieren
-Auf ähnliche Weise kann eine Ableitung berechnet werden, die ein Paket für
-ein anderes System cross-erstellt.
-
address@hidden {Scheme-Prozedur} package-cross-derivation @var{Store} @
-            @var{Paket} @var{Ziel} address@hidden Liefert das
address@hidden<derivation>}-Objekt, um das @var{Paket} zu cross-erstellen vom
address@hidden aus für das @var{Ziel}-System.
-
-Als @var{Ziel} muss ein gültiges GNU-Tripel angegeben werden, was die
-Ziel-Hardware und das zugehörige Betriebssystem beschreibt, wie z.B.@:
address@hidden"mips64el-linux-gnu"} (siehe @ref{Configuration Names, GNU
-configuration triplets,, configure, GNU Configure and Build System}).
address@hidden deffn
-
address@hidden Paketumwandlungen
address@hidden Eingaben umschreiben
address@hidden Abhängigkeitsbaum umschreiben
-Pakete können auf beliebige Art verändert werden. Ein Beispiel für eine
-nützliche Veränderung ist das @dfn{Umschreiben von Eingaben}, womit der
-Abhängigkeitsbaum eines Pakets umgeschrieben wird, indem bestimmte Eingaben
-durch andere ersetzt werden:
-
address@hidden {Scheme-Prozedur} package-input-rewriting @var{Ersetzungen} @
-           address@hidden Eine Prozedur liefern, die für ein ihr
-übergebenes Paket dessen direkte und indirekte Abhängigkeit (aber nicht
-dessen implizite Eingaben) gemäß den @var{Ersetzungen}
-umschreibt. @var{Ersetzungen} ist eine Liste von Paketpaaren; das erste
-Element eines Paares ist das zu ersetzende Paket und das zweite ist, wodurch
-es ersetzt werden soll.
-
-Optional kann als @var{umgeschriebener-Name} eine ein Argument nehmende
-Prozedur angegeben werden, die einen Paketnamen nimmt und den Namen nach dem
-Umschreiben zurückliefert.
address@hidden deffn
-
address@hidden
-Betrachten Sie dieses Beispiel:
-
address@hidden
-(define libressl-statt-openssl
-  ;; Dies ist eine Prozedur, mit der OPENSSL durch LIBRESSL
-  ;; rekursiv ersetzt wird.
-  (package-input-rewriting `((,openssl . ,libressl))))
-
-(define git-mit-libressl
-  (libressl-statt-openssl git))
address@hidden example
-
address@hidden
-Hier definieren wir zuerst eine Umschreibeprozedur, die @var{openssl} durch
address@hidden ersetzt. Dann definieren wir damit eine @dfn{Variante} des
address@hidden, die @var{libressl} statt @var{openssl} benutzt. Das ist
-genau, was auch die Befehlszeilenoption @option{--with-input} tut (siehe
address@hidden, @option{--with-input}}).
-
-The following variant of @code{package-input-rewriting} can match packages
-to be replaced by name rather than by identity.
-
address@hidden {Scheme-Prozedur} package-input-rewriting/spec @var{Ersetzungen}
-Return a procedure that, given a package, applies the given
address@hidden to all the package graph (excluding implicit inputs).
address@hidden is a list of spec/procedures pair; each spec is a package
-specification such as @code{"gcc"} or @code{"guile@@2"}, and each procedure
-takes a matching package and returns a replacement for that package.
address@hidden deffn
-
-The example above could be rewritten this way:
-
address@hidden
-(define libressl-statt-openssl
-  ;; Rekursiv alle Pakete namens "openssl" durch LibreSSL ersetzen.
-  (package-input-rewriting/spec `(("openssl" . ,(const libressl)))))
address@hidden example
-
-The key difference here is that, this time, packages are matched by spec and
-not by identity.  In other words, any package in the graph that is called
address@hidden will be replaced.
-
-Eine allgemeiner anwendbare Prozedur, um den Abhängigkeitsgraphen eines
-Pakets umzuschreiben, ist @code{package-mapping}. Sie unterstützt beliebige
-Änderungen an den Knoten des Graphen.
-
address@hidden {Scheme-Prozedur} package-mapping @var{Prozedur} address@hidden
-Liefert eine Prozedur, die, wenn ihr ein Paket übergeben wird, die an
address@hidden übergebene @var{Prozedur} auf alle vom Paket
-abhängigen Pakete anwendet. Die Prozedur liefert das resultierende
-Paket. Wenn @var{Schnitt?} für ein Paket davon einen wahren Wert liefert,
-findet kein rekursiver Abstieg in dessen Abhängigkeiten statt.
address@hidden deffn
-
address@hidden
-* »package«-Referenz::     Der Datentyp für Pakete.
-* »origin«-Referenz::      Datentyp für Paketursprünge.
address@hidden menu
-
-
address@hidden »package«-Referenz
address@hidden @code{package}-Referenz
-
-Dieser Abschnitt fasst alle in @code{package}-Deklarationen zur Verfügung
-stehenden Optionen zusammen (siehe @ref{Pakete definieren}).
-
address@hidden {Datentyp} package
-Dieser Datentyp steht für ein Paketrezept.
-
address@hidden @asis
address@hidden @code{name}
-Der Name des Pakets als Zeichenkette.
-
address@hidden @code{version}
-Die Version des Pakets als Zeichenkette.
-
address@hidden @code{source}
-Ein Objekt, das beschreibt, wie der Quellcode des Pakets bezogen werden
-soll. Meistens ist es ein @code{origin}-Objekt, welches für eine aus dem
-Internet heruntergeladene Datei steht (siehe @ref{»origin«-Referenz}). Es
-kann aber auch ein beliebiges anderes »dateiähnliches« Objekt sein, wie
-z.B.@: ein @code{local-file}, was eine Datei im lokalen Dateisystem
-bezeichnet (siehe @ref{G-Ausdrücke, @code{local-file}}).
-
address@hidden @code{build-system}
-Das Erstellungssystem, mit dem das Paket erstellt werden soll (siehe
address@hidden).
-
address@hidden @code{arguments} (Vorgabe: @code{'()})
-Die Argumente, die an das Erstellungssystem übergeben werden sollen. Dies
-ist eine Liste, typischerweise eine Reihe von Schlüssel-Wert-Paaren.
-
address@hidden @code{inputs} (Vorgabe: @code{'()})
address@hidden @code{native-inputs} (Vorgabe: @code{'()})
address@hidden @code{propagated-inputs} (Vorgabe: @code{'()})
address@hidden Eingaben, von Paketen
-In diesen Feldern werden die Abhängigkeiten des Pakets aufgeführt. Jedes
-dieser Felder enthält eine Liste von Tupeln, wobei jedes Tupel eine
-Bezeichnung für die Eingabe (als Zeichenkette) als erstes Element, dann ein
-»package«-, »origin«- oder »derivation«-Objekt (Paket, Ursprung oder
-Ableitung) als zweites Element und optional die Benennung der davon zu
-benutzenden Ausgabe umfasst; letztere hat als Vorgabewert @code{"out"}
-(siehe @ref{Pakete mit mehreren Ausgaben.} für mehr Informationen zu
-Paketausgaben). Im folgenden Beispiel etwa werden drei Eingaben festgelegt:
-
address@hidden
-`(("libffi" ,libffi)
-  ("libunistring" ,libunistring)
-  ("glib:bin" ,glib "bin"))  ;Ausgabe "bin" von Glib
address@hidden example
-
address@hidden Cross-Kompilieren, Paketabhängigkeiten
-Die Unterscheidung zwischen @code{native-inputs} und @code{inputs} ist
-wichtig, damit Cross-Kompilieren möglich ist. Beim Cross-Kompilieren werden
-als @code{inputs} aufgeführte Abhängigkeiten für die
-Ziel-Prozessorarchitektur (@emph{target}) erstellt, andersherum werden als
address@hidden aufgeführte Abhängigkeiten für die Prozessorarchitektur
-der erstellenden Maschine (@emph{build}) erstellt.
-
address@hidden listet typischerweise die Werkzeuge auf, die während
-der Erstellung gebraucht werden, aber nicht zur Laufzeit des Programms
-gebraucht werden. Beispiele sind Autoconf, Automake, pkg-config, Gettext
-oder Bison. @command{guix lint} kann melden, ob wahrscheinlich Fehler in der
-Auflistung sind (siehe @ref{Aufruf von guix lint}).
-
address@hidden
-Schließlich ist @code{propagated-inputs} ähnlich wie @code{inputs}, aber die
-angegebenen Pakete werden automatisch mit ins Profil installiert, wenn das
-Paket installiert wird, zu dem sie gehören (siehe
address@hidden, @command{guix package}} für
-Informationen darüber, wie @command{guix package} mit propagierten Eingaben
-umgeht).
-
-Dies ist zum Beispiel nötig, wenn eine C-/C++-Bibliothek Header-Dateien
-einer anderen Bibliothek braucht, um mit ihr kompilieren zu können, oder
-wenn sich eine pkg-config-Datei auf eine andere über ihren
address@hidden bezieht.
-
-Noch ein Beispiel, wo @code{propagated-inputs} nützlich ist, sind Sprachen,
-die den Laufzeit-Suchpfad @emph{nicht} zusammen mit dem Programm abspeichern
-(@emph{nicht} wie etwa im @code{RUNPATH} bei ELF-Dateien), also Sprachen wie
-Guile, Python, Perl und weitere. Damit auch in solchen Sprachen geschriebene
-Bibliotheken zur Laufzeit den von ihnen benötigten Code finden können,
-müssen deren Laufzeit-Abhängigkeiten in @code{propagated-inputs} statt in
address@hidden aufgeführt werden.
-
address@hidden @code{outputs} (Vorgabe: @code{'("out")})
-Die Liste der Benennungen der Ausgaben des Pakets. Der Abschnitt
address@hidden mit mehreren Ausgaben.} beschreibt übliche Nutzungen
-zusätzlicher Ausgaben.
-
address@hidden @code{native-search-paths} (Vorgabe: @code{'()})
address@hidden @code{search-paths} (Vorgabe: @code{'()})
-Eine Liste von @code{search-path-specification}-Objekten, die
-Umgebungsvariable für von diesem Paket beachtete Suchpfade (»search paths«)
-beschreiben.
-
address@hidden @code{replacement} (Vorgabe: @code{#f})
-Dies muss entweder @code{#f} oder ein package-Objekt sein, das als Ersatz
-(@dfn{replacement}) dieses Pakets benutzt werden soll. Im Abschnitt
address@hidden, grafts} wird dies erklärt.
-
address@hidden @code{synopsis}
-Eine einzeilige Beschreibung des Pakets.
-
address@hidden @code{description}
-Eine ausführlichere Beschreibung des Pakets.
-
address@hidden @code{license}
address@hidden Lizenz, von Paketen
-Die Lizenz des Pakets; benutzt werden kann ein Wert aus dem Modul
address@hidden(guix licenses)} oder eine Liste solcher Werte.
-
address@hidden @code{home-page}
-Die URL, die die Homepage des Pakets angibt, als Zeichenkette.
-
address@hidden @code{supported-systems} (Vorgabe: @var{%supported-systems})
-Die Liste der vom Paket unterstützten Systeme als Zeichenketten der Form
address@hidden, zum Beispiel @code{"x86_64-linux"}.
-
address@hidden @code{maintainers} (Vorgabe: @code{'()})
-Die Liste der Betreuer (Maintainer) des Pakets als
address@hidden
-
address@hidden @code{location} (Vorgabe: die Stelle im Quellcode, wo die 
@code{package}-Form steht)
-Wo im Quellcode das Paket definiert wurde. Es ist sinnvoll, dieses Feld
-manuell zuzuweisen, wenn das Paket von einem anderen Paket erbt, weil dann
-dieses Feld nicht automatisch berichtigt wird.
address@hidden table
address@hidden deftp
-
address@hidden {Scheme Syntax} this-package
-When used in the @emph{lexical scope} of a package field definition, this
-identifier resolves to the package being defined.
-
-The example below shows how to add a package as a native input of itself
-when cross-compiling:
-
address@hidden
-(package
-  (name "guile")
-  ;; ...
-
-  ;; When cross-compiled, Guile, for example, depends on
-  ;; a native version of itself.  Add it here.
-  (native-inputs (if (%current-target-system)
-                     `(("self" ,this-package))
-                     '())))
address@hidden example
-
-It is an error to refer to @code{this-package} outside a package definition.
address@hidden deffn
-
address@hidden »origin«-Referenz
address@hidden @code{origin}-Referenz
-
-Dieser Abschnitt fasst alle Optionen zusammen, die in
address@hidden zur Verfügung stehen (siehe @ref{Pakete definieren}).
-
address@hidden {Datentyp} origin
-Mit diesem Datentyp wird ein Ursprung, von dem Quellcode geladen werden
-kann, beschrieben.
-
address@hidden @asis
address@hidden @code{uri}
-Ein Objekt, was die URI des Quellcodes enthält. Der Objekttyp hängt von der
address@hidden ab (siehe unten). Zum Beispiel sind, wenn die
address@hidden aus @code{(guix download)} benutzt wird, die
-gültigen Werte für @code{uri}: eine URL dargestellt als Zeichenkette oder
-eine Liste solcher URLs.
-
address@hidden @code{method}
-Eine Prozedur, die die URI verwertet.
-
-Beispiele sind unter anderem:
-
address@hidden @asis
address@hidden @var{url-fetch} aus @code{(guix download)}
-Herunterladen einer Datei von einer HTTP-, HTTPS- oder FTP-URL, die im
address@hidden angegeben wurde.
-
address@hidden git-fetch
address@hidden @var{git-fetch} aus @code{(guix git-download)}
-Das im @code{uri}-Feld spezifizierte Repository des
-Git-Versionskontrollsystems klonen und davon den im @code{uri}-Feld als ein
address@hidden angegebenen Commit benutzen; eine
address@hidden sieht so aus:
-
address@hidden
-(git-reference
-  (url "git://git.debian.org/git/pkg-shadow/shadow")
-  (commit "v4.1.5.1"))
address@hidden example
address@hidden table
-
address@hidden @code{sha256}
-Ein Bytevektor, der den SHA-256-Hash der Quelldateien
-enthält. Typischerweise wird hier mit der @code{base32}-Form der Bytevektor
-aus einer Base-32-Zeichenkette generiert.
-
-Diese Informationen liefert Ihnen der Befehl @code{guix download} (siehe
address@hidden von guix download}) oder @code{guix hash} (siehe @ref{Aufruf von 
guix hash}).
-
address@hidden @code{file-name} (Vorgabe: @code{#f})
-Der Dateiname, unter dem der Quellcode abgespeichert werden sollte. Wenn er
-auf @code{#f} steht, wird ein vernünftiger Name automatisch gewählt. Falls
-der Quellcode von einer URL geladen wird, wird der Dateiname aus der URL
-genommen. Wenn der Quellcode von einem Versionskontrollsystem bezogen wird,
-empfiehlt es sich, den Dateinamen ausdrücklich anzugeben, weil dann keine
-sprechende Benennung automatisch gefunden werden kann.
-
address@hidden @code{patches} (Vorgabe: @code{'()})
-Eine Liste von Dateinamen, Ursprüngen oder dateiähnlichen Objekten (siehe
address@hidden, file-like objects}) mit Patches, welche auf den
-Quellcode anzuwenden sind.
-
-Die Liste von Patches kann nicht von Parametern der Erstellung
-abhängen. Insbesondere kann sie nicht vom Wert von @code{%current-system}
-oder @code{%current-target-system} abḧängen.
-
address@hidden @code{snippet} (Vorgabe: @code{#f})
-Ein im Quellcode-Verzeichnis auszuführender G-Ausdruck (siehe
address@hidden) oder S-Ausdruck. Hiermit kann der Quellcode bequem
-modifiziert werden, manchmal ist dies bequemer als mit einem Patch.
-
address@hidden @code{patch-flags} (Vorgabe: @code{'("-p1")})
-Eine Liste der Befehlszeilenoptionen, die dem @code{patch}-Befehl übergeben
-werden sollen.
-
address@hidden @code{patch-inputs} (Vorgabe: @code{#f})
-Eingabepakete oder -ableitungen für den Patch-Prozess. Bei @code{#f} werden
-die üblichen Patcheingaben wie address@hidden bereitgestellt.
-
address@hidden @code{modules} (Vorgabe: @code{'()})
-Eine Liste von Guile-Modulen, die während des Patch-Prozesses und während
-der Ausführung des @code{snippet}-Felds geladen werden sollten.
-
address@hidden @code{patch-guile} (Vorgabe: @code{#f})
-Welches Guile-Paket für den Patch-Prozess benutzt werden sollte. Bei
address@hidden wird ein vernünftiger Vorgabewert angenommen.
address@hidden table
address@hidden deftp
-
-
address@hidden Erstellungssysteme
address@hidden Erstellungssysteme
-
address@hidden Erstellungssystem
-Jede Paketdefinition legt ein @dfn{Erstellungssystem} (»build system«) sowie
-dessen Argumente fest (siehe @ref{Pakete definieren}). Das
address@hidden steht für die Erstellungsprozedur des Pakets sowie
-für weitere implizite Eingaben für die Erstellungsprozedur.
-
-Erstellungssysteme sind @code{<build-system>}-Objekte. Die Schnittstelle, um
-solche zu erzeugen und zu verändern, ist im Modul @code{(guix build-system)}
-zu finden, und die eigentlichen Erstellungssysteme werden jeweils von ihren
-eigenen Modulen exportiert.
-
address@hidden Bag (systemnahe Paketrepräsentation)
-Intern funktionieren Erstellungssysteme, indem erst Paketobjekte zu
address@hidden kompiliert werden. Eine Bag (deutsch: Beutel, Sack) ist wie ein
-Paket, aber mit weniger Zierrat — anders gesagt ist eine Bag eine
-systemnähere Darstellung eines Pakets, die sämtliche Eingaben des Pakets
-einschließlich vom Erstellungssystem hinzugefügter Eingaben enthält. Diese
-Zwischendarstellung wird dann zur eigentlichen Ableitung kompiliert (siehe
address@hidden).
-
-Erstellungssysteme akzeptieren optional eine Liste von @dfn{Argumenten}. In
-Paketdefinitionen werden diese über das @code{arguments}-Feld übergeben
-(siehe @ref{Pakete definieren}). Sie sind in der Regel
-Schlüsselwort-Argumente (siehe @ref{Optional Arguments, keyword arguments in
-Guile,, guile, GNU Guile Reference Manual}). Der Wert dieser Argumente wird
-normalerweise vom Erstellungssystem in der @dfn{Erstellungsschicht}
-ausgewertet, d.h.@: von einem durch den Daemon gestarteten Guile-Prozess
-(siehe @ref{Ableitungen}).
-
-Das häufigste Erstellungssystem ist @var{gnu-build-system}, was die übliche
-Erstellungsprozedur für GNU-Pakete und viele andere Pakete darstellt. Es
-wird vom Modul @code{(guix build-system gnu)} bereitgestellt.
-
address@hidden {Scheme-Variable} gnu-build-system
address@hidden steht für das GNU-Erstellungssystem und Varianten
-desselben (siehe @ref{Configuration, configuration and makefile
-conventions,, standards, GNU Coding Standards}).
-
address@hidden Erstellungsphasen
-Kurz gefasst werden Pakete, die es benutzen, konfiguriert, erstellt und
-installiert mit der üblichen Befehlsfolge @code{./configure && make && make
-check && make install}. In der Praxis braucht man oft noch ein paar weitere
-Schritte. Alle Schritte sind in voneinander getrennte @dfn{Phasen}
-unterteilt. Erwähnt werden address@hidden schauen Sie in den Modulen
-unter @code{(guix build gnu-build-system)}, wenn Sie mehr Details zu
-Erstellungsphasen brauchen.}:
-
address@hidden @code
address@hidden unpack
-Den Quell-Tarball entpacken und das Arbeitsverzeichnis wechseln in den
-entpackten Quellbaum. Wenn die Quelle bereits ein Verzeichnis ist, wird es
-in den Quellbaum kopiert und dorthin gewechselt.
-
address@hidden patch-source-shebangs
-»Shebangs« in Quelldateien beheben, damit Sie sich auf die richtigen
-Store-Dateipfade beziehen. Zum Beispiel könnte @code{#!/bin/sh} zu
address@hidden/gnu/store/@dots{}-bash-4.3/bin/sh} geändert werden.
-
address@hidden configure
-Das Skript @file{configure} mit einigen vorgegebenen Befehlszeilenoptionen
-ausführen, wie z.B.@: mit @code{--prefix=/gnu/store/@dots{}}, sowie mit den
-im @code{#:configure-flags}-Argument angegebenen Optionen.
-
address@hidden build
address@hidden ausführen mit den Optionen aus der Liste in
address@hidden:make-flags}. Wenn das Argument @code{#:parallel-build?} auf wahr
-gesetzt ist (was der Vorgabewert ist), wird @code{make -j} zum Erstellen
-ausgeführt.
-
address@hidden check
address@hidden check} (oder statt @code{check} ein anderes bei
address@hidden:test-target} angegebenes Ziel) ausführen, außer falls 
@code{#:tests?
-#f} gesetzt ist. Wenn das Argument @code{#:parallel-tests?} auf wahr gesetzt
-ist (der Vorgabewert), führe @code{make check -j} aus.
-
address@hidden install
address@hidden install} mit den in @code{#:make-flags} aufgelisteten Optionen
-ausführen.
-
address@hidden patch-shebangs
-Shebangs in den installierten ausführbaren Dateien beheben.
-
address@hidden strip
-Symbole zur Fehlerbehebung aus ELF-Dateien entfernen (außer
address@hidden:strip-binaries?} ist auf falsch gesetzt) und in die
address@hidden kopieren, falls diese verfügbar ist (siehe
address@hidden zur Fehlersuche installieren}).
address@hidden table
-
address@hidden %standard-phases
-Das erstellungsseitige Modul @code{(guix build gnu-build-system)} definiert
address@hidden als die vorgegebene Liste der
-Erstellungsphasen. @var{%standard-phases} ist eine Liste von Paaren aus je
-einem Symbol und einer Prozedur. Letztere implementiert die eigentliche
-Phase.
-
-Die Liste der Phasen, die für ein bestimmtes Paket verwendet werden sollen,
-kann vom Parameter @code{#:phases} überschrieben werden. Zum Beispiel werden
-bei Übergabe von:
-
address@hidden
-#:phases (modify-phases %standard-phases (delete 'configure))
address@hidden example
-
-alle oben beschriebenen Phasen benutzt außer der @code{configure}-Phase.
-
-Zusätzlich stellt dieses Erstellungssystem sicher, dass die
-»Standard«-Umgebung für GNU-Pakete zur Verfügung steht. Diese umfasst
-Werkzeuge wie GCC, libc, Coreutils, Bash, Make, Diffutils, grep und sed
-(siehe das Modul @code{(guix build-system gnu)} für eine vollständige
-Liste). Wir bezeichnen sie als @dfn{implizite Eingaben} eines Pakets, weil
-Paketdefinitionen sie nicht aufführen müssen.
address@hidden defvr
-
-Andere @code{<build-system>}-Objekte werden definiert, um andere
-Konventionen und Werkzeuge von Paketen für freie Software zu
-unterstützen. Die anderen Erstellungssysteme erben den Großteil vom
address@hidden und unterscheiden sich hauptsächlich darin, welche
-Eingaben dem Erstellungsprozess implizit hinzugefügt werden und welche Liste
-von Phasen durchlaufen wird. Manche dieser Erstellungssysteme sind im
-Folgenden aufgeführt.
-
address@hidden {Scheme-Variable} ant-build-system
-Diese Variable wird vom Modul @code{(guix build-system ant)} exportiert. Sie
-implementiert die Erstellungsprozedur für Java-Pakete, die mit dem
address@hidden://ant.apache.org/, Ant build tool} erstellt werden können.
-
-Sowohl @code{ant} als auch der @dfn{Java Development Kit} (JDK), wie er vom
-Paket @code{icedtea} bereitgestellt wird, werden zu den Eingaben
-hinzugefügt. Wenn andere Pakete dafür benutzt werden sollen, können sie
-jeweils mit den Parametern @code{#:ant} und @code{#:jdk} festgelegt werden.
-
-Falls das ursprüngliche Paket über keine nutzbare Ant-Erstellungsdatei
-(»Ant-Buildfile«) verfügt, kann aus der Angabe im Parameter
address@hidden:jar-name} eine minimale Ant-Erstellungsdatei @file{build.xml}
-erzeugt werden, in der die für die Erstellung durchzuführenden Aufgaben
-(Tasks) für die Erstellung des angegebenen Jar-Archivs stehen. In diesem
-Fall kann der Parameter @code{#:source-dir} benutzt werden, um das
-Unterverzeichnis mit dem Quellcode anzugeben; sein Vorgabewert ist »src«.
-
-Der Parameter @code{#:main-class} kann mit einer minimalen
-Ant-Erstellungsdatei benutzt werden, um die Hauptklasse des resultierenden
-Jar-Archivs anzugeben. Dies ist nötig, wenn die Jar-Datei ausführbar sein
-soll. Mit dem Parameter @code{#:test-include} kann eine Liste angegeben
-werden, welche Junit-Tests auszuführen sind. Der Vorgabewert ist @code{(list
-"**/*Test.java")}. Mit @code{#:test-exclude} kann ein Teil der Testdateien
-ignoriert werden. Der Vorgabewert ist @code{(list "**/Abstract*.java")},
-weil abstrakte Klassen keine ausführbaren Tests enthalten können.
-
-Der Parameter @code{#:build-target} kann benutzt werden, um die Ant-Aufgabe
-(Task) anzugeben, die während der @code{build}-Phase ausgeführt werden
-soll. Vorgabe ist, dass die Aufgabe (Task) »jar« ausgeführt wird.
-
address@hidden defvr
-
address@hidden {Scheme-Variable} android-ndk-build-system
address@hidden Android-Distribution
address@hidden Android-NDK-Erstellungssystem
-Diese Variable wird von @code{(guix build-system android-ndk)}
-exportiert. Sie implementiert eine Erstellungsprozedur für das Android NDK
-(Native Development Kit) benutzende Pakete mit einem Guix-spezifischen
-Erstellungsprozess.
-
-Für das Erstellungssystem wird angenommen, dass Pakete die zu ihrer
-öffentlichen Schnittstelle gehörenden Header-Dateien im Unterverzeichnis
-"include" der Ausgabe "out" und ihre Bibliotheken im Unterverzeichnis "lib"
-der Ausgabe "out" platzieren.
-
-Ebenso wird angenommen, dass es keine im Konflikt stehenden Dateien unter
-der Vereinigung aller Abhängigkeiten gibt.
-
-Derzeit wird Cross-Kompilieren hierfür nicht unterstützt, also wird dabei
-vorausgesetzt, dass Bibliotheken und Header-Dateien dieselben wie im
-Wirtssystem sind.
-
address@hidden defvr
-
address@hidden {Scheme-Variable} asdf-build-system/source
address@hidden {Scheme-Variable} asdf-build-system/sbcl
address@hidden {Scheme-Variable} asdf-build-system/ecl
-
-Diese Variablen, die vom Modul @code{(guix build-system asdf)} exportiert
-werden, implementieren Erstellungsprozeduren für Common-Lisp-Pakete, welche
address@hidden://common-lisp.net/project/asdf/, »ASDF«} benutzen. ASDF dient der
-Systemdefinition für Common-Lisp-Programme und -Bibliotheken.
-
-Das Erstellungssystem @code{asdf-build-system/source} installiert die Pakete
-in Quellcode-Form und kann @i{via} ASDF mit jeder
-Common-Lisp-Implementierung geladen werden. Die anderen Erstellungssysteme
-wie @code{asdf-build-system/sbcl} installieren binäre Systeme in dem Format,
-das von einer bestimmten Implementierung verstanden wird. Diese
-Erstellungssysteme können auch benutzt werden, um ausführbare Programme zu
-erzeugen oder um Lisp-Abbilder mit einem vorab geladenen Satz von Paketen zu
-erzeugen.
-
-Das Erstellungssystem benutzt gewisse Namenskonventionen. Bei Binärpaketen
-sollte dem Paketnamen die Lispimplementierung als Präfix vorangehen, z.B.@:
address@hidden für @code{asdf-build-system/sbcl}.
-
-Zudem sollte das entsprechende Quellcode-Paket mit der Konvention wie bei
-Python-Paketen (siehe @ref{Python-Module}) ein @code{cl-} als Präfix
-bekommen.
-
-Für Binärpakete sollte für jedes System ein Guix-Paket definiert
-werden. Wenn für einen Ursprung im @code{origin} mehrere Systeme enthalten
-sind, können Paketvarianten geschrieben werden, mit denen alle Systeme
-erstellt werden. Quellpakete, die @code{asdf-build-system/source} benutzen,
-können mehrere Systeme enthalten.
-
-Um ausführbare Programme und Abbilder zu erzeugen, können die
-erstellungsseitigen Prozeduren @code{build-program} und @code{build-image}
-benutzt werden. Sie sollten in einer Erstellungsphase nach der
address@hidden aufgerufen werden, damit das gerade erstellte
-System Teil des resultierenden Abbilds sein kann. An @code{build-program}
-muss eine Liste von Common-Lisp-Ausdrücken über das Argument
address@hidden:entry-program} übergeben werden.
-
-Wenn das System nicht in seiner eigenen gleichnamigen @code{.asd}-Datei
-definiert ist, sollte der Parameter @code{#:asd-file} benutzt werden, um
-anzugeben, in welcher Datei das System definiert ist. Außerdem wird bei
-Paketen, für deren Tests ein System in einer separaten Datei definiert
-wurde, dieses System geladen, bevor die Tests ablaufen, wenn es im Parameter
address@hidden:test-asd-file} steht. Ist dafür kein Wert gesetzt, werden die
-Dateien @code{<system>-tests.asd}, @code{<system>-test.asd},
address@hidden und @code{test.asd} durchsucht, wenn sie existieren.
-
-Wenn aus irgendeinem Grund der Paketname nicht den Namenskonventionen folgen
-kann, kann der Parameter @code{#:asd-system-name} benutzt werden, um den
-Namen des Systems anzugeben.
-
address@hidden defvr
-
address@hidden {Scheme-Variable} cargo-build-system
address@hidden Rust-Programmiersprache
address@hidden Cargo (Rust-Erstellungssystem)
-Diese Variable wird vom Modul @code{(guix build-system cargo)}
-exportiert. Damit können Pakete mit Cargo erstellt werden, dem
-Erstellungswerkzeug der @uref{https://www.rust-lang.org,
-Rust-Programmiersprache}.
-
-In seiner @code{configure}-Phase ersetzt dieses Erstellungssystem in der
-Datei @file{Carto.toml} angegebene Abhängigkeiten durch Eingaben im
-Guix-Paket. Die Phase @code{install} installiert die Binärdateien und auch
-den Quellcode und die @file{Cargo.toml}-Datei.
address@hidden defvr
-
address@hidden Clojure (Programmiersprache)
address@hidden einfaches Clojure-Erstellungssystem
address@hidden {Scheme-Variable} clojure-build-system
-Diese Variable wird durch das Modul @code{(guix build-system clojure)}
-exportiert. Sie implementiert eine einfache Erstellungsprozedur für in
address@hidden://clojure.org/, Clojure} geschriebene Pakete mit dem guten alten
address@hidden in Clojure. Cross-Kompilieren wird noch nicht unterstützt.
-
-Das Erstellungssystem fügt @code{clojure}, @code{icedtea} und @code{zip} zu
-den Eingaben hinzu. Sollen stattdessen andere Pakete benutzt werden, können
-diese jeweils mit den Parametern @code{#:clojure}, @code{#:jdk} und
address@hidden:zip} spezifiziert werden.
-
-Eine Liste der Quellcode-Verzeichnisse, Test-Verzeichnisse und Namen der
-Jar-Dateien können jeweils über die Parameter @code{#:source-dirs},
address@hidden:test-dirs} und @code{#:jar-names} angegeben werden. Das 
Verzeichnis,
-in das kompiliert wird, sowie die Hauptklasse können jeweils mit den
-Parametern @code{#:compile-dir} und @code{#:main-class} angegeben
-werden. Andere Parameter sind im Folgenden dokumentiert.
-
-Dieses Erstellungssystem ist eine Erweiterung des @var{ant-build-system},
-bei der aber die folgenden Phasen geändert wurden:
-
address@hidden @code
-
address@hidden build
-Diese Phase ruft @code{compile} in Clojure auf, um Quelldateien zu
-kompilieren, und führt @command{jar} aus, um Jar-Dateien aus sowohl
-Quelldateien als auch kompilierten Dateien zu erzeugen, entsprechend der
-jeweils in @code{#:aot-include} und @code{#:aot-exclude} festgelegten Listen
-aus in der Menge der Quelldateien eingeschlossenen und ausgeschlossenen
-Bibliotheken. Die Ausschlussliste hat Vorrang vor der Einschlussliste. Diese
-Listen setzen sich aus Symbolen zusammen, die für Clojure-Bibliotheken
-stehen oder dem Schlüsselwort @code{#:all} entsprechen, was für alle im
-Quellverzeichis gefundenen Clojure-Bibliotheken steht. Der Parameter
address@hidden:omit-source?} entscheidet, ob Quelldateien in die Jar-Archive
-aufgenommen werden sollten.
-
address@hidden check
-In dieser Phase werden Tests auf die durch Einschluss- und Ausschlussliste
address@hidden:test-include} bzw. @code{#:test-exclude} angegebenen Dateien
-ausgeführt. Deren Bedeutung ist analog zu @code{#:aot-include} und
address@hidden:aot-exclude}, außer dass das besondere Schlüsselwort @code{#:all}
-jetzt für alle Clojure-Bibliotheken in den Test-Verzeichnissen steht. Der
-Parameter @code{#:tests?} entscheidet, ob Tests ausgeführt werden sollen.
-
address@hidden install
-In dieser Phase werden alle zuvor erstellten Jar-Dateien installiert.
address@hidden table
-
-Zusätzlich zu den bereits angegebenen enthält dieses Erstellungssystem noch
-eine weitere Phase.
-
address@hidden @code
-
address@hidden install-doc
-Diese Phase installiert alle Dateien auf oberster Ebene, deren Basisnamen
-ohne Verzeichnisangabe zu @var{%doc-regex} passen. Ein anderer regulärer
-Ausdruck kann mit dem Parameter @code{#:doc-regex} verwendet werden. All die
-so gefundenen oder (rekursiv) in den mit @code{#:doc-dirs} angegebenen
-Dokumentationsverzeichnissen liegenden Dateien werden installiert.
address@hidden table
address@hidden defvr
-
address@hidden {Scheme-Variable} cmake-build-system
-Diese Variable wird von @code{(guix build-system cmake)} exportiert. Sie
-implementiert die Erstellungsprozedur für Pakete, die das
address@hidden://www.cmake.org, CMake-Erstellungswerkzeug} benutzen.
-
-Das Erstellungssystem fügt automatisch das Paket @code{cmake} zu den
-Eingaben hinzu. Welches Paket benutzt wird, kann mit dem Parameter
address@hidden:cmake} geändert werden.
-
-Der Parameter @code{#:configure-flags} wird als Liste von
-Befehlszeilenoptionen aufgefasst, die an den Befehl @command{cmake}
-übergeben werden. Der Parameter @code{#:build-type} abstrahiert, welche
-Befehlszeilenoptionen dem Compiler übergeben werden; der Vorgabewert ist
address@hidden"RelWithDebInfo"} (kurz für »release mode with debugging
-information«), d.h.@: kompiliert wird für eine Produktionsumgebung und
-Informationen zur Fehlerbehebung liegen bei, was ungefähr @code{-O2 -g}
-entspricht, wie bei der Vorgabe für Autoconf-basierte Pakete.
address@hidden defvr
-
address@hidden {Scheme-Variable} dune-build-system
-Diese Variable wird vom Modul @code{(guix build-system dune)}
-exportiert. Sie unterstützt es, Pakete mit @uref{https://dune.build/, Dune}
-zu erstellen, einem Erstellungswerkzeug für die Programmiersprache OCaml,
-und ist als Erweiterung des unten beschriebenen OCaml-Erstellungssystems
address@hidden implementiert. Als solche können auch die
-Parameter @code{#:ocaml} und @code{#:findlib} an dieses Erstellungssystem
-übergeben werden.
-
-Das Erstellungssystem fügt automatisch das Paket @code{dune} zu den Eingaben
-hinzu. Welches Paket benutzt wird, kann mit dem Parameter @code{#:dune}
-geändert werden.
-
-There is no @code{configure} phase because dune packages typically don't
-need to be configured.  The @code{#:build-flags} parameter is taken as a
-list of flags passed to the @code{dune} command during the build.
-
-The @code{#:jbuild?} parameter can be passed to use the @code{jbuild}
-command instead of the more recent @code{dune} command while building a
-package.  Its default value is @code{#f}.
-
-The @code{#:package} parameter can be passed to specify a package name,
-which is useful when a package contains multiple packages and you want to
-build only one of them.  This is equivalent to passing the @code{-p}
-argument to @code{dune}.
address@hidden defvr
-
address@hidden {Scheme-Variable} go-build-system
-Diese Variable wird vom Modul @code{(guix build-system go)} exportiert. Mit
-ihr ist eine Erstellungsprozedur für Go-Pakete implementiert, die dem
-normalen
address@hidden://golang.org/cmd/go/#hdr-Compile_packages_and_dependencies,
-Go-Erstellungsmechanismus} entspricht.
-
-Beim Aufruf wird ein Wert für den Schlüssel @code{#:import-path} und
-manchmal auch für @code{#:unpack-path} erwartet.  Der
address@hidden://golang.org/doc/code.html#ImportPaths, »import path«} entspricht
-dem Dateisystempfad, den die Erstellungsskripts des Pakets und darauf Bezug
-nehmende Pakete erwarten; durch ihn wird ein Go-Paket eindeutig
-bezeichnet. Typischerweise setzt er sich aus einer Kombination der
-entfernten URI des Paketquellcodes und der Dateisystemhierarchie
-zusammen. Manchmal ist es nötig, den Paketquellcode in ein anderes als das
-vom »import path« bezeichnete Verzeichnis zu entpacken; diese andere
-Verzeichnisstruktur sollte dann als @code{#:unpack-path} angegeben werden.
-
-Pakete, die Go-Bibliotheken zur Verfügung stellen, sollten ihren Quellcode
-auch in die Erstellungsausgabe installieren. Der Schlüssel
address@hidden:install-source?}, sein Vorgabewert ist @code{#t}, steuert, ob
-Quellcode installiert wird. Bei Paketen, die nur ausführbare Dateien
-liefern, kann der Wert auf @code{#f} gesetzt werden.
address@hidden defvr
-
address@hidden {Scheme-Variable} glib-or-gtk-build-system
-Diese Variable wird vom Modul @code{(guix build-system glib-or-gtk)}
-exportiert. Sie ist für Pakete gedacht, die GLib oder GTK benutzen.
-
-Dieses Erstellungssystem fügt die folgenden zwei Phasen zu denen von
address@hidden hinzu:
-
address@hidden @code
address@hidden glib-or-gtk-wrap
-Die Phase @code{glib-or-gtk-wrap} stellt sicher, dass Programme in
address@hidden/} in der Lage sind, GLib-»Schemata« und
address@hidden://developer.gnome.org/gtk3/stable/gtk-running.html, GTK-Module}
-zu finden. Dazu wird für das Programm ein Wrapper-Skript erzeugt, dass das
-eigentliche Programm mit den richtigen Werten für die Umgebungsvariablen
address@hidden und @code{GTK_PATH} aufruft.
-
-Es ist möglich, bestimmte Paketausgaben von diesem Wrapping-Prozess
-auszunehmen, indem Sie eine Liste ihrer Namen im Parameter
address@hidden:glib-or-gtk-wrap-excluded-outputs} angeben. Das ist nützlich, 
wenn
-man von einer Ausgabe weiß, dass sie keine Binärdateien enthält, die GLib
-oder GTK benutzen, und diese Ausgabe durch das Wrappen ohne Not eine weitere
-Abhängigkeit von GLib und GTK bekäme.
-
address@hidden glib-or-gtk-compile-schemas
-Mit der Phase @code{glib-or-gtk-compile-schemas} wird sichergestellt, dass
-alle @uref{https://developer.gnome.org/gio/stable/glib-compile-schemas.html,
-GSettings-Schemata} für GLib kompiliert werden. Dazu wird das Programm
address@hidden ausgeführt. Es kommt aus dem Paket
address@hidden:bin}, was automatisch vom Erstellungssystem importiert
-wird. Welches @code{glib}-Paket dieses @command{glib-compile-schemas}
-bereitstellt, kann mit dem Parameter @code{#:glib} spezifiziert werden.
address@hidden table
-
-Beide Phasen finden nach der @code{install}-Phase statt.
address@hidden defvr
-
address@hidden {Scheme-Variable} guile-build-system
-Dieses Erstellungssystem ist für Guile-Pakete gedacht, die nur aus
-Scheme-Code bestehen und so schlicht sind, dass sie nicht einmal ein
-Makefile und erst recht keinen @file{configure}-Skript enthalten. Hierzu
-wird Scheme-Code mit @command{guild compile} kompiliert (siehe
address@hidden,,, guile, GNU Guile Reference Manual}) und die @file{.scm}-
-und @file{.go}-Dateien an den richtigen Pfad installiert. Auch Dokumentation
-wird installiert.
-
-Das Erstellungssystem unterstützt Cross-Kompilieren durch die
-Befehlszeilenoption @code{--target} für @command{guild compile}.
-
-Mit @code{guile-build-system} erstellte Pakete müssen ein Guile-Paket in
-ihrem @code{native-inputs}-Feld aufführen.
address@hidden defvr
-
address@hidden {Scheme-Variable} minify-build-system
-Diese Variable wird vom Modul @code{(guix build-system minify)}
-exportiert. Sie implementiert eine Prozedur zur Minifikation einfacher
-JavaScript-Pakete.
-
-Es fügt @code{uglify-js} zur Menge der Eingaben hinzu und komprimiert damit
-alle JavaScript-Dateien im @file{src}-Verzeichnis. Ein anderes Programm zur
-Minifikation kann verwendet werden, indem es mit dem Parameter
address@hidden:uglify-js} angegeben wird; es wird erwartet, dass das angegebene
-Paket den minifizierten Code auf der Standardausgabe ausgibt.
-
-Wenn die Eingabe-JavaScript-Dateien nicht alle im @file{src}-Verzeichnis
-liegen, kann mit dem Parameter @code{#:javascript-files} eine Liste der
-Dateinamen übergeben werden, auf die das Minifikationsprogramm aufgerufen
-wird.
address@hidden defvr
-
address@hidden {Scheme-Variable} ocaml-build-system
-Diese Variable wird vom Modul @code{(guix build-system ocaml)}
-exportiert. Mit ihr ist ein Erstellungssystem für @uref{https://ocaml.org,
-OCaml}-Pakete implementiert, was bedeutet, dass es die richtigen
-auszuführenden Befehle für das jeweilige Paket auswählt. OCaml-Pakete können
-sehr unterschiedliche Befehle erwarten. Dieses Erstellungssystem probiert
-manche davon durch.
-
-Wenn im Paket eine Datei @file{setup.ml} auf oberster Ebene vorhanden ist,
-wird @code{ocaml setup.ml -configure}, @code{ocaml setup.ml -build} und
address@hidden setup.ml -install} ausgeführt. Das Erstellungssystem wird
-annehmen, dass die Datei durch @uref{http://oasis.forge.ocamlcore.org/,
-OASIS} erzeugt wurde, und wird das Präfix setzen und Tests aktivieren, wenn
-diese nicht abgeschaltet wurden. Sie können Befehlszeilenoptionen zum
-Konfigurieren und Erstellen mit den Parametern @code{#:configure-flags} und
address@hidden:build-flags} übergeben. Der Schlüssel @code{#:test-flags} kann
-übergeben werden, um die Befehlszeilenoptionen zu ändern, mit denen die
-Tests aktiviert werden. Mit dem Parameter @code{#:use-make?} kann dieses
-Erstellungssystem für die build- und install-Phasen abgeschaltet werden.
-
-Verfügt das Paket über eine @file{configure}-Datei, wird angenommen, dass
-diese von Hand geschrieben wurde mit einem anderen Format für Argumente als
-bei einem Skript des @code{gnu-build-system}. Sie können weitere
-Befehlszeilenoptionen mit dem Schlüssel @code{#:configure-flags} hinzufügen.
-
-Falls dem Paket ein @file{Makefile} beiliegt (oder @code{#:use-make?} auf
address@hidden gesetzt wurde), wird dieses benutzt und weitere
-Befehlszeilenoptionen können mit dem Schlüssel @code{#:make-flags} zu den
-build- und install-Phasen hinzugefügt werden.
-
-Letztlich gibt es in manchen Pakete keine solchen Dateien, sie halten sich
-aber an bestimmte Konventionen, wo ihr eigenes Erstellungssystem zu finden
-ist. In diesem Fall führt Guix’ OCaml-Erstellungssystem @code{ocaml
-pkg/pkg.ml} oder @code{ocaml pkg/build.ml} aus und kümmert sich darum, dass
-der Pfad zu dem benötigten findlib-Modul passt. Weitere
-Befehlszeilenoptionen können über den Schlüssel @code{#:build-flags}
-übergeben werden. Um die Installation kümmert sich
address@hidden In diesem Fall muss das @code{opam}-Paket im
address@hidden der Paketdefinition stehen.
-
-Beachten Sie, dass die meisten OCaml-Pakete davon ausgehen, dass sie in
-dasselbe Verzeichnis wie OCaml selbst installiert werden, was wir in Guix
-aber nicht so haben wollen. Solche Pakete installieren ihre
address@hidden in das Verzeichnis ihres Moduls, was für die meisten
-anderen Einrichtungen funktioniert, weil es im OCaml-Compilerverzeichnis
-liegt. Jedoch können so in Guix die Bibliotheken nicht gefunden werden,
-deswegen benutzen wir @code{CAML_LD_LIBRARY_PATH}. Diese Umgebungsvariable
-zeigt auf @file{lib/ocaml/site-lib/stubslibs} und dorthin sollten
address@hidden installiert werden.
address@hidden defvr
-
address@hidden {Scheme-Variable} python-build-system
-Diese Variable wird vom Modul @code{(guix build-system python)}
-exportiert. Sie implementiert mehr oder weniger die konventionelle
-Erstellungsprozedur, wie sie für Python-Pakete üblich ist, d.h.@: erst wird
address@hidden setup.py build} ausgeführt und dann @code{python setup.py
-install --prefix=/gnu/store/@dots{}}.
-
-Für Pakete, die eigenständige Python-Programme nach @code{bin/}
-installieren, sorgt dieses Erstellungssystem dafür, dass die Programme in
-ein Wrapper-Skript verpackt werden, welches die eigentlichen Programme mit
-einer Umgebungsvariablen @code{PYTHONPATH} aufruft, die alle
-Python-Bibliotheken auflistet, von denen die Programme abhängen.
-
-Welches Python-Paket benutzt wird, um die Erstellung durchzuführen, kann mit
-dem Parameter @code{#:python} bestimmt werden. Das ist nützlich, wenn wir
-erzwingen wollen, dass ein Paket mit einer bestimmten Version des
-Python-Interpretierers arbeitet, was nötig sein kann, wenn das Programm nur
-mit einer einzigen Interpretiererversion kompatibel ist.
-
-Standardmäßig ruft Guix @code{setup.py} auf, was zu @code{setuptools}
-gehört, ähnlich wie es auch @command{pip} tut. Manche Pakete sind mit
-setuptools (und pip) inkompatibel, deswegen können Sie diese Einstellung
-abschalten, indem Sie den Parameter @code{#:use-setuptools} auf @code{#f}
-setzen.
address@hidden defvr
-
address@hidden {Scheme-Variable} perl-build-system
-Diese Variable wird vom Modul @code{(guix build-system perl)}
-exportiert. Mit ihr wird die Standard-Erstellungsprozedur für Perl-Pakete
-implementiert, welche entweder darin besteht, @code{perl Build.PL
---prefix=/gnu/store/@dots{}} gefolgt von @code{Build} und @code{Build
-install} auszuführen, oder @code{perl Makefile.PL PREFIX=/gnu/store/@dots{}}
-gefolgt von @code{make} und @code{make install} auszuführen, je nachdem, ob
-eine Datei @code{Build.PL} oder eine Datei @code{Makefile.PL} in der
-Paketdistribution vorliegt. Den Vorrang hat erstere, wenn sowohl
address@hidden als auch @code{Makefile.PL} in der Paketdistribution
-existieren. Der Vorrang kann umgekehrt werden, indem @code{#t} für den
-Parameter @code{#:make-maker?} angegeben wird.
-
-Der erste Aufruf von @code{perl Makefile.PL} oder @code{perl Build.PL}
-übergibt die im Parameter @code{#:make-maker-flags}
-bzw. @code{#:module-build-flags} angegebenen Befehlszeilenoptionen, je
-nachdem, was verwendet wird.
-
-Welches Perl-Paket dafür benutzt wird, kann mit @code{#:perl} angegeben
-werden.
address@hidden defvr
-
address@hidden {Scheme-Variable} r-build-system
-Diese Variable wird vom Modul @code{(guix build-system r)} exportiert. Sie
-entspricht einer Implementierung der durch @uref{http://r-project.org,
-R}-Pakete genutzten Erstellungsprozedur, die wenig mehr tut, als @code{R CMD
-INSTALL --library=/gnu/store/@dots{}} in einer Umgebung auszuführen, in der
-die Umgebungsvariable @code{R_LIBS_SITE} die Pfade aller R-Pakete unter den
-Paketeingaben enthält. Tests werden nach der Installation mit der R-Funktion
address@hidden::testInstalledPackage} ausgeführt.
address@hidden defvr
-
address@hidden {Scheme-Variable} rakudo-build-system
-This variable is exported by @code{(guix build-system rakudo)} It implements
-the build procedure used by @uref{https://rakudo.org/, Rakudo} for
address@hidden://perl6.org/, Perl6} packages. It installs the package to
address@hidden/gnu/store/@dots{}/NAME-VERSION/share/perl6} and installs the
-binaries, library files and the resources, as well as wrap the files under
-the @code{bin/} directory.  Tests can be skipped by passing @code{#f} to the
address@hidden parameter.
-
-Which rakudo package is used can be specified with @code{rakudo}.  Which
-perl6-tap-harness package used for the tests can be specified with
address@hidden:prove6} or removed by passing @code{#f} to the 
@code{with-prove6?}
-parameter.  Which perl6-zef package used for tests and installing can be
-specified with @code{#:zef} or removed by passing @code{#f} to the
address@hidden parameter.
address@hidden defvr
-
address@hidden {Scheme-Variable} texlive-build-system
-Diese Variable wird vom Modul @code{(guix build-system texlive)}
-exportiert. Mit ihr werden TeX-Pakete in Stapelverarbeitung (»batch mode«)
-mit der angegebenen Engine erstellt. Das Erstellungssystem setzt die
-Variable @code{TEXINPUTS} so, dass alle TeX-Quelldateien unter den Eingaben
-gefunden werden können.
-
-Standardmäßig wird @code{luatex} auf allen Dateien mit der Dateiendung
address@hidden ausgeführt. Eine andere Engine oder ein anderes Format kann mit
-dem Argument @code{#:tex-format} angegeben werden. Verschiedene
-Erstellungsziele können mit dem Argument @code{#:build-targets} festgelegt
-werden, das eine Liste von Dateinamen erwartet. Das Erstellungssystem fügt
-nur @code{texlive-bin} und @code{texlive-latex-base} zu den Eingaben hinzu
-(beide kommen aus dem Modul @code{(gnu packages tex}). Für beide kann das zu
-benutzende Paket jeweils mit den Argumenten @code{#:texlive-bin} oder
address@hidden:texlive-latex-base} geändert werden.
-
-Der Parameter @code{#:tex-directory} sagt dem Erstellungssystem, wohin die
-installierten Dateien im texmf-Verzeichnisbaum installiert werden sollen.
address@hidden defvr
-
address@hidden {Scheme-Variable} ruby-build-system
-Diese Variable wird vom Modul @code{(guix build-system ruby)}
-exportiert. Sie steht für eine Implementierung der
-RubyGems-Erstellungsprozedur, die für Ruby-Pakete benutzt wird, wobei
address@hidden build} gefolgt von @code{gem install} ausgeführt wird.
-
-Das @code{source}-Feld eines Pakets, das dieses Erstellungssystem benutzt,
-verweist typischerweise auf ein Gem-Archiv, weil Ruby-Entwickler dieses
-Format benutzen, wenn sie ihre Software veröffentlichen. Das
-Erstellungssystem entpackt das Gem-Archiv, spielt eventuell Patches für den
-Quellcode ein, führt die Tests aus, verpackt alles wieder in ein Gem-Archiv
-und installiert dieses. Neben Gem-Archiven darf das Feld auch auf
-Verzeichnisse und Tarballs verweisen, damit es auch möglich ist,
-unveröffentlichte Gems aus einem Git-Repository oder traditionelle
-Quellcode-Veröffentlichungen zu benutzen.
-
-Welches Ruby-Paket benutzt werden soll, kann mit dem Parameter @code{#:ruby}
-festgelegt werden. Eine Liste zusätzlicher Befehlszeilenoptionen für den
-Aufruf des @command{gem}-Befehls kann mit dem Parameter @code{#:gem-flags}
-angegeben werden.
address@hidden defvr
-
address@hidden {Scheme-Variable} waf-build-system
-Diese Variable wird durch das Modul @code{(guix build-system waf)}
-exportiert. Damit ist eine Erstellungsprozedur rund um das @code{waf}-Skript
-implementiert. Die üblichen Phasen — @code{configure}, @code{build} und
address@hidden — sind implementiert, indem deren Namen als Argumente an das
address@hidden übergeben werden.
-
-Das @code{waf}-Skript wird vom Python-Interpetierer ausgeführt. Mit welchem
-Python-Paket das Skript ausgeführt werden soll, kann mit dem Parameter
address@hidden:python} angegeben werden.
address@hidden defvr
-
address@hidden {Scheme-Variable} scons-build-system
-Diese Variable wird vom Modul @code{(guix build-system scons)}
-exportiert. Sie steht für eine Implementierung der Erstellungsprozedur, die
-das SCons-Softwarekonstruktionswerkzeug (»software construction tool«)
-benutzt. Das Erstellungssystem führt @code{scons} aus, um das Paket zu
-erstellen, führt mit @code{scons test} Tests aus und benutzt @code{scons
-install}, um das Paket zu installieren.
-
-Zusätzliche Optionen, die an @code{scons} übergeben werden sollen, können
-mit dem Parameter @code{#:scons-flags} angegeben werden. Die Python-Version,
-die benutzt werden soll, um SCons auszuführen, kann festgelegt werden, indem
-das passende SCons-Paket mit dem Parameter @code{#:scons} ausgewählt wird.
address@hidden defvr
-
address@hidden {Scheme-Variable} haskell-build-system
-Diese Variable wird vom Modul @code{(guix build-system haskell)}
-exportiert. Sie bietet Zugang zur Cabal-Erstellungsprozedur, die von
-Haskell-Paketen benutzt wird, was bedeutet, @code{runhaskell Setup.hs
-configure --prefix=/gnu/store/@dots{}} und @code{runhaskell Setup.hs build}
-auszuführen. Statt das Paket mit dem Befehl @code{runhaskell Setup.hs
-install} zu installieren, benutzt das Erstellungssystem @code{runhaskell
-Setup.hs copy} gefolgt von @code{runhaskell Setup.hs register}, um keine
-Bibliotheken im Store-Verzeichnis des Compilers zu speichern, auf dem keine
-Schreibberechtigung besteht. Zusätzlich generiert das Erstellungssystem
-Dokumentation durch Ausführen von @code{runhaskell Setup.hs haddock}, außer
address@hidden:haddock? #f} wurde übergeben. Optional können an Haddock 
Parameter
-mit Hilfe des Parameters @code{#:haddock-flags} übergeben werden. Wird die
-Datei @code{Setup.hs} nicht gefunden, sucht das Erstellungssystem
-stattdessen nach @code{Setup.lhs}.
-
-Welcher Haskell-Compiler benutzt werden soll, kann über den
address@hidden:haskell}-Parameter angegeben werden. Als Vorgabewert verwendet er
address@hidden
address@hidden defvr
-
address@hidden {Scheme-Variable} dub-build-system
-Diese Variable wird vom Modul @code{(guix build-system dub)} exportiert. Sie
-verweist auf eine Implementierung des Dub-Erstellungssystems, das von
-D-Paketen benutzt wird. Dabei werden @code{dub build} und @code{dub run}
-ausgeführt. Die Installation wird durch manuelles Kopieren der Dateien
-durchgeführt.
-
-Welcher D-Compiler benutzt wird, kann mit dem Parameter @code{#:ldc}
-festgelegt werden, was als Vorgabewert @code{ldc} benutzt.
address@hidden defvr
-
address@hidden {Scheme-Variable} emacs-build-system
-Diese Variable wird vom Modul @code{(guix build-system emacs)}
-exportiert. Darin wird eine Installationsprozedur ähnlich der des
-Paketsystems von Emacs selbst implementiert (siehe @ref{Packages,,, emacs,
-The GNU Emacs Manual}).
-
-Zunächst wird eine Datei @address@hidden erzeugt, dann
-werden alle Emacs-Lisp-Dateien zu Bytecode kompiliert. Anders als beim
-Emacs-Paketsystem werden die Info-Dokumentationsdateien in das
-Standardverzeichnis für Dokumentation verschoben und die Datei @file{dir}
-gelöscht. Jedes Paket wird in sein eigenes Verzeichnis unter
address@hidden/emacs/site-lisp/guix.d} installiert.
address@hidden defvr
-
address@hidden {Scheme-Variable} font-build-system
-Diese Variable wird vom Modul @code{(guix build-system font)}
-exportiert. Mit ihr steht eine Installationsprozedur für Schriftarten-Pakete
-zur Verfügung für vom Anbieter vorkompilierte TrueType-, OpenType- und
-andere Schriftartendateien, die nur an die richtige Stelle kopiert werden
-müssen. Dieses Erstellungssystem kopiert die Schriftartendateien an den
-Konventionen folgende Orte im Ausgabeverzeichnis.
address@hidden defvr
-
address@hidden {Scheme-Variable} meson-build-system
-Diese Variable wird vom Modul @code{(guix build-system meson)}
-exportiert. Sie enthält die Erstellungsprozedur für Pakete, die
address@hidden://mesonbuild.com, Meson} als ihr Erstellungssystem benutzen.
-
-Mit ihr werden sowohl Meson als auch @uref{https://ninja-build.org/, Ninja}
-zur Menge der Eingaben hinzugefügt; die Pakete dafür können mit den
-Parametern @code{#:meson} und @code{#:ninja} geändert werden, wenn
-nötig. Das vorgegebene Meson-Paket ist @code{meson-for-build}, ein
-besonderes Paket, dessen Besonderheit darin besteht, den @code{RUNPATH} von
-Binärdateien und Bibliotheken @emph{nicht} zu entfernen, wenn sie
-installiert werden.
-
-Dieses Erstellungssystem ist eine Erweiterung für das
address@hidden, aber mit Änderungen an den folgenden Phasen, die
-Meson-spezifisch sind:
-
address@hidden @code
-
address@hidden configure
-Diese Phase führt den @code{meson}-Befehl mit den in
address@hidden:configure-flags} angegebenen Befehlszeilenoptionen aus. Die
-Befehlszeilenoption @code{--build-type} wird immer auf @code{plain} gesetzt,
-solange nichts anderes mit dem Parameter @code{#:build-type} angegeben
-wurde.
-
address@hidden build
-Diese Phase ruft @code{ninja} auf, um das Paket standardmäßig parallel zu
-erstellen. Die Vorgabeeinstellung, dass parallel erstellt wird, kann
-verändert werden durch Setzen von @code{#:parallel-build?}.
-
address@hidden check
-Diese Phase führt @code{ninja} mit dem als @code{#:test-target}
-spezifizierten Ziel für Tests auf, der Vorgabewert ist das Ziel namens
address@hidden"test"}.
-
address@hidden install
-Diese Phase führt @code{ninja install} aus und kann nicht verändert werden.
address@hidden table
-
-Dazu fügt das Erstellungssystem noch folgende neue Phasen:
-
address@hidden @code
-
address@hidden fix-runpath
-In dieser Phase wird sichergestellt, dass alle Binärdateien die von ihnen
-benötigten Bibliotheken finden können. Die benötigten Bibliotheken werden in
-den Unterverzeichnissen des Pakets, das erstellt wird, gesucht, und zum
address@hidden hinzugefügt, wann immer es nötig ist. Auch werden diejenigen
-Referenzen zu Bibliotheken aus der Erstellungsphase wieder entfernt, die bei
address@hidden hinzugefügt wurden, aber eigentlich zur Laufzeit
-nicht gebraucht werden, wie Abhängigkeiten nur für Tests.
-
address@hidden glib-or-gtk-wrap
-Diese Phase ist dieselbe, die auch im @code{glib-or-gtk-build-system} zur
-Verfügung gestellt wird, und mit Vorgabeeinstellungen wird sie nicht
-durchlaufen. Wenn sie gebraucht wird, kann sie mit dem Parameter
address@hidden:glib-or-gtk?} aktiviert werden.
-
address@hidden glib-or-gtk-compile-schemas
-Diese Phase ist dieselbe, die auch im @code{glib-or-gtk-build-system} zur
-Verfügung gestellt wird, und mit Vorgabeeinstellungen wird sie nicht
-durchlaufen. Wenn sie gebraucht wird, kann sie mit dem Parameter
address@hidden:glib-or-gtk?} aktiviert werden.
address@hidden table
address@hidden defvr
-
address@hidden {Scheme Variable} linux-module-build-system
address@hidden allows building Linux kernel modules.
-
address@hidden Erstellungsphasen
-This build system is an extension of @var{gnu-build-system}, but with the
-following phases changed:
-
address@hidden @code
-
address@hidden configure
-This phase configures the environment so that the Linux kernel's Makefile
-can be used to build the external kernel module.
-
address@hidden build
-This phase uses the Linux kernel's Makefile in order to build the external
-kernel module.
-
address@hidden install
-This phase uses the Linux kernel's Makefile in order to install the external
-kernel module.
address@hidden table
-
-It is possible and useful to specify the Linux kernel to use for building
-the module (in the "arguments" form of a package using the
-linux-module-build-system, use the key #:linux to specify it).
address@hidden defvr
-
-Letztlich gibt es für die Pakete, die bei weitem nichts so komplexes
-brauchen, ein »triviales« Erstellungssystem. Es ist in dem Sinn trivial,
-dass es praktisch keine Hilfestellungen gibt: Es fügt keine impliziten
-Eingaben hinzu und hat kein Konzept von Erstellungsphasen.
-
address@hidden {Scheme-Variable} trivial-build-system
-Diese Variable wird vom Modul @code{(guix build-system trivial)} exportiert.
-
-Diesem Erstellungssystem muss im Argument @code{#:builder} ein
-Scheme-Ausdruck übergeben werden, der die Paketausgabe(n) erstellt — wie bei
address@hidden>derivation} (siehe @ref{Ableitungen,
address@hidden>derivation}}).
address@hidden defvr
-
address@hidden Der Store
address@hidden Der Store
-
address@hidden Store
address@hidden Store-Objekte
address@hidden Store-Pfade
-
-Konzeptionell ist der @dfn{Store} der Ort, wo Ableitungen nach erfolgreicher
-Erstellung gespeichert werden — standardmäßig finden Sie ihn in
address@hidden/gnu/store}. Unterverzeichnisse im Store werden 
@dfn{Store-Objekte}
-oder manchmal auch @dfn{Store-Pfade} genannt. Mit dem Store ist eine
-Datenbank assoziiert, die Informationen enthält wie zum Beispiel, welche
-Store-Pfade jeder Store-Pfad jeweils referenziert, und eine Liste, welche
-Store-Objekte @emph{gültig} sind, also Ergebnisse erfolgreicher Erstellungen
-sind. Die Datenbank befindet sich in @address@hidden/guix/db},
-wobei @var{localstatedir} das mit @option{--localstatedir} bei der
-Ausführung von »configure« angegebene Zustandsverzeichnis ist, normalerweise
address@hidden/var}.
-
-Auf den Store wird @emph{nur} durch den Daemon im Auftrag seiner Clients
-zugegriffen (siehe @ref{Aufruf des guix-daemon}). Um den Store zu verändern,
-verbinden sich Clients über einen Unix-Socket mit dem Daemon, senden ihm
-entsprechende Anfragen und lesen dann dessen Antwort — so etwas nennt sich
-entfernter Prozeduraufruf (englisch »Remote Procedure Call« oder kurz RPC).
-
address@hidden Anmerkung
-Benutzer dürfen @emph{niemals} Dateien in @file{/gnu/store} direkt
-verändern, sonst wären diese nicht mehr konsistent und die Grundannahmen im
-funktionalen Modell von Guix, dass die Objekte unveränderlich sind, wären
-dahin (siehe @ref{Einführung}).
-
-Siehe @ref{Aufruf von guix gc, @command{guix gc --verify}} für Informationen,
-wie die Integrität des Stores überprüft und nach versehentlichen
-Veränderungen unter Umständen wiederhergestellt werden kann.
address@hidden quotation
-
-Das Modul @code{(guix store)} bietet Prozeduren an, um sich mit dem Daemon
-zu verbinden und entfernte Prozeduraufrufe durchzuführen. Diese werden im
-Folgenden beschrieben. Das vorgegebene Verhalten von @code{open-connection},
-und daher allen @command{guix}-Befehlen, ist, sich mit dem lokalen Daemon
-oder dem an der in der Umgebungsvariablen @code{GUIX_DAEMON_SOCKET}
-angegeben URL zu verbinden.
-
address@hidden {Umgebungsvariable} GUIX_DAEMON_SOCKET
-Ist diese Variable gesetzt, dann sollte ihr Wert ein Dateipfad oder eine URI
-sein, worüber man sich mit dem Daemon verbinden kann. Ist der Wert der Pfad
-zu einer Datei, bezeichnet dieser einen Unix-Socket, mit dem eine Verbindung
-hergestellt werden soll. Ist er eine URI, so werden folgende URI-Schemata
-unterstützt:
-
address@hidden @code
address@hidden file
address@hidden unix
-Für Unix-Sockets. @code{file:///var/guix/daemon-socket/socket} kann
-gleichbedeutend auch als @file{/var/guix/daemon-socket/socket} angegeben
-werden.
-
address@hidden guix
address@hidden Daemon, Fernzugriff
address@hidden Fernzugriff auf den Daemon
address@hidden Daemon, Einrichten auf Clustern
address@hidden Cluster, Einrichtung des Daemons
-Solche URIs benennen Verbindungen über TCP/IP ohne Verschlüsselung oder
-Authentifizierung des entfernten Rechners. Die URI muss den Hostnamen, also
-den Rechnernamen des entfernten Rechners, und optional eine Port-Nummer
-angeben (sonst wird als Vorgabe der Port 44146 benutzt):
-
address@hidden
-guix://master.guix.example.org:1234
address@hidden example
-
-Diese Konfiguration ist für lokale Netzwerke wie etwa in Rechen-Clustern
-geeignet, wo sich nur vertrauenswürdige Knoten mit dem Erstellungs-Daemon
-z.B.@: unter @code{master.guix.example.org} verbinden können.
-
-Die Befehlszeilenoption @code{--listen} von @command{guix-daemon} kann
-benutzt werden, damit er auf TCP-Verbindungen lauscht (siehe @ref{Aufruf des 
guix-daemon, @code{--listen}}).
-
address@hidden ssh
address@hidden SSH-Zugriff auf Erstellungs-Daemons
-Mit solchen URIs kann eine Verbindung zu einem entfernten Daemon über SSH
-hergestellt address@hidden Funktionalitäts setzt Guile-SSH voraus
-(siehe @ref{Voraussetzungen}).}. Eine typische URL sieht so aus:
-
address@hidden
-ssh://charlie@@guix.example.org:22
address@hidden example
-
-Was @command{guix copy} betrifft, richtet es sich nach den üblichen
-OpenSSH-Client-Konfigurationsdateien (siehe @ref{Aufruf von guix copy}).
address@hidden table
-
-In Zukunft könnten weitere URI-Schemata unterstützt werden.
-
address@hidden XXX: Remove this note when the protocol incurs fewer round trips
address@hidden and when (guix derivations) no longer relies on file system 
access.
address@hidden Anmerkung
-Die Fähigkeit, sich mit entfernten Erstellungs-Daemons zu verbinden, sehen
-wir als experimentell an, Stand @value{VERSION}. Bitte diskutieren Sie mit
-uns jegliche Probleme oder Vorschläge, die Sie haben könnten (siehe
address@hidden).
address@hidden quotation
address@hidden defvr
-
address@hidden {Scheme-Prozedur} open-connection address@hidden 
[#:reserve-space? #t]
-Sich mit dem Daemon über den Unix-Socket an @var{Uri} verbinden (einer
-Zeichenkette). Wenn @var{reserve-space?} wahr ist, lässt ihn das etwas
-zusätzlichen Speicher im Dateisystem reservieren, damit der Müllsammler auch
-dann noch funktioniert, wenn die Platte zu voll wird. Liefert ein
-Server-Objekt.
-
address@hidden nimmt standardmäßig den Wert von @var{%default-socket-path} an,
-was dem bei der Installation mit dem Aufruf von @command{configure}
-ausgewählten Vorgabeort entspricht, gemäß den Befehlszeilenoptionen, mit
-denen @command{configure} aufgerufen wurde.
address@hidden deffn
-
address@hidden {Scheme-Prozedur} close-connection @var{Server}
-Die Verbindung zum @var{Server} trennen.
address@hidden deffn
-
address@hidden {Scheme-Variable} current-build-output-port
-Diese Variable ist an einen SRFI-39-Parameter gebunden, der auf den
-Scheme-Port verweist, an den vom Daemon empfangene Erstellungsprotokolle und
-Fehlerprotokolle geschrieben werden sollen.
address@hidden defvr
-
-Prozeduren, die entfernte Prozeduraufrufe durchführen, nehmen immer ein
-Server-Objekt als ihr erstes Argument.
-
address@hidden {Scheme-Prozedur} valid-path? @var{Server} @var{Pfad}
address@hidden ungültige Store-Objekte
-Liefert @code{#t}, wenn der @var{Pfad} ein gültiges Store-Objekt benennt,
-und sonst @code{#f} (ein ungültiges Objekt kann auf der Platte gespeichert
-sein, tatsächlich aber ungültig sein, zum Beispiel weil es das Ergebnis
-einer abgebrochenen oder fehlgeschlagenen Erstellung ist).
-
-Ein @code{&store-protocol-error}-Fehlerzustand wird ausgelöst, wenn der
address@hidden nicht mit dem Store-Verzeichnis als Präfix beginnt
-(@file{/gnu/store}).
address@hidden deffn
-
address@hidden {Scheme-Prozedur} add-text-to-store @var{Server} @var{Name} 
@var{Text} address@hidden
-Den @var{Text} im Store in einer Datei namens @var{Name} ablegen und ihren
-Store-Pfad zurückliefern. @var{Referenzen} ist die Liste der Store-Pfade,
-die der Store-Pfad dann referenzieren soll.
address@hidden deffn
-
address@hidden {Scheme-Prozedur} build-derivations @var{Server} 
@var{Ableitungen}
-Die @var{Ableitungen} erstellen (eine Liste von @code{<derivation>}-Objekten
-oder von Pfaden zu Ableitungen) und terminieren, sobald der Worker-Prozess
-mit dem Erstellen fertig ist. Liefert @code{#t} bei erfolgreicher
-Erstellung.
address@hidden deffn
-
-Es sei erwähnt, dass im Modul @code{(guix monads)} eine Monade sowie
-monadische Versionen obiger Prozeduren angeboten werden, damit an Code, der
-auf den Store zugreift, bequemer gearbeitet werden kann (siehe @ref{Die 
Store-Monade}).
-
address@hidden FIXME
address@hidden Abschnitt ist im Moment noch unvollständig.}
-
address@hidden Ableitungen
address@hidden Ableitungen
-
address@hidden Ableitungen
-Systemnahe Erstellungsaktionen sowie die Umgebung, in der selbige
-durchzuführen sind, werden durch @dfn{Ableitungen} dargestellt. Eine
-Ableitung enthält folgende Informationen:
-
address@hidden
address@hidden
-Die Ausgaben, die die Ableitung hat. Ableitungen erzeugen mindestens eine
-Datei bzw. ein Verzeichnis im Store, können aber auch mehrere erzeugen.
-
address@hidden
address@hidden Erstellungszeitabhängigkeiten
address@hidden Abhängigkeiten zur Erstellungszeit
-Die Eingaben der Ableitung, also Abhängigkeiten zur Zeit ihrer Erstellung,
-die entweder andere Ableitungen oder einfache Dateien im Store sind (wie
-Patches, Erstellungsskripts usw.).
-
address@hidden
-Das System, wofür mit der Ableitung erstellt wird, also ihr Ziel — z.B.@:
address@hidden
-
address@hidden
-Der Dateiname eines Erstellungsskripts im Store, zusammen mit den
-Argumenten, mit denen es aufgerufen werden soll.
-
address@hidden
-Eine Liste zu definierender Umgebungsvariabler.
-
address@hidden itemize
-
address@hidden Ableitungspfad
-Ableitungen ermöglichen es den Clients des Daemons, diesem
-Erstellungsaktionen für den Store mitzuteilen. Es gibt davon zwei Arten,
-sowohl Darstellungen im Arbeitsspeicher jeweils für Client und Daemon, als
-auch Dateien im Store, deren Namen auf @code{.drv} enden — diese Dateien
-werden als @dfn{Ableitungspfade} bezeichnet. Ableitungspfade können an die
-Prozedur @code{build-derivations} übergeben werden, damit die darin
-niedergeschriebenen Erstellungsaktionen durchgeführt werden (siehe @ref{Der 
Store}).
-
address@hidden Ableitungen mit fester Ausgabe
-Operationen wie das Herunterladen von Dateien und Checkouts von unter
-Versionskontrolle stehenden Quelldateien, bei denen der Hash des Inhalts im
-Voraus bekannt ist, werden als @dfn{Ableitungen mit fester Ausgabe}
-modelliert. Anders als reguläre Ableitungen sind die Ausgaben von
-Ableitungen mit fester Ausgabe unabhängig von ihren Eingaben — z.B.@:
-liefert das Herunterladen desselben Quellcodes dasselbe Ergebnis unabhängig
-davon, mit welcher Methode und welchen Werkzeugen er heruntergeladen wurde.
-
address@hidden references
address@hidden Laufzeitabhängigkeiten
address@hidden Abhängigkeiten, zur Laufzeit
-Den Ausgaben von Ableitungen — d.h.@: Erstellungergebnissen — ist eine Liste
-von @dfn{Referenzen} zugeordnet, die auch der entfernte Prozeduraufruf
address@hidden oder der Befehl @command{guix gc --references} liefert
-(siehe @ref{Aufruf von guix gc}). Referenzen sind die Menge der
-Laufzeitabhängigkeiten von Erstellungsergebnissen. Referenzen sind eine
-Teilmenge der Eingaben von Ableitungen; die Teilmenge wird automatisch
-ermittelt, indem der Erstellungsdaemon alle Dateien unter den Ausgaben nach
-Referenzen durchsucht.
-
-Das Modul @code{(guix derivations)} stellt eine Repräsentation von
-Ableitungen als Scheme-Objekte zur Verfügung, zusammen mit Prozeduren, um
-Ableitungen zu erzeugen und zu manipulieren. Die am wenigsten abstrahierte
-Methode, eine Ableitung zu erzeugen, ist mit der Prozedur @code{derivation}:
-
address@hidden {Scheme-Prozedur} derivation @var{Store} @var{Name} 
@var{Ersteller} @
-  @var{Argumente} [#:outputs '("out")] [#:hash #f] [#:hash-algo #f] @
-[#:recursive? #f] [#:inputs '()] [#:env-vars '()] @ [#:system
-(%current-system)] [#:references-graphs #f] @ [#:allowed-references #f]
-[#:disallowed-references #f] @ [#:leaked-env-vars #f] [#:local-build? #f] @
-[#:substitutable? #t] [#:properties '()] Eine Ableitungen mit den
address@hidden erstellen und das resultierende @code{<derivation>}-Objekt
-liefern.
-
-Wurden @var{hash} und @var{hash-algo} angegeben, wird eine @dfn{Ableitung
-mit fester Ausgabe} erzeugt — d.h.@: eine, deren Ausgabe schon im Voraus
-bekannt ist, wie z.B.@: beim Herunterladen einer Datei. Wenn des Weiteren
-auch @var{recursive?} wahr ist, darf die Ableitung mit fester Ausgabe eine
-ausführbare Datei oder ein Verzeichnis sein und @var{hash} muss die
-Prüfsumme eines Archivs mit dieser Ausgabe sein.
-
-Ist @var{references-graphs} wahr, dann muss es eine Liste von Paaren aus je
-einem Dateinamen und einem Store-Pfad sein. In diesem Fall wird der
-Referenzengraph jedes Store-Pfads in einer Datei mit dem angegebenen Namen
-in der Erstellungsumgebung zugänglich gemacht, in einem einfachen
-Text-Format.
-
-Ist @var{allowed-references} ein wahr, muss es eine Liste von Store-Objekten
-oder Ausgaben sein, die die Ausgabe der Ableitung referenzieren darf. Ebenso
-muss @var{disallowed-references}, wenn es auf wahr gesetzt ist, eine Liste
-von Dingen bezeichnen, die die Ausgaben @emph{nicht} referenzieren dürfen.
-
-Ist @var{leaked-env-vars} wahr, muss es eine Liste von Zeichenketten sein,
-die Umgebungsvariable benennen, die aus der Umgebung des Daemons in die
-Erstellungsumgebung überlaufen — ein »Leck«, englisch »leak«. Dies kann nur
-in Ableitungen mit fester Ausgabe benutzt werden, also wenn @var{hash} wahr
-ist. So ein Leck kann zum Beispiel benutzt werden, um Variable wie
address@hidden an Ableitungen zu übergeben, die darüber Dateien
-herunterladen.
-
-Ist @var{local-build?} wahr, wird die Ableitung als schlechter Kandidat für
-das Auslagern deklariert, der besser lokal erstellt werden sollte (siehe
address@hidden des Daemons einrichten}). Dies betrifft kleine Ableitungen, wo 
das
-Übertragen der Daten aufwendiger als ihre Erstellung ist.
-
-Ist @var{substitutable?} falsch, wird deklariert, dass für die Ausgabe der
-Ableitung keine Substitute benutzt werden sollen (siehe
address@hidden). Das ist nützlich, wenn Pakete erstellt werden, die
-Details über den Prozessorbefehlssatz des Wirtssystems auslesen.
-
address@hidden muss eine assoziative Liste enthalten, die »Eigenschaften«
-der Ableitungen beschreibt. Sie wird genau so, wie sie ist, in der Ableitung
-gespeichert.
address@hidden deffn
-
address@hidden
-Hier ist ein Beispiel mit einem Shell-Skript, das als Ersteller benutzt
-wird. Es wird angenommen, dass @var{Store} eine offene Verbindung zum Daemon
-ist und @var{bash} auf eine ausführbare Bash im Store verweist:
-
address@hidden
-(use-modules (guix utils)
-             (guix store)
-             (guix derivations))
-
-(let ((builder   ; das Ersteller-Bash-Skript in den Store einfügen
-        (add-text-to-store store "my-builder.sh"
-                           "echo Hallo Welt > $out\n" '())))
-  (derivation store "foo"
-              bash `("-e" ,builder)
-              #:inputs `((,bash) (,builder))
-              #:env-vars '(("HOME" . "/homeless"))))
address@hidden #<derivation /gnu/store/@dots{}-foo.drv => 
/gnu/store/@dots{}-foo>
address@hidden lisp
-
-Wie man sehen kann, ist es umständlich, diese grundlegende Methode direkt zu
-benutzen. Natürlich ist es besser, Erstellungsskripts in Scheme zu
-schreiben! Am besten schreibt man den Erstellungscode als »G-Ausdruck« und
-übergibt ihn an @code{gexp->derivation}. Mehr Informationen finden Sie im
-Abschnitt @ref{G-Ausdrücke}.
-
-Doch es gab einmal eine Zeit, zu der @code{gexp->derivation} noch nicht
-existiert hatte und wo das Zusammenstellen von Ableitungen mit
-Scheme-Erstellungscode noch mit @code{build-expression->derivation}
-bewerkstelligt wurde, was im Folgenden beschrieben wird. Diese Prozedur gilt
-als veraltet und man sollte nunmehr die viel schönere Prozedur
address@hidden>derivation} benutzen.
-
address@hidden {Scheme-Prozedur} build-expression->derivation @var{Store} @
-       @var{Name} @var{Ausdruck} @ [#:system (%current-system)] [#:inputs '()] 
@
-[#:outputs '("out")] [#:hash #f] [#:hash-algo #f] @ [#:recursive? #f]
-[#:env-vars '()] [#:modules '()] @ [#:references-graphs #f]
-[#:allowed-references #f] @ [#:disallowed-references #f] @ [#:local-build?
-#f] [#:substitutable? #t] [#:guile-for-build #f] Liefert eine Ableitung, die
-den Scheme-Ausdruck @var{Ausdruck} als Ersteller einer Ableitung namens
address@hidden ausführt. @var{inputs} muss die Liste der Eingaben enthalten,
-jeweils als Tupel @code{(Name Ableitungspfad Unterableitung)}; wird keine
address@hidden angegeben, wird @code{"out"} angenommen. @var{Module}
-ist eine Liste der Namen von Guile-Modulen im momentanen Suchpfad, die in
-den Store kopiert, kompiliert und zur Verfügung gestellt werden, wenn der
address@hidden ausgeführt wird — z.B.@: @code{((guix build utils) (guix
-build gnu-build-system))}.
-
-Der @var{Ausdruck} wird in einer Umgebung ausgewertet, in der
address@hidden an eine Liste von Ausgabe-/Pfad-Paaren gebunden wurde und in
-der @code{%build-inputs} an eine Liste von Zeichenkette-/Ausgabepfad-Paaren
-gebunden wurde, die aus den @var{inputs}-Eingaben konstruiert worden
-ist. Optional kann in @var{env-vars} eine Liste von Paaren aus Zeichenketten
-stehen, die Name und Wert von für den Ersteller sichtbaren
-Umgebungsvariablen angeben. Der Ersteller terminiert, indem er @code{exit}
-mit dem Ergebnis des @var{Ausdruck}s aufruft; wenn also der @var{Ausdruck}
-den Wert @code{#f} liefert, wird angenommen, dass die Erstellung
-fehlgeschlagen ist.
-
address@hidden wird mit einer Ableitung @var{guile-for-build} erstellt. Wird
-kein @var{guile-for-build} angegeben oder steht es auf @code{#f}, wird
-stattdessen der Wert der Fluiden @code{%guile-for-build} benutzt.
-
-Siehe die Erklärungen zur Prozedur @code{derivation} für die Bedeutung von
address@hidden, @var{allowed-references},
address@hidden, @var{local-build?} und @var{substitutable?}.
address@hidden deffn
-
address@hidden
-Hier ist ein Beispiel einer Ableitung mit nur einer Ausgabe, die ein
-Verzeichnis erzeugt, in dem eine einzelne Datei enthalten ist:
-
address@hidden
-(let ((builder '(let ((out (assoc-ref %outputs "out")))
-                  (mkdir out)    ; das Verzeichnis
-                                 ; /gnu/store/@dots{}-goo erstellen
-                  (call-with-output-file (string-append out "/test")
-                    (lambda (p)
-                      (display '(Hallo Guix) p))))))
-  (build-expression->derivation store "goo" builder))
-
address@hidden #<derivation /gnu/store/@dots{}-goo.drv => @dots{}>
address@hidden lisp
-
-
address@hidden Die Store-Monade
address@hidden Die Store-Monade
-
address@hidden Monade
-
-Die auf dem Store arbeitenden Prozeduren, die in den vorigen Abschnitten
-beschrieben wurden, nehmen alle eine offene Verbindung zum
-Erstellungs-Daemon als ihr erstes Argument entgegen. Obwohl das ihnen zu
-Grunde liegende Modell funktional ist, weisen sie doch alle Nebenwirkungen
-auf oder hängen vom momentanen Zustand des Stores ab.
-
-Ersteres ist umständlich, weil die Verbindung zum Erstellungs-Daemon
-zwischen all diesen Funktionen durchgereicht werden muss, so dass eine
-Komposition mit Funktionen ohne diesen Parameter unmöglich wird. Letzteres
-kann problematisch sein, weil Operationen auf dem Store Nebenwirkungen
-und/oder Abhängigkeiten von externem Zustand haben und ihre
-Ausführungsreihenfolge deswegen eine Rolle spielt.
-
address@hidden monadische Werte
address@hidden monadische Funktionen
-Hier kommt das Modul @code{(guix monads)} ins Spiel. Im Rahmen dieses Moduls
-können @dfn{Monaden} benutzt werden und dazu gehört insbesondere eine für
-unsere Zwecke sehr nützliche Monade, die @dfn{Store-Monade}. Monaden sind
-ein Konstrukt, mit dem zwei Dinge möglich sind: eine Assoziation von Werten
-mit einem »Kontext« (in unserem Fall ist das die Verbindung zum Store) und
-das Festlegen einer Reihenfolge für Berechnungen (hiermit sind auch Zugriffe
-auf den Store gemeint). Werte in einer Monade — solche, die mit weiterem
-Kontext assoziiert sind — werden @dfn{monadische Werte} genannt; Prozeduren,
-die solche Werte liefern, heißen @dfn{monadische Prozeduren}.
-
-Betrachten Sie folgende »normale« Prozedur:
-
address@hidden
-(define (sh-symlink store)
-  ;; Eine Ableitung liefern, die mit der ausführbaren Datei »bash«
-  ;; symbolisch verknüpft.
-  (let* ((drv (package-derivation store bash))
-         (out (derivation->output-path drv))
-         (sh  (string-append out "/bin/bash")))
-    (build-expression->derivation store "sh"
-                                  `(symlink ,sh %output))))
address@hidden example
-
-Unter Verwendung von @code{(guix monads)} und @code{(guix gexp)} lässt sie
-sich als monadische Funktion aufschreiben:
-
address@hidden
-(define (sh-symlink)
-  ;; Ebenso, liefert aber einen monadischen Wert.
-  (mlet %store-monad ((drv (package->derivation bash)))
-    (gexp->derivation "sh"
-                      #~(symlink (string-append #$drv "/bin/bash")
-                                 #$output))))
address@hidden example
-
-An der zweiten Version lassen sich mehrere Dinge beobachten: Der Parameter
address@hidden ist jetzt implizit geworden und wurde in die Aufrufe der
-monadischen Prozeduren @code{package->derivation} und
address@hidden>derivation} »eingefädelt« und der von @code{package->derivation}
-gelieferte monadische Wert wurde mit @code{mlet} statt einem einfachen
address@hidden @dfn{gebunden}.
-
-Wie sich herausstellt, muss man den Aufruf von @code{package->derivation}
-nicht einmal aufschreiben, weil er implizit geschieht, wie wir später sehen
-werden (siehe @ref{G-Ausdrücke}):
-
address@hidden
-(define (sh-symlink)
-  (gexp->derivation "sh"
-                    #~(symlink (string-append #$bash "/bin/bash")
-                               #$output)))
address@hidden example
-
address@hidden See
address@hidden 
<https://syntaxexclamation.wordpress.com/2014/06/26/escaping-continuations/>
address@hidden for the funny quote.
-Die monadische @code{sh-symlink} einfach aufzurufen, bewirkt nichts. Wie
-jemand einst sagte: »Mit einer Monade geht man um, wie mit Gefangenen, gegen
-die man keine Beweise hat: Man muss sie laufen lassen.« Um also aus der
-Monade auszubrechen und die gewünschte Wirkung zu erzielen, muss man
address@hidden benutzen:
-
address@hidden
-(run-with-store (open-connection) (sh-symlink))
address@hidden /gnu/store/...-sh-symlink
address@hidden example
-
-Erwähnenswert ist, dass das Modul @code{(guix monad-repl)} die REPL von
-Guile um neue »Meta-Befehle« erweitert, mit denen es leichter ist, mit
-monadischen Prozeduren umzugehen: @code{run-in-store} und
address@hidden Mit Ersterer wird ein einzelner monadischer Wert
-durch den Store »laufen gelassen«:
-
address@hidden
-scheme@@(guile-user)> ,run-in-store (package->derivation hello)
-$1 = #<derivation /gnu/store/@dots{}-hello-2.9.drv => @dots{}>
address@hidden example
-
-Mit Letzterer wird rekursiv eine weitere REPL betreten, in der alle
-Rückgabewerte automatisch durch den Store laufen gelassen werden:
-
address@hidden
-scheme@@(guile-user)> ,enter-store-monad
-store-monad@@(guile-user) [1]> (package->derivation hello)
-$2 = #<derivation /gnu/store/@dots{}-hello-2.9.drv => @dots{}>
-store-monad@@(guile-user) [1]> (text-file "foo" "Hallo!")
-$3 = "/gnu/store/@dots{}-foo"
-store-monad@@(guile-user) [1]> ,q
-scheme@@(guile-user)>
address@hidden example
-
address@hidden
-Beachten Sie, dass in einer @code{store-monad}-REPL keine nicht-monadischen
-Werte zurückgeliefert werden können.
-
-Die wichtigsten syntaktischen Formen, um mit Monaden im Allgemeinen
-umzugehen, werden im Modul @code{(guix monads)} bereitgestellt und sind im
-Folgenden beschrieben.
-
address@hidden {Scheme-Syntax} with-monad @var{Monade} @var{Rumpf} ...
-Alle @code{>>=}- oder @code{return}-Formen im @var{Rumpf} in der
address@hidden auswerten.
address@hidden deffn
-
address@hidden {Scheme-Syntax} return @var{Wert}
-Einen monadischen Wert liefern, der den übergebenen @var{Wert} kapselt.
address@hidden deffn
-
address@hidden {Scheme-Syntax} >>= @var{mWert} @var{mProz} ...
-Den monadischen Wert @var{mWert} @dfn{binden}, wobei sein »Inhalt« an die
-monadischen Prozeduren @address@hidden übergeben address@hidden
-Operation wird gemeinhin »bind« genannt, aber mit diesem Begriff wird in
-Guile eine völlig andere Prozedur bezeichnet, die nichts damit zu tun
-hat. Also benutzen wir dieses etwas kryptische Symbol als Erbe der
-Haskell-Programmiersprache.}. Es kann eine einzelne @var{mProz} oder mehrere
-davon geben, wie in diesem Beispiel:
-
address@hidden
-(run-with-state
-    (with-monad %state-monad
-      (>>= (return 1)
-           (lambda (x) (return (+ 1 x)))
-           (lambda (x) (return (* 2 x)))))
-  'irgendein-Zustand)
-
address@hidden 4
address@hidden irgendein-Zustand
address@hidden example
address@hidden deffn
-
address@hidden {Scheme-Syntax} mlet @var{Monade} ((@var{Variable} @var{mWert}) 
...) @
-       @var{Rumpf} ...
address@hidden {Scheme-Syntax} mlet* @var{Monade} ((@var{Variable} @var{mWert}) 
...) @
-       @var{Rumpf} ...  Die @var{Variable}n an die monadischen Werte 
@var{mWert} im
address@hidden binden, der eine Folge von Ausdrücken ist. Wie beim
-bind-Operator kann man es sich vorstellen als »Auspacken« des rohen,
-nicht-monadischen Werts, der im @var{mWert} steckt, wobei anschließend
-dieser rohe, nicht-monadische Wert im Sichtbarkeitsbereich des @var{Rumpf}s
-von der @var{Variable}n bezeichnet wird. Die Form (@var{Variable} ->
address@hidden) bindet die @var{Variable} an den »normalen« @var{Wert}, wie es
address@hidden tun würde. Die Bindungsoperation geschieht in der Reihenfolge von
-links nach rechts. Der letzte Ausdruck des @var{Rumpfs} muss ein monadischer
-Ausdruck sein und dessen Ergebnis wird das Ergebnis von @code{mlet} oder
address@hidden werden, wenn es durch die @var{Monad} laufen gelassen wurde.
-
address@hidden verhält sich gegenüber @code{mlet} wie @code{let*} gegenüber
address@hidden (siehe @ref{Local Bindings,,, guile, GNU Guile Reference
-Manual}).
address@hidden deffn
-
address@hidden {Scheme-System} mbegin @var{Monade} @var{mAusdruck} ...
-Der Reihe nach den @var{mAusdruck} und die nachfolgenden monadischen
-Ausdrücke binden und als Ergebnis das des letzten Ausdrucks liefern. Jeder
-Ausdruck in der Abfolge muss ein monadischer Ausdruck sein.
-
-Dies verhält sich ähnlich wie @code{mlet}, außer dass die Rückgabewerte der
-monadischen Prozeduren ignoriert werden. In diesem Sinn verhält es sich
-analog zu @code{begin}, nur auf monadischen Ausdrücken.
address@hidden deffn
-
address@hidden {Scheme-System} mwhen @var{Bedingung} @var{mAusdr0} 
@var{mAusdr*} ...
-Wenn die @var{Bedingung} wahr ist, wird die Folge monadischer Ausdrücke
address@hidden@var{mAusdr*} wie bei @code{mbegin} ausgewertet. Wenn die
address@hidden falsch ist, wird @code{*unspecified*} in der momentanen
-Monade zurückgeliefert. Jeder Ausdruck in der Folge muss ein monadischer
-Ausdruck sein.
address@hidden deffn
-
address@hidden {Scheme-System} munless @var{Bedingung} @var{mAusdr0} 
@var{mAusdr*} ...
-Wenn die @var{Bedingung} falsch ist, wird die Folge monadischer Ausdrücke
address@hidden@var{mAusdr*} wie bei @code{mbegin} ausgewertet. Wenn die
address@hidden wahr ist, wird @code{*unspecified*} in der momentanen Monade
-zurückgeliefert. Jeder Ausdruck in der Folge muss ein monadischer Ausdruck
-sein.
address@hidden deffn
-
address@hidden Zustandsmonade
-Das Modul @code{(guix monads)} macht die @dfn{Zustandsmonade} (englisch
-»state monad«) verfügbar, mit der ein zusätzlicher Wert — der Zustand —
-durch die monadischen Prozeduraufrufe @emph{gefädelt} werden kann.
-
address@hidden {Scheme-Variable} %state-monad
-Die Zustandsmonade. Prozeduren in der Zustandsmonade können auf den
-gefädelten Zustand zugreifen und ihn verändern.
-
-Betrachten Sie das folgende Beispiel. Die Prozedur @code{Quadrat} liefert
-einen Wert in der Zustandsmonade zurück. Sie liefert das Quadrat ihres
-Arguments, aber sie inkrementiert auch den momentanen Zustandswert:
-
address@hidden
-(define (Quadrat x)
-  (mlet %state-monad ((Anzahl (current-state)))
-    (mbegin %state-monad
-      (set-current-state (+ 1 Anzahl))
-      (return (* x x)))))
-
-(run-with-state (sequence %state-monad (map Quadrat (iota 3))) 0)
address@hidden (0 1 4)
address@hidden 3
address@hidden example
-
-Wird das »durch« die Zustandsmonade @var{%state-monad} laufen gelassen,
-erhalten wir jenen zusätzlichen Zustandswert, der der Anzahl der Aufrufe von
address@hidden entspricht.
address@hidden defvr
-
address@hidden {Monadische Prozedur} current-state
-Liefert den momentanen Zustand als einen monadischen Wert.
address@hidden deffn
-
address@hidden {Monadische Prozedur} set-current-state @var{Wert}
-Setzt den momentanen Zustand auf @var{Wert} und liefert den vorherigen
-Zustand als einen monadischen Wert.
address@hidden deffn
-
address@hidden {Monadische Prozedur} state-push @var{Wert}
-Hängt den @var{Wert} vorne an den momentanen Zustand an, der eine Liste sein
-muss. Liefert den vorherigen Zustand als monadischen Wert.
address@hidden deffn
-
address@hidden {Monadische Prozedur} state-pop
-Entfernt einen Wert vorne vom momentanen Zustand und liefert ihn als
-monadischen Wert zurück. Dabei wird angenommen, dass es sich beim Zustand um
-eine Liste handelt.
address@hidden deffn
-
address@hidden {Scheme-Prozedur} run-with-state @var{mWert} address@hidden
-Den monadischen Wert @var{mWert} mit @var{Zustand} als initialem Zustand
-laufen lassen. Dies liefert zwei Werte: den Ergebniswert und den
-Ergebniszustand.
address@hidden deffn
-
-Die zentrale Schnittstelle zur Store-Monade, wie sie vom Modul @code{(guix
-store)} angeboten wird, ist die Folgende:
-
address@hidden {Scheme-Variable} %store-monad
-Die Store-Monade — ein anderer Name für @var{%state-monad}.
-
-Werte in der Store-Monade kapseln Zugriffe auf den Store. Sobald seine
-Wirkung gebraucht wird, muss ein Wert der Store-Monade »ausgewertet« werden,
-indem er an die Prozedur @code{run-with-store} übergeben wird (siehe unten).
address@hidden defvr
-
address@hidden {Scheme-Prozedur} run-with-store @var{Store} @var{mWert} 
[#:guile-for-build] [#:system (%current-system)]
-Den @var{mWert}, einen monadischen Wert in der Store-Monade, in der offenen
-Verbindung @var{Store} laufen lassen.
address@hidden deffn
-
address@hidden {Monadische Prozedur} text-file @var{Name} @var{Text} 
address@hidden
-Als monadischen Wert den absoluten Dateinamen im Store für eine Datei
-liefern, deren Inhalt der der Zeichenkette @var{Text} ist. @var{Referenzen}
-ist dabei eine Liste von Store-Objekten, die die Ergebnis-Textdatei
-referenzieren wird; der Vorgabewert ist die leere Liste.
address@hidden deffn
-
address@hidden {Monadische Prozedur} binary-file @var{Name} @var{Daten} 
address@hidden
-Den absoluten Dateinamen im Store als monadischen Wert für eine Datei
-liefern, deren Inhalt der des Byte-Vektors @var{Daten} ist. @var{Referenzen}
-ist dabei eine Liste von Store-Objekten, die die Ergebnis-Binärdatei
-referenzieren wird; der Vorgabewert ist die leere Liste.
address@hidden deffn
-
address@hidden {Monadische Prozedur} interned-file @var{Datei} address@hidden @
-         [#:recursive? #t] [#:select? (const #t)] Liefert den Namen der 
@var{Datei},
-nachdem sie in den Store interniert wurde. Dabei wird der @var{Name} als ihr
-Store-Name verwendet, oder, wenn kein @var{Name} angegeben wurde, der
-Basisname der @var{Datei}.
-
-Ist @var{recursive?} wahr, werden in der @var{Datei} enthaltene Dateien
-rekursiv hinzugefügt; ist die @var{Datei} eine flache Datei und
address@hidden ist wahr, wird ihr Inhalt in den Store eingelagert und ihre
-Berechtigungs-Bits übernommen.
-
-Steht @var{recursive?} auf wahr, wird @code{(@var{select?} @var{Datei}
address@hidden)} für jeden Verzeichniseintrag aufgerufen, wobei @var{Datei} der
-absolute Dateiname und @var{Stat} das Ergebnis von @code{lstat} ist, außer
-auf den Einträgen, wo @var{select?} keinen wahren Wert liefert.
-
-Folgendes Beispiel fügt eine Datei unter zwei verschiedenen Namen in den
-Store ein:
-
address@hidden
-(run-with-store (open-connection)
-  (mlet %store-monad ((a (interned-file "README"))
-                      (b (interned-file "README" "LEGU-MIN")))
-    (return (list a b))))
-
address@hidden ("/gnu/store/address@hidden" "/gnu/store/address@hidden")
address@hidden example
-
address@hidden deffn
-
-Das Modul @code{(guix packages)} exportiert die folgenden paketbezogenen
-monadischen Prozeduren:
-
address@hidden {Monadische Prozedur} package-file @var{Paket} address@hidden @
-       [#:system (%current-system)] [#:target #f] @ [#:output "out"] Liefert 
als
-monadischen Wert den absoluten Dateinamen der @var{Datei} innerhalb des
-Ausgabeverzeichnisses @var{output} des @var{Paket}s. Wird keine @var{Datei}
-angegeben, wird der Name des Ausgabeverzeichnisses @var{output} für das
address@hidden zurückgeliefert. Ist @var{target} wahr, wird sein Wert als das
-Zielsystem bezeichnendes Tripel zum Cross-Kompilieren benutzt.
address@hidden deffn
-
address@hidden {Monadische Prozedur} package->derivation @var{Paket} 
address@hidden
address@hidden {Monadische Prozedur} package->cross-derivation @var{Paket} @
-          @var{Ziel} address@hidden Monadische Version von 
@code{package-derivation}
-und @code{package-cross-derivation} (siehe @ref{Pakete definieren}).
address@hidden deffn
-
-
address@hidden G-Ausdrücke
address@hidden G-Ausdrücke
-
address@hidden G-Ausdruck
address@hidden Erstellungscode maskieren
-Es gibt also »Ableitungen«, die eine Abfolge von Erstellungsaktionen
-repräsentieren, die durchgeführt werden müssen, um ein Objekt im Store zu
-erzeugen (siehe @ref{Ableitungen}). Diese Erstellungsaktionen werden
-durchgeführt, nachdem der Daemon gebeten wurde, die Ableitungen tatsächlich
-zu erstellen; dann führt der Daemon sie in einer isolierten Umgebung (einem
-sogenannten Container) aus (siehe @ref{Aufruf des guix-daemon}).
-
address@hidden Schichten von Code
-Wenig überraschend ist, dass wir diese Erstellungsaktionen gerne in Scheme
-schreiben würden. Wenn wir das tun, bekommen wir zwei verschiedene
address@hidden von address@hidden Begriff @dfn{Schicht}, englisch
-Stratum, wurde in diesem Kontext von Manuel Serrano et al.@: in ihrer Arbeit
-an Hop geprägt. Oleg Kiselyov, der aufschlussreiche
address@hidden://okmij.org/ftp/meta-programming/#meta-scheme, Essays und Code zu
-diesem Thema} geschrieben hat, nennt diese Art der Code-Generierung
address@hidden, deutsch etwa Inszenierung bzw.@: Aufführung.}: den
-»wirtsseitigen Code« (»host code«) — also Code, der Pakete definiert, mit
-dem Daemon kommuniziert etc.@: — und den »erstellungsseitigen Code« (»build
-code«) — also Code, der die Erstellungsaktionen auch wirklich umsetzt, indem
-Dateien erstellt werden, @command{make} aufgerufen wird etc.
-
-Um eine Ableitung und ihre Erstellungsaktionen zu beschreiben, muss man
-normalerweise erstellungsseitigen Code im wirtsseitigen Code einbetten. Das
-bedeutet, man behandelt den erstellungsseitigen Code als Daten, was wegen
-der Homoikonizität von Scheme — dass Code genauso als Daten repräsentiert
-werden kann — sehr praktisch ist. Doch brauchen wir hier mehr als nur den
-normalen Quasimaskierungsmechanismus mit @code{quasiquote} in Scheme, wenn
-wir Erstellungsausdrücke konstruieren möchten.
-
-Das Modul @code{(guix gexp)} implementiert @dfn{G-Ausdrücke}, eine Form von
-S-Ausdrücken, die zu Erstellungsausdrücken angepasst wurden. G-Ausdrücke
-(englisch »G-expressions«, kurz @dfn{Gexps}) setzen sich grundlegend aus
-drei syntaktischen Formen zusammen: @code{gexp}, @code{ungexp} und
address@hidden (alternativ einfach: @code{#~}, @code{#$} und
address@hidden@@}), die jeweils mit @code{quasiquote}, @code{unquote} und
address@hidden vergleichbar sind (siehe @ref{Expression Syntax,
address@hidden,, guile, GNU Guile Reference Manual}). Es gibt aber auch
-erhebliche Unterschiede:
-
address@hidden
address@hidden
-G-Ausdrücke sind dafür gedacht, in eine Datei geschrieben zu werden, wo sie
-von anderen Prozessen ausgeführt oder manipuliert werden können.
-
address@hidden
-Wenn ein abstraktes Objekt wie ein Paket oder eine Ableitung innerhalb eines
-G-Ausdrücks demaskiert wird, ist das Ergebnis davon dasselbe, wie wenn
-dessen Ausgabedateiname genannt worden wäre.
-
address@hidden
-G-Ausdrücke tragen Informationen über die Pakete oder Ableitungen mit sich,
-auf die sie sich beziehen, und diese Abhängigkeiten werden automatisch zu
-den sie benutzenden Erstellungsprozessen als Eingaben hinzugefügt.
address@hidden itemize
-
address@hidden Herunterbrechen, von abstrakten Objekten in G-Ausdrücken
-Dieser Mechanismus ist nicht auf Pakete und Ableitung beschränkt: Es können
address@hidden definiert werden, die weitere abstrakte, hochsprachliche
-Objekte auf Ableitungen oder Dateien im Store »herunterbrechen«, womit diese
-Objekte dann auch in G-Ausdrücken eingefügt werden können. Zum Beispiel sind
-»dateiartige Objekte« ein nützlicher Typ solcher abstrakter Objekte. Mit
-ihnen können Dateien leicht in den Store eingefügt und von Ableitungen und
-anderem referenziert werden (siehe unten @code{local-file} und
address@hidden).
-
-Zur Veranschaulichung dieser Idee soll uns dieses Beispiel eines G-Ausdrucks
-dienen:
-
address@hidden
-(define build-exp
-  #~(begin
-      (mkdir #$output)
-      (chdir #$output)
-      (symlink (string-append #$coreutils "/bin/ls")
-               "list-files")))
address@hidden example
-
-Indem wir diesen G-Ausdruck an @code{gexp->derivation} übergeben, bekommen
-wir eine Ableitung, die ein Verzeichnis mit genau einer symbolischen
-Verknüpfung auf @file{/gnu/store/@dots{}-coreutils-8.22/bin/ls} erstellt:
-
address@hidden
-(gexp->derivation "das-ding" build-exp)
address@hidden example
-
-Wie man es erwarten würde, wird die Zeichenkette
address@hidden"/gnu/store/@dots{}-coreutils-8.22"} anstelle der Referenzen auf 
das
-Paket @var{coreutils} im eigentlichen Erstellungscode eingefügt und
address@hidden automatisch zu einer Eingabe der Ableitung gemacht. Genauso
-wird auch @code{#$output} (was äquivalent zur Schreibweise @code{(ungexp
-output)} ist) ersetzt durch eine Zeichenkette mit dem Namen der Ausgabe der
-Ableitung.
-
address@hidden Cross-Kompilieren
-Im Kontext der Cross-Kompilierung bietet es sich an, zwischen Referenzen auf
-die @emph{native} Erstellung eines Pakets — also der, die auf dem
-Wirtssystem ausgeführt werden kann — und Referenzen auf Cross-Erstellungen
-eines Pakets zu unterscheiden. Hierfür spielt @code{#+} dieselbe Rolle wie
address@hidden, steht aber für eine Referenz auf eine native Paketerstellung.
-
address@hidden
-(gexp->derivation "vi"
-   #~(begin
-       (mkdir #$output)
-       (system* (string-append #+coreutils "/bin/ln")
-                "-s"
-                (string-append #$emacs "/bin/emacs")
-                (string-append #$output "/bin/vi")))
-   #:target "mips64el-linux-gnu")
address@hidden example
-
address@hidden
-Im obigen Beispiel wird die native Erstellung der @var{coreutils} benutzt,
-damit @command{ln} tatsächlich auf dem Wirtssystem ausgeführt werden kann,
-aber danach die cross-kompilierte Erstellung von @var{emacs} referenziert.
-
address@hidden importierte Module, in G-Ausdrücken
address@hidden with-imported-modules
-Eine weitere Funktionalität von G-Ausdrücken stellen @dfn{importierte
-Module} dar. Manchmal will man bestimmte Guile-Module von der »wirtsseitigen
-Umgebung« im G-Ausdruck benutzen können, deswegen sollten diese Module in
-die »erstellungsseitige Umgebung« importiert werden. Die
address@hidden macht das möglich:
-
address@hidden
-(let ((build (with-imported-modules '((guix build utils))
-               #~(begin
-                   (use-modules (guix build utils))
-                   (mkdir-p (string-append #$output "/bin"))))))
-  (gexp->derivation "leeres-Verzeichnis"
-                    #~(begin
-                        #$build
-                        (display "Erfolg!\n")
-                        #t)))
address@hidden example
-
address@hidden
-In diesem Beispiel wird das Modul @code{(guix build utils)} automatisch in
-die isolierte Erstellungsumgebung unseres G-Ausdrucks geholt, so dass
address@hidden(use-modules (guix build utils))} wie erwartet funktioniert.
-
address@hidden Modulabschluss
address@hidden source-module-closure
-Normalerweise möchten Sie, dass der @emph{Abschluss} eines Moduls importiert
-wird — also das Modul und alle Module, von denen es abhängt — statt nur das
-Modul selbst. Ansonsten scheitern Versuche, das Modul zu benutzen, weil
-seine Modulabhängigkeiten fehlen. Die Prozedur @code{source-module-closure}
-berechnet den Abschluss eines Moduls, indem es den Kopf seiner Quelldatei
-analysiert, deswegen schafft die Prozedur hier Abhilfe:
-
address@hidden
-(use-modules (guix modules))   ;»source-module-closure« verfügbar machen
-
-(with-imported-modules (source-module-closure
-                         '((guix build utils)
-                           (gnu build vm)))
-  (gexp->derivation "etwas-mit-vms"
-                    #~(begin
-                        (use-modules (guix build utils)
-                                     (gnu build vm))
-                        @dots{})))
address@hidden example
-
address@hidden Erweiterungen, für G-Ausdrücke
address@hidden with-extensions
-Auf die gleiche Art können Sie auch vorgehen, wenn Sie nicht bloß reine
-Scheme-Module importieren möchten, sondern auch »Erweiterungen« wie
-Guile-Anbindungen von C-Bibliotheken oder andere »vollumfängliche«
-Pakete. Sagen wir, Sie bräuchten das Paket @code{guile-json} auf der
-Erstellungsseite, dann könnten Sie es hiermit bekommen:
-
address@hidden
-(use-modules (gnu packages guile))  ;für »guile-json«
-
-(with-extensions (list guile-json)
-  (gexp->derivation "etwas-mit-json"
-                    #~(begin
-                        (use-modules (json))
-                        @dots{})))
address@hidden example
-
-Die syntaktische Form, in der G-Ausdrücke konstruiert werden, ist im
-Folgenden zusammengefasst.
-
address@hidden {Scheme-Syntax} address@hidden
address@hidden {Scheme-Syntax} (gexp @var{Ausdruck})
-Liefert einen G-Ausdruck, der den @var{Ausdruck} enthält. Der @var{Ausdruck}
-kann eine oder mehrere der folgenden Formen enthalten:
-
address@hidden @code
address@hidden address@hidden
address@hidden (ungexp @var{Objekt})
-Eine Referenz auf das @var{Objekt} einführen. Das @var{Objekt} kann einen
-der unterstützten Typen haben, zum Beispiel ein Paket oder eine Ableitung,
-so dass die @code{ungexp}-Form durch deren Ausgabedateiname ersetzt wird —
-z.B.@: @code{"/gnu/store/@dots{}-coreutils-8.22}.
-
-Wenn das @var{Objekt} eine Liste ist, wird diese durchlaufen und alle
-unterstützten Objekte darin auf diese Weise ersetzt.
-
-Wenn das @var{Objekt} ein anderer G-Ausdruck ist, wird sein Inhalt eingefügt
-und seine Abhängigkeiten zu denen des äußeren G-Ausdrucks hinzugefügt.
-
-Wenn das @var{Objekt} eine andere Art von Objekt ist, wird es so wie es ist
-eingefügt.
-
address@hidden address@hidden:@var{Ausgabe}
address@hidden (ungexp @var{Objekt} @var{Ausgabe})
-Dies verhält sich wie die Form oben, bezieht sich aber ausdrücklich auf die
-angegebene @var{Ausgabe} des @var{Objekt}s — dies ist nützlich, wenn das
address@hidden mehrere Ausgaben generiert (siehe @ref{Pakete mit mehreren 
Ausgaben.}).
-
address@hidden address@hidden
address@hidden address@hidden:@var{Ausgabe}
address@hidden (ungexp-native @var{Objekt})
address@hidden (ungexp-native @var{Objekt} @var{Ausgabe})
-Das Gleiche wie @code{ungexp}, jedoch wird im Kontext einer
-Cross-Kompilierung eine Referenz auf die @emph{native} Erstellung des
address@hidden eingefügt.
-
address@hidden #$output[:@var{Ausgabe}]
address@hidden (ungexp output address@hidden)
-Fügt eine Referenz auf die angegebene @var{Ausgabe} dieser Ableitung ein,
-oder auf die Hauptausgabe, wenn keine @var{Ausgabe} angegeben wurde.
-
-Dies ist nur bei G-Ausdrücken sinnvoll, die an @code{gexp->derivation}
-übergeben werden.
-
address@hidden #$@@@var{Liste}
address@hidden (ungexp-splicing @var{Liste})
-Das Gleiche wie oben, jedoch wird nur der Inhalt der @var{Liste} in die
-äußere Liste eingespleißt.
-
address@hidden #+@@@var{Liste}
address@hidden (ungexp-native-splicing @var{Liste})
-Das Gleiche, aber referenziert werden native Erstellungen der Objekte in der
address@hidden
-
address@hidden table
-
-G-Ausdrücke, die mit @code{gexp} oder @code{#~} erzeugt wurden, sind zur
-Laufzeit Objekte vom Typ @code{gexp?} (siehe unten).
address@hidden deffn
-
address@hidden {Scheme-Syntax} with-imported-modules @var{Module} 
@address@hidden
-Markiert die in @address@hidden definierten G-Ausdrücke, dass sie in
-ihrer Ausführungsumgebung die angegebenen @var{Module} brauchen.
-
-Jedes Objekt unter den @var{Module}n kann der Name eines Moduls wie
address@hidden(guix build utils)} sein, oder es kann nacheinander ein 
Modulname, ein
-Pfeil und ein dateiartiges Objekt sein:
-
address@hidden
-`((guix build utils)
-  (guix gcrypt)
-  ((guix config) => ,(scheme-file "config.scm"
-                                  #~(define-module @dots{}))))
address@hidden example
-
address@hidden
-Im Beispiel oben werden die ersten beiden Module vom Suchpfad genommen und
-das letzte aus dem angegebenen dateiartigen Objekt erzeugt.
-
-Diese Form hat einen @emph{lexikalischen} Sichtbarkeitsbereich: Sie wirkt
-sich auf die direkt in @address@hidden definierten G-Ausdrücke aus, aber
-nicht auf jene, die, sagen wir, in aus @address@hidden heraus
-aufgerufenen Prozeduren definiert wurden.
address@hidden deffn
-
address@hidden {Scheme-Syntax} with-extensions @var{Erweiterungen} 
@address@hidden
-Markiert die in @address@hidden definierten G-Ausdrücke, dass sie
address@hidden in ihrer Erstellungs- und Ausführungsumgebung
-benötigen. @var{Erweiterungen} sind typischerweise eine Liste von
-Paketobjekten wie zum Beispiel die im Modul @code{(gnu packages guile)}
-definierten.
-
-Konkret werden die unter den @var{Erweiterungen} aufgeführten Pakete zum
-Ladepfad hinzugefügt, während die in @address@hidden aufgeführten
-importierten Module kompiliert werden und sie werden auch zum Ladepfad des
-von @address@hidden gelieferten G-Ausdrucks hinzugefügt.
address@hidden deffn
-
address@hidden {Scheme-Prozedur} gexp? @var{Objekt}
-Liefert @code{#t}, wenn das @var{Objekt} ein G-Ausdruck ist.
address@hidden deffn
-
-G-Ausdrücke sind dazu gedacht, auf die Platte geschrieben zu werden,
-entweder als Code, der eine Ableitung erstellt, oder als einfache Dateien im
-Store. Die monadischen Prozeduren unten ermöglichen Ihnen das (siehe
address@hidden Store-Monade}, wenn Sie mehr Informationen über Monaden suchen).
-
address@hidden {Monadische Prozedur} gexp->derivation @var{Name} @var{Ausdruck} 
@
-       [#:system (%current-system)] [#:target #f] [#:graft? #t] @ [#:hash #f]
-[#:hash-algo #f] @ [#:recursive? #f] [#:env-vars '()] [#:modules '()] @
-[#:module-path @var{%load-path}] @ [#:effective-version "2.2"] @
-[#:references-graphs #f] [#:allowed-references #f] @
-[#:disallowed-references #f] @ [#:leaked-env-vars #f] @ [#:script-name
-(string-append @var{Name} "-builder")] @ [#:deprecation-warnings #f] @
-[#:local-build? #f] [#:substitutable? #t] @ [#:properties '()]
-[#:guile-for-build #f] Liefert eine Ableitung unter dem @var{Name}n, die
-jeden @var{Ausdruck} (ein G-Ausdruck) mit @var{guile-for-build} (eine
-Ableitung) für das @var{System} erstellt; der @var{Ausdruck} wird dabei in
-einer Datei namens @var{script-name} gespeichert. Wenn address@hidden wahr
-ist, wird es beim Cross-Kompilieren als Zieltripel für mit @var{Ausdruck}
-bezeichnete Pakete benutzt.
-
address@hidden gilt als veraltet; stattdessen sollte
address@hidden benutzt werden. Die Bedeutung ist, dass die
address@hidden im Ausführungskontext des @var{Ausdruck}s verfügbar gemacht
-werden; @var{modules} ist dabei eine Liste von Namen von Guile-Modulen, die
-im Modulpfad @var{module-path} gesucht werden, um sie in den Store zu
-kopieren, zu kompilieren und im Ladepfad während der Ausführung des
address@hidden verfügbar zu machen — z.B.@: @code{((guix build utils) (guix
-build gnu-build-system))}.
-
address@hidden bestimmt, unter welcher Zeichenkette die
-Erweiterungen des @var{Ausdruck}s zum Suchpfad hinzugefügt werden (siehe
address@hidden) — z.B.@: @code{"2.2"}.
-
address@hidden bestimmt, ob vom @var{Ausdruck} benannte Pakete veredelt werden
-sollen, falls Veredelungen zur Verfügung stehen.
-
-Ist @var{references-graphs} wahr, muss es eine Liste von Tupeln in einer der
-folgenden Formen sein:
-
address@hidden
-(@var{Dateiname} @var{Paket})
-(@var{Dateiname} @var{Paket} @var{Ausgabe})
-(@var{Dateiname} @var{Ableitung})
-(@var{Dateiname} @var{Ableitung} @var{Ausgabe})
-(@var{Dateiname} @var{Store-Objekt})
address@hidden example
-
-Bei jedem Element von @var{references-graphs} wird das rechts Stehende
-automatisch zu einer Eingabe des Erstellungsprozesses vom @var{Ausdruck}
-gemacht. In der Erstellungsumgebung enthält das, was mit @var{Dateiname}
-bezeichnet wird, den Referenzgraphen des entsprechenden Objekts in einem
-einfachen Textformat.
-
address@hidden muss entweder @code{#f} oder eine Liste von
-Ausgabenamen und Paketen sein. Eine solche Liste benennt Store-Objekte, die
-das Ergebnis referenzieren darf. Jede Referenz auf ein nicht dort
-aufgeführtes Store-Objekt löst einen Erstellungsfehler aus. Genauso
-funktioniert @var{disallowed-references}, was eine Liste von Objekten sein
-kann, die von den Ausgaben nicht referenziert werden dürfen.
-
address@hidden bestimmt, ob beim Kompilieren von Modulen
-Warnungen angezeigt werden sollen, wenn auf als veraltet markierten Code
-zugegriffen wird (»deprecation warnings«). @var{deprecation-warnings} kann
address@hidden, @code{#t} oder @code{'detailed} (detailliert) sein.
-
-Die anderen Argumente verhalten sich wie bei @code{derivation} (siehe
address@hidden).
address@hidden deffn
-
address@hidden dateiartige Objekte
-Die im Folgenden erklärten Prozeduren @code{local-file}, @code{plain-file},
address@hidden, @code{program-file} und @code{scheme-file} liefern
address@hidden Objekte}. Das bedeutet, dass diese Objekte, wenn sie in
-einem G-Ausdruck demaskiert werden, zu einer Datei im Store
-führen. Betrachten Sie zum Beispiel diesen G-Ausdruck:
-
address@hidden
-#~(system* #$(file-append glibc "/sbin/nscd") "-f"
-           #$(local-file "/tmp/my-nscd.conf"))
address@hidden example
-
-Der Effekt hiervon ist, dass @file{/tmp/my-nscd.conf} »interniert« wird,
-indem es in den Store kopiert wird. Sobald er umgeschrieben wurde, zum
-Beispiel über @code{gexp->derivation}, referenziert der G-Ausdruck diese
-Kopie im @file{/gnu/store}. Die Datei in @file{/tmp} zu bearbeiten oder zu
-löschen, hat dann keinen Effekt mehr darauf, was der G-Ausdruck
-tut. @code{plain-file} kann in ähnlicher Weise benutzt werden, es
-unterscheidet sich aber darin, dass dort der Prozedur der Inhalt der Datei
-als eine Zeichenkette übergeben wird.
-
address@hidden {Scheme-Prozedur} local-file @var{Datei} address@hidden @
-   [#:recursive? #f] [#:select? (const #t)] Liefert ein Objekt, dass die lokale
-Datei @var{Datei} repräsentiert und sie zum Store hinzufügen lässt; dieses
-Objekt kann in einem G-Ausdruck benutzt werden. Wurde für die @var{Datei}
-ein relativer Dateiname angegeben, wird sie relativ zur Quelldatei gesucht,
-in der diese Form steht. Die @var{Datei} wird unter dem angegebenen
address@hidden im Store abgelegt — als Vorgabe wird dabei der Basisname der
address@hidden genommen.
-
-Ist @var{recursive?} wahr, werden in der @var{Datei} enthaltene Dateien
-rekursiv hinzugefügt; ist die @var{Datei} eine flache Datei und
address@hidden ist wahr, wird ihr Inhalt in den Store eingelagert und ihre
-Berechtigungs-Bits übernommen.
-
-Steht @var{recursive?} auf wahr, wird @code{(@var{select?} @var{Datei}
address@hidden)} für jeden Verzeichniseintrag aufgerufen, wobei @var{Datei} der
-absolute Dateiname und @var{Stat} das Ergebnis von @code{lstat} ist, außer
-auf den Einträgen, wo @var{select?} keinen wahren Wert liefert.
-
-Dies ist das deklarative Gegenstück zur monadischen Prozedur
address@hidden (siehe @ref{Die Store-Monade, @code{interned-file}}).
address@hidden deffn
-
address@hidden {Scheme-Prozedur} plain-file @var{Name} @var{Inhalt}
-Liefert ein Objekt, das eine Textdatei mit dem angegebenen @var{Name}n
-repräsentiert, die den angegebenen @var{Inhalt} hat (eine Zeichenkette oder
-ein Bytevektor), welche zum Store hinzugefügt werden soll.
-
-Dies ist das deklarative Gegenstück zu @code{text-file}.
address@hidden deffn
-
address@hidden {Scheme-Prozedur} computed-file @var{Name} @var{G-Ausdruck} @
-          [#:options '(#:local-build? #t)] Liefert ein Objekt, das das 
Store-Objekt
-mit dem @var{Name}n repräsentiert, eine Datei oder ein Verzeichnis, das vom
address@hidden berechnet wurde. @var{options} ist eine Liste zusätzlicher
-Argumente, die an @code{gexp->derivation} übergeben werden.
-
-Dies ist das deklarative Gegenstück zu @code{gexp->derivation}.
address@hidden deffn
-
address@hidden {Monadische Prozedur} gexp->script @var{Name} @var{Ausdruck} @
-  [#:guile (default-guile)] [#:module-path %load-path] Liefert ein
-ausführbares Skript namens @var{Name}, das den @var{Ausdruck} mit dem
-angegebenen @var{guile} ausführt, wobei vom @var{Ausdruck} importierte
-Module in seinem Suchpfad stehen. Die Module des @var{Ausdruck}s werden dazu
-im Modulpfad @var{module-path} gesucht.
-
-Folgendes Beispiel erstellt ein Skript, das einfach nur den Befehl
address@hidden ausführt:
-
address@hidden
-(use-modules (guix gexp) (gnu packages base))
-
-(gexp->script "list-files"
-              #~(execl #$(file-append coreutils "/bin/ls")
-                       "ls"))
address@hidden example
-
-Lässt man es durch den Store »laufen« (siehe @ref{Die Store-Monade,
address@hidden), erhalten wir eine Ableitung, die eine ausführbare
-Datei @file{/gnu/store/@dots{}-list-files} generiert, ungefähr so:
-
address@hidden
-#!/gnu/store/@dots{}-guile-2.0.11/bin/guile -ds
-!#
-(execl "/gnu/store/@dots{}-coreutils-8.22"/bin/ls" "ls")
address@hidden example
address@hidden deffn
-
address@hidden {Scheme-Prozedur} program-file @var{Name} @var{G-Ausdruck} @
-          [#:guile #f] [#:module-path %load-path] Liefert ein Objekt, das eine
-ausführbare Store-Datei @var{Name} repräsentiert, die den @var{G-Ausdruck}
-ausführt. @var{guile} ist das zu verwendende Guile-Paket, mit dem das Skript
-ausgeführt werden kann. Importierte Module des @var{G-Ausdruck}s werden im
-Modulpfad @var{module-path} gesucht.
-
-Dies ist das deklarative Gegenstück zu @code{gexp->script}.
address@hidden deffn
-
address@hidden {Monadische Prozedur} gexp->file @var{Name} @var{G-Ausdruck} @
-            [#:set-load-path? #t] [#:module-path %load-path] @ [#:splice? #f] 
@ [#:guile
-(default-guile)] Liefert eine Ableitung, die eine Datei @var{Name} erstellen
-wird, deren Inhalt der @var{G-Ausdruck} ist. Ist @var{splice?} wahr, dann
-wird @var{G-Ausdruck} stattdessen als eine Liste von mehreren G-Ausdrücken
-behandelt, die alle in die resultierende Datei gespleißt werden.
-
-Ist @var{set-load-path?} wahr, wird in die resultierende Datei Code
-hinzugefügt, der den Ladepfad @code{%load-path} und den Ladepfad für
-kompilierte Dateien @code{%load-compiled-path} festlegt, die für die
-importierten Module des @var{G-Ausdruck}s nötig sind. Die Module des
address@hidden werden im Modulpfad @var{module-path} gesucht.
-
-Die resultierende Datei referenziert alle Abhängigkeiten des
address@hidden oder eine Teilmenge davon.
address@hidden deffn
-
address@hidden {Scheme-Prozedur} scheme-file @var{Name} @var{G-Ausdruck} 
[#:splice? #f]
-Liefert ein Objekt, das die Scheme-Datei @var{Name} mit dem @var{G-Ausdruck}
-als Inhalt repräsentiert.
-
-Dies ist das deklarative Gegenstück zu @code{gexp->file}.
address@hidden deffn
-
address@hidden {Monadische Prozedur} text-file* @var{Name} @var{Text} @dots{}
-Liefert eine Ableitung als monadischen Wert, welche eine Textdatei erstellt,
-in der der gesamte @var{Text} enthalten ist. @var{Text} kann eine Folge
-nicht nur von Zeichenketten, sondern auch Objekten beliebigen Typs sein, die
-in einem G-Ausdruck benutzt werden können, also Paketen, Ableitungen,
-Objekte lokaler Dateien und so weiter. Die resultierende Store-Datei
-referenziert alle davon.
-
-Diese Variante sollte gegenüber @code{text-file} bevorzugt verwendet werden,
-wann immer die zu erstellende Datei Objekte im Store referenzieren
-wird. Typischerweise ist das der Fall, wenn eine Konfigurationsdatei
-erstellt wird, die Namen von Store-Dateien enthält, so wie hier:
-
address@hidden
-(define (profile.sh)
-  ;; Liefert den Namen eines Shell-Skripts im Store,
-  ;; welcher die Umgebungsvariable »PATH« initialisiert.
-  (text-file* "profile.sh"
-              "export PATH=" coreutils "/bin:"
-              grep "/bin:" sed "/bin\n"))
address@hidden example
-
-In diesem Beispiel wird die resultierende Datei
address@hidden/gnu/store/@dots{}-profile.sh} sowohl @var{coreutils}, @var{grep} 
als
-auch @var{sed} referenzieren, so dass der Müllsammler diese nicht löscht,
-während die resultierende Datei noch lebendig ist.
address@hidden deffn
-
address@hidden {Scheme-Prozedur} mixed-text-file @var{Name} @var{Text} @dots{}
-Liefert ein Objekt, was die Store-Datei @var{Name} repräsentiert, die
address@hidden enthält. @var{Text} ist dabei eine Folge von Zeichenketten und
-dateiartigen Objekten wie zum Beispiel:
-
address@hidden
-(mixed-text-file "profile"
-                 "export PATH=" coreutils "/bin:" grep "/bin")
address@hidden example
-
-Dies ist das deklarative Gegenstück zu @code{text-file*}.
address@hidden deffn
-
address@hidden {Scheme-Prozedur} file-union @var{Name} @var{Dateien}
-Liefert ein @code{<computed-file>}, das ein Verzeichnis mit allen
address@hidden enthält. Jedes Objekt in @var{Dateien} muss eine
-zweielementige Liste sein, deren erstes Element der im neuen Verzeichnis zu
-benutzende Dateiname ist und deren zweites Element ein G-Ausdruck ist, der
-die Zieldatei benennt. Hier ist ein Beispiel:
-
address@hidden
-(file-union "etc"
-            `(("hosts" ,(plain-file "hosts"
-                                    "127.0.0.1 localhost"))
-              ("bashrc" ,(plain-file "bashrc"
-                                     "alias ls='ls --color=auto'"))))
address@hidden example
-
-Dies liefert ein Verzeichnis @code{etc}, das zwei Dateien enthält.
address@hidden deffn
-
address@hidden {Scheme-Prozedur} directory-union @var{Name} @var{Dinge}
-Liefert ein Verzeichnis, was die Vereinigung (englisch »Union«) der
address@hidden darstellt, wobei @var{Dinge} eine Liste dateiartiger Objekte
-sein muss, die Verzeichnisse bezeichnen. Zum Beispiel:
-
address@hidden
-(directory-union "guile+emacs" (list guile emacs))
address@hidden example
-
-Das liefert ein Verzeichnis, welches die Vereinigung der Pakete @code{guile}
-und @code{emacs} ist.
address@hidden deffn
-
address@hidden {Scheme-Prozedur} file-append @var{Objekt} @var{Suffix} @dots{}
-Liefert ein dateiartiges Objekt, das zur Aneinanderreihung von @var{Objekt}
-und @var{Suffix} umgeschrieben wird, wobei das @var{Objekt} ein
-herunterbrechbares Objekt und jedes @var{Suffix} eine Zeichenkette sein
-muss.
-
-Betrachten Sie zum Beispiel diesen G-Ausdruck:
-
address@hidden
-(gexp->script "uname-ausfuehren"
-              #~(system* #$(file-append coreutils
-                                        "/bin/uname")))
address@hidden example
-
-Denselben Effekt könnte man erreichen mit:
-
address@hidden
-(gexp->script "uname-ausfuehren"
-              #~(system* (string-append #$coreutils
-                                        "/bin/uname")))
address@hidden example
-
-Es gibt jedoch einen Unterschied, nämlich enthält das resultierende Skript
-bei @code{file-append} tatsächlich den absoluten Dateinamen als
-Zeichenkette, während im anderen Fall das resultierende Skript einen
-Ausdruck @code{(string-append @dots{})} enthält, der den Dateinamen erst
address@hidden Laufzeit} zusammensetzt.
address@hidden deffn
-
-
-Natürlich gibt es zusätzlich zu in »wirtsseitigem« Code eingebetteten
-G-Ausdrücken auch Module mit »erstellungsseitig« nutzbaren Werkzeugen. Um
-klarzustellen, dass sie dafür gedacht sind, in der Erstellungsschicht
-benutzt zu werden, bleiben diese Module im Namensraum @code{(guix build
address@hidden)}.
-
address@hidden Herunterbrechen, von abstrakten Objekten in G-Ausdrücken
-Intern werden hochsprachliche, abstrakte Objekte mit ihrem Compiler entweder
-zu Ableitungen oder zu Store-Objekten @dfn{heruntergebrochen}. Wird zum
-Beispiel ein Paket heruntergebrochen, bekommt man eine Ableitung, während
-ein @code{plain-file} zu einem Store-Objekt heruntergebrochen wird. Das wird
-mit der monadischen Prozedur @code{lower-object} bewerkstelligt.
-
address@hidden {Monadische Prozedur} lower-object @var{Objekt} address@hidden @
-           [#:target #f] Liefert die Ableitung oder das Store-Objekt, das dem
address@hidden für @var{System} als Wert in der Store-Monade
address@hidden entspricht, cross-kompiliert für das Zieltripel
address@hidden, wenn @var{target} wahr ist. Das @var{Objekt} muss ein Objekt
-sein, für das es einen mit ihm assoziierten G-Ausdruck-Compiler gibt, wie
-zum Beispiel ein @code{<package>}.
address@hidden deffn
-
address@hidden Aufruf von guix repl
address@hidden @command{guix repl} aufrufen
-
address@hidden REPL (Lese-Auswerten-Schreiben-Schleife)
-Der Befehl @command{guix repl} startet eine Guile-REPL (@dfn{Read-Eval-Print
-Loop}, kurz REPL, deutsch Lese-Auswerten-Schreiben-Schleife) zur
-interaktiven Programmierung (siehe @ref{Using Guile Interactively,,, guile,
-GNU Guile Reference Manual}). Im Vergleich dazu, einfach den Befehl
address@hidden aufzurufen, garantiert @command{guix repl}, dass alle
-Guix-Module und deren Abhängigkeiten im Suchpfad verfügbar sind. Sie können
-die REPL so benutzen:
-
address@hidden
-$ guix repl
-scheme@@(guile-user)> ,use (gnu packages base)
-scheme@@(guile-user)> coreutils
-$1 = #<package coreutils@@8.29 gnu/packages/base.scm:327 3e28300>
address@hidden example
-
address@hidden Untergeordnete
address@hidden repl} implementiert zusätzlich ein einfaches maschinenlesbares
-Protokoll für die REPL, das von @code{(guix inferior)} benutzt wird, um mit
address@hidden zu interagieren, also mit getrennten Prozessen einer
-womöglich anderen Version von Guix.
-
-Folgende @var{Optionen} gibt es:
-
address@hidden @code
address@hidden address@hidden
address@hidden -t @var{Typ}
-Startet eine REPL des angegebenen @var{Typ}s, der einer der Folgenden sein
-darf:
-
address@hidden @code
address@hidden guile
-Die Voreinstellung, mit der eine normale, voll funktionsfähige Guile-REPL
-gestartet wird.
address@hidden machine
-Startet eine REPL, die ein maschinenlesbares Protokoll benutzt. Dieses
-Protokoll wird vom Modul @code{(guix inferior)} gesprochen.
address@hidden table
-
address@hidden address@hidden
-Der Vorgabe nach würde @command{guix repl} von der Standardeingabe lesen und
-auf die Standardausgabe schreiben. Wird diese Befehlszeilenoption angegeben,
-lauscht die REPL stattdessen auf dem @var{Endpunkt} auf Verbindungen. Hier
-sind Beispiele gültiger Befehlszeilenoptionen:
-
address@hidden @code
address@hidden --listen=tcp:37146
-Verbindungen mit dem »localhost« auf Port 37146 akzeptieren.
-
address@hidden --listen=unix:/tmp/socket
-Verbindungen zum Unix-Socket @file{/tmp/socket} akzeptieren.
address@hidden table
address@hidden table
-
address@hidden 
*********************************************************************
address@hidden Zubehör
address@hidden Zubehör
-
-Dieser Abschnitt beschreibt die Befehlszeilenwerkzeuge von Guix. Manche
-davon richten sich hauptsächlich an Entwickler und solche Nutzer, die neue
-Paketdefinitionen schreiben, andere sind auch für ein breiteres Publikum
-nützlich. Sie ergänzen die Scheme-Programmierschnittstelle um bequeme
-Befehle.
-
address@hidden
-* Aufruf von guix build::    Pakete aus der Befehlszeile heraus erstellen.
-* Aufruf von guix edit::     Paketdefinitionen bearbeiten.
-* Aufruf von guix download::  Herunterladen einer Datei und Ausgabe ihres 
-                                Hashes.
-* Aufruf von guix hash::     Den kryptografischen Hash einer Datei 
-                               berechnen.
-* Aufruf von guix import::   Paketdefinitionen importieren.
-* Aufruf von guix refresh::  Paketdefinitionen aktualisieren.
-* Aufruf von guix lint::     Fehler in Paketdefinitionen finden.
-* Aufruf von guix size::     Plattenplatzverbrauch profilieren.
-* Aufruf von guix graph::    Den Paketgraphen visualisieren.
-* Aufruf von guix publish::  Substitute teilen.
-* Aufruf von guix challenge::  Die Substitut-Server anfechten.
-* Aufruf von guix copy::     Mit einem entfernten Store Dateien austauschen.
-* Aufruf von guix container::  Prozesse isolieren.
-* Aufruf von guix weather::  Die Verfügbarkeit von Substituten 
-                               einschätzen.
-* Aufruf von guix processes::  Auflisten der Client-Prozesse
address@hidden menu
-
address@hidden Aufruf von guix build
address@hidden Aufruf von @command{guix build}
-
address@hidden Paketerstellung
address@hidden @command{guix build}
-Der Befehl @command{guix build} lässt Pakete oder Ableitungen samt ihrer
-Abhängigkeiten erstellen und gibt die resultierenden Pfade im Store
-aus. Beachten Sie, dass das Nutzerprofil dadurch nicht modifiziert wird —
-eine solche Installation bewirkt der Befehl @command{guix package} (siehe
address@hidden von guix package}). @command{guix build} wird also hauptsächlich
-von Entwicklern der Distribution benutzt.
-
-Die allgemeine Syntax lautet:
-
address@hidden
-guix build @var{Optionen} @address@hidden
address@hidden example
-
-Zum Beispiel wird mit folgendem Befehl die neueste Version von Emacs und von
-Guile erstellt, das zugehörige Erstellungsprotokoll angezeigt und
-letztendlich werden die resultierenden Verzeichnisse ausgegeben:
-
address@hidden
-guix build emacs guile
address@hidden example
-
-Folgender Befehl erstellt alle Pakete, die zur Verfügung stehen:
-
address@hidden
-guix build --quiet --keep-going \
-  `guix package -A | cut -f1,2 --output-delimiter=@@`
address@hidden example
-
-Als @var{Paket-oder-Ableitung} muss entweder der Name eines in der
-Software-Distribution zu findenden Pakets, wie etwa @code{coreutils} oder
address@hidden@@8.20}, oder eine Ableitung wie
address@hidden/gnu/store/@dots{}-coreutils-8.19.drv} sein. Im ersten Fall wird 
nach
-einem Paket mit entsprechendem Namen (und optional der entsprechenden
-Version) in den Modulen der GNU-Distribution gesucht (siehe @ref{Paketmodule}).
-
-Alternativ kann die Befehlszeilenoption @code{--expression} benutzt werden,
-um einen Scheme-Ausdruck anzugeben, der zu einem Paket ausgewertet wird;
-dies ist nützlich, wenn zwischen mehreren gleichnamigen Paketen oder
-Paket-Varianten unterschieden werden muss.
-
-Null oder mehr @var{Optionen} können angegeben werden. Zur Verfügung stehen
-die in den folgenden Unterabschnitten beschriebenen Befehlszeilenoptionen.
-
address@hidden
-* Gemeinsame Erstellungsoptionen::  Erstellungsoptionen für die meisten 
-                                      Befehle.
-* Paketumwandlungsoptionen::  Varianten von Paketen erzeugen.
-* Zusätzliche Erstellungsoptionen::  Optionen spezifisch für »guix 
-                                        build«.
-* Fehlschläge beim Erstellen untersuchen::  Praxiserfahrung bei der 
-                                               Paketerstellung.
address@hidden menu
-
address@hidden Gemeinsame Erstellungsoptionen
address@hidden Gemeinsame Erstellungsoptionen
-
-Einige dieser Befehlszeilenoptionen zur Steuerung des Erstellungsprozess
-haben @command{guix build} und andere Befehle, mit denen Erstellungen
-ausgelöst werden können, wie @command{guix package} oder @command{guix
-archive}, gemeinsam. Das sind folgende:
-
address@hidden @code
-
address@hidden address@hidden
address@hidden -L @var{Verzeichnis}
-Das @var{Verzeichnis} vorne an den Suchpfad für Paketmodule anfügen (siehe
address@hidden).
-
-Damit können Nutzer dafür sorgen, dass ihre eigenen selbstdefinierten Pakete
-für die Befehlszeilenwerkzeuge sichtbar sind.
-
address@hidden --keep-failed
address@hidden -K
-Den Verzeichnisbaum, in dem fehlgeschlagene Erstellungen durchgeführt
-wurden, behalten. Wenn also eine Erstellung fehlschlägt, bleibt ihr
-Erstellungsbaum in @file{/tmp} erhalten. Der Name dieses Unterverzeichnisses
-wird am Ende dem Erstellungsprotokolls ausgegeben. Dies hilft bei der Suche
-nach Fehlern in Erstellungen. Der Abschnitt @ref{Fehlschläge beim Erstellen 
untersuchen}
-zeigt Ihnen Hinweise und Tricks, wie Erstellungsfehler untersucht werden
-können.
-
-Diese Option hat keine Auswirkungen, wenn eine Verbindung zu einem
-entfernten Daemon über eine @code{guix://}-URI verwendet wurde (siehe
address@hidden Store, the @code{GUIX_DAEMON_SOCKET} variable}).
-
address@hidden --keep-going
address@hidden -k
-Weitermachen, auch wenn ein Teil der Erstellungen fehlschlägt. Das bedeutet,
-dass der Befehl erst terminiert, wenn alle Erstellungen erfolgreich oder mit
-Fehler durchgeführt wurden.
-
-Das normale Verhalten ist, abzubrechen, sobald eine der angegebenen
-Ableitungen fehlschlägt.
-
address@hidden --dry-run
address@hidden -n
-Die Ableitungen nicht erstellen.
-
address@hidden
address@hidden --fallback
-Wenn das Substituieren vorerstellter Binärdateien fehlschlägt, diese als
-»Fallback« lokal selbst erstellen (siehe @ref{Fehler bei der Substitution}).
-
address@hidden address@hidden
address@hidden
-Die @var{urls} als durch Leerraumzeichen getrennte Liste von Quell-URLs für
-Substitute anstelle der vorgegebenen URL-Liste für den @command{guix-daemon}
-verwenden (siehe @ref{daemon-substitute-urls,, @command{guix-daemon} URLs}).
-
-Das heißt, die Substitute dürfen von den @var{urls} heruntergeladen werden,
-sofern sie mit einem durch den Systemadministrator autorisierten Schlüssel
-signiert worden sind (siehe @ref{Substitute}).
-
-Wenn als @var{urls} eine leere Zeichenkette angegeben wurde, verhält es
-sich, als wären Substitute abgeschaltet.
-
address@hidden --no-substitutes
-Benutze keine Substitute für Erstellungsergebnisse. Das heißt, dass alle
-Objekte lokal erstellt werden müssen, und kein Herunterladen von vorab
-erstellten Binärdateien erlaubt ist (siehe @ref{Substitute}).
-
address@hidden --no-grafts
-Pakete nicht »veredeln« (engl. »graft«). Praktisch heißt das, dass als
-Veredelungen verfügbare Paketaktualisierungen nicht angewandt werden. Der
-Abschnitt @ref{Sicherheitsaktualisierungen} hat weitere Informationen zu 
Veredelungen.
-
address@hidden address@hidden
-Jede Ableitung @var{n}-mal nacheinander erstellen und einen Fehler melden,
-wenn die aufeinanderfolgenden Erstellungsergebnisse nicht Bit für Bit
-identisch sind.
-
-Das ist eine nützliche Methode, um nicht-deterministische
-Erstellungsprozesse zu erkennen. Nicht-deterministische Erstellungsprozesse
-sind ein Problem, weil Nutzer dadurch praktisch nicht @emph{verifizieren}
-können, ob von Drittanbietern bereitgestellte Binärdateien echt sind. Der
-Abschnitt @ref{Aufruf von guix challenge} erklärt dies genauer.
-
-Beachten Sie, dass die sich unterscheidenden Erstellungsergebnisse nicht
-erhalten bleiben, so dass Sie eventuelle Fehler manuell untersuchen müssen,
-z.B.@: indem Sie eines oder mehrere der Erstellungsergebnisse @code{guix
-archive --export} auslagern (siehe @ref{Aufruf von guix archive}), dann neu
-erstellen und letztlich die beiden Erstellungsergebnisse vergleichen.
-
address@hidden --no-build-hook
-Nicht versuchen, Erstellungen über den »Build-Hook« des Daemons auszulagern
-(siehe @ref{Auslagern des Daemons einrichten}). Somit wird lokal erstellt, 
statt
-Erstellungen auf entfernte Maschinen auszulagern.
-
address@hidden address@hidden
-Wenn der Erstellungs- oder Substitutionsprozess länger als
address@hidden keine Ausgabe erzeugt, wird er abgebrochen und ein
-Fehler beim Erstellen gemeldet.
-
-Standardmäßig wird die Einstellung für den Daemon benutzt (siehe
address@hidden des guix-daemon, @code{--max-silent-time}}).
-
address@hidden address@hidden
-Entsprechend wird hier der Erstellungs- oder Substitutionsprozess
-abgebrochen und als Fehlschlag gemeldet, wenn er mehr als
address@hidden dauert.
-
-Standardmäßig wird die Einstellung für den Daemon benutzt (siehe
address@hidden des guix-daemon, @code{--timeout}}).
-
address@hidden Note: This option is actually not part of 
%standard-build-options but
address@hidden most programs honor it.
address@hidden Ausführlichkeit der Befehlszeilenwerkzeuge
address@hidden Erstellungsprotokolle, Ausführlichkeit
address@hidden -v @var{Stufe}
address@hidden address@hidden
-Die angegebene Ausführlichkeitsstufe verwenden. Als @var{Stufe} muss eine
-ganze Zahl angegeben werden. Wird 0 gewählt, wird keine Ausgabe zur
-Fehlersuche angezeigt, 1 bedeutet eine knappe Ausgabe und 2 lässt alle
-Erstellungsprotokollausgaben auf die Standardfehlerausgabe schreiben.
-
address@hidden address@hidden
address@hidden -c @var{n}
-Die Nutzung von bis zu @var{n} Prozessorkernen für die Erstellungen
-gestatten. Der besondere Wert @code{0} bedeutet, dass so viele wie möglich
-benutzt werden.
-
address@hidden address@hidden
address@hidden -M @var{n}
-Höchstens @var{n} gleichzeitige Erstellungsaufträge erlauben. Im Abschnitt
address@hidden des guix-daemon, @code{--max-jobs}} finden Sie Details zu dieser
-Option und der äquivalenten Option des @command{guix-daemon}.
-
address@hidden address@hidden
-Ein Protokoll zur Fehlersuche ausgeben, das vom Erstellungsdaemon kommt. Als
address@hidden muss eine ganze Zahl zwischen 0 und 5 angegeben werden; höhere
-Zahlen stehen für ausführlichere Ausgaben. Stufe 4 oder höher zu wählen,
-kann bei der Suche nach Fehlern, wie der Erstellungs-Daemon eingerichtet
-ist, helfen.
-
address@hidden table
-
-Intern ist @command{guix build} im Kern eine Schnittstelle zur Prozedur
address@hidden aus dem Modul @code{(guix packages)} und zu der
-Prozedur @code{build-derivations} des Moduls @code{(guix derivations)}.
-
-Neben auf der Befehlszeile übergebenen Optionen beachten @command{guix
-build} und andere @command{guix}-Befehle, die Erstellungen durchführen
-lassen, die Umgebungsvariable @code{GUIX_BUILD_OPTIONS}.
-
address@hidden {Umgebungsvariable} GUIX_BUILD_OPTIONS
-Nutzer können diese Variable auf eine Liste von Befehlszeilenoptionen
-definieren, die automatisch von @command{guix build} und anderen
address@hidden, die Erstellungen durchführen lassen, benutzt wird,
-wie in folgendem Beispiel:
-
address@hidden
-$ export GUIX_BUILD_OPTIONS="--no-substitutes -c 2 -L /foo/bar"
address@hidden example
-
-Diese Befehlszeilenoptionen werden unabhängig von den auf der Befehlszeile
-übergebenen Befehlszeilenoptionen grammatikalisch analysiert und das
-Ergebnis an die bereits analysierten auf der Befehlszeile übergebenen
-Befehlszeilenoptionen angehängt.
address@hidden defvr
-
-
address@hidden Paketumwandlungsoptionen
address@hidden Paketumwandlungsoptionen
-
address@hidden Paketvarianten
-Eine weitere Gruppe von Befehlszeilenoptionen, die @command{guix build} und
-auch @command{guix package} unterstützen, sind
address@hidden Diese Optionen ermöglichen es,
address@hidden zu definieren — zum Beispiel können Pakete aus einem
-anderen Quellcode als normalerweise erstellt werden. Damit ist es leicht,
-angepasste Pakete schnell zu erstellen, ohne die vollständigen Definitionen
-von Paketvarianten einzutippen (siehe @ref{Pakete definieren}).
-
address@hidden @code
-
address@hidden address@hidden
address@hidden address@hidden@var{Quelle}
address@hidden address@hidden@@@address@hidden
-Den Paketquellcode für das @var{Paket} von der angegebenen @var{Quelle}
-holen und die @var{Version} als seine Versionsnummer verwenden. Die
address@hidden muss ein Dateiname oder eine URL sein wie bei @command{guix
-download} (siehe @ref{Aufruf von guix download}).
-
-Wird kein @var{Paket} angegeben, wird als Paketname derjenige auf der
-Befehlszeile angegebene Paketname angenommen, der zur Basis am Ende der
address@hidden passt — wenn z.B.@: als @var{Quelle} die Datei
address@hidden/src/guile-2.0.10.tar.gz} angegeben wurde, entspricht das dem
address@hidden
-
-Ebenso wird, wenn keine @var{Version} angegeben wurde, die Version als
-Zeichenkette aus der @var{Quelle} abgeleitet; im vorherigen Beispiel wäre
-sie @code{2.0.10}.
-
-Mit dieser Option können Nutzer versuchen, eine andere Version ihres Pakets
-auszuprobieren, als die in der Distribution enthaltene Version. Folgendes
-Beispiel lädt @file{ed-1.7.tar.gz} von einem GNU-Spiegelserver herunter und
-benutzt es als Quelle für das @code{ed}-Paket:
-
address@hidden
-guix build ed --with-source=mirror://gnu/ed/ed-1.7.tar.gz
address@hidden example
-
-Für Entwickler wird es einem durch @code{--with-source} leicht gemacht,
-»Release Candidates«, also Vorabversionen, zu testen:
-
address@hidden
-guix build guile --with-source=../guile-2.0.9.219-e1bb7.tar.xz
address@hidden example
-
address@hidden oder ein Checkout eines versionskontrollierten Repositorys in 
einer
-isolierten Umgebung zu erstellen:
-
address@hidden
-$ git clone git://git.sv.gnu.org/guix.git
-$ guix build guix --with-source=guix@@1.0=./guix
address@hidden example
-
address@hidden address@hidden@var{Ersatz}
-Abhängigkeiten vom @var{Paket} durch eine Abhängigkeit vom
address@hidden ersetzen. Als @var{Paket} muss ein Paketname angegeben
-werden und als @var{Ersatz} eine Paketspezifikation wie @code{guile} oder
address@hidden@@1.8}.
-
-Mit folgendem Befehl wird zum Beispiel Guix erstellt, aber statt der
-aktuellen stabilen Guile-Version hängt es von der alten Guile-Version
address@hidden@@2.0} ab:
-
address@hidden
-guix build --with-input=guile=guile@@2.0 guix
address@hidden example
-
-Die Ersetzung ist rekursiv und umfassend. In diesem Beispiel würde nicht nur
address@hidden, sondern auch seine Abhängigkeit @code{guile-json} (was auch von
address@hidden abhängt) für @code{guile@@2.0} neu erstellt.
-
-Implementiert wird das alles mit der Scheme-Prozedur
address@hidden (siehe @ref{Pakete definieren,
address@hidden).
-
address@hidden address@hidden@var{Ersatz}
-Dies verhält sich ähnlich wie mit @code{--with-input}, aber mit dem
-wichtigen Unterschied, dass nicht die gesamte Abhängigkeitskette neu
-erstellt wird, sondern das @var{Ersatz}-Paket erstellt und die
-ursprünglichen Binärdateien, die auf das @var{Paket} verwiesen haben, damit
address@hidden werden. Im Abschnitt @ref{Sicherheitsaktualisierungen} finden Sie
-weitere Informationen über Veredelungen.
-
-Zum Beispiel veredelt folgender Befehl Wget und alle Abhängigkeiten davon
-mit der Version 3.5.4 von GnuTLS, indem Verweise auf die ursprünglich
-verwendete GnuTLS-Version ersetzt werden:
-
address@hidden
-guix build --with-graft=gnutls=gnutls@@3.5.4 wget
address@hidden example
-
-Das hat den Vorteil, dass es viel schneller geht, als alles neu zu
-erstellen. Die Sache hat aber einen Haken: Veredelung funktioniert nur, wenn
-das @var{Paket} und sein @var{Ersatz} miteinander streng kompatibel sind —
-zum Beispiel muss, wenn diese eine Programmbibliothek zur Verfügung stellen,
-deren Binärschnittstelle (»Application Binary Interface«, kurz ABI)
-kompatibel sein. Wenn das @var{Ersatz}-Paket auf irgendeine Art inkompatibel
-mit dem @var{Paket} ist, könnte das Ergebnispaket unbrauchbar sein. Vorsicht
-ist also geboten!
-
address@hidden address@hidden@var{URL}
address@hidden Git, den neuesten Commit benutzen
address@hidden latest commit, building
-Build @var{package} from the latest commit of the @code{master} branch of
-the Git repository at @var{url}.  Git sub-modules of the repository are
-fetched, recursively.
-
-For example, the following command builds the NumPy Python library against
-the latest commit of the master branch of Python itself:
-
address@hidden
-guix build python-numpy \
-  --with-git-url=python=https://github.com/python/cpython
address@hidden example
-
-This option can also be combined with @code{--with-branch} or
address@hidden (see below).
-
address@hidden continuous integration
-Obviously, since it uses the latest commit of the given branch, the result
-of such a command varies over time.  Nevertheless it is a convenient way to
-rebuild entire software stacks against the latest commit of one or more
-packages.  This is particularly useful in the context of continuous
-integration (CI).
-
-Checkouts are kept in a cache under @file{~/.cache/guix/checkouts} to speed
-up consecutive accesses to the same repository.  You may want to clean it up
-once in a while to save disk space.
-
address@hidden address@hidden@var{Branch}
-Build @var{package} from the latest commit of @var{branch}.  If the
address@hidden field of @var{package} is an origin with the @code{git-fetch}
-method (@pxref{»origin«-Referenz}) or a @code{git-checkout} object, the
-repository URL is taken from that @code{source}.  Otherwise you have to use
address@hidden to specify the URL of the Git repository.
-
-For instance, the following command builds @code{guile-sqlite3} from the
-latest commit of its @code{master} branch, and then builds @code{guix}
-(which depends on it) and @code{cuirass} (which depends on @code{guix})
-against this specific @code{guile-sqlite3} build:
-
address@hidden
-guix build --with-branch=guile-sqlite3=master cuirass
address@hidden example
-
address@hidden address@hidden@var{Commit}
-This is similar to @code{--with-branch}, except that it builds from
address@hidden rather than the tip of a branch.  @var{commit} must be a valid
-Git commit SHA1 identifier.
address@hidden table
-
address@hidden Zusätzliche Erstellungsoptionen
address@hidden Zusätzliche Erstellungsoptionen
-
-Die unten aufgeführten Befehlszeilenoptionen funktionieren nur mit
address@hidden build}.
-
address@hidden @code
-
address@hidden --quiet
address@hidden -q
-Schweigend erstellen, ohne das Erstellungsprotokoll anzuzeigen — dies ist
-äquivalent zu @code{--verbosity=0}. Nach Abschluss der Erstellung ist das
-Protokoll in @file{/var} (oder einem entsprechenden Ort) einsehbar und kann
-jederzeit mit der Befehlszeilenoption @option{--log-file} gefunden werden.
-
address@hidden address@hidden
address@hidden -f @var{Datei}
-Das Paket, die Ableitung oder das dateiähnliche Objekt erstellen, zu dem der
-Code in der @var{Datei} ausgewertet wird (siehe @ref{G-Ausdrücke,
-file-like objects}).
-
-Zum Beispiel könnte in der @var{Datei} so eine Paketdefinition stehen (siehe
address@hidden definieren}):
-
address@hidden
address@hidden package-hello.scm
address@hidden example
-
address@hidden address@hidden
address@hidden -e @var{Ausdruck}
-Das Paket oder die Ableitung erstellen, zu der der @var{Ausdruck}
-ausgewertet wird.
-
-Zum Beispiel kann der @var{Ausdruck} @code{(@@ (gnu packages guile)
-guile-1.8)} sein, was diese bestimmte Variante der Version 1.8 von Guile
-eindeutig bezeichnet.
-
-Alternativ kann der @var{Ausdruck} ein G-Ausdruck sein. In diesem Fall wird
-er als Erstellungsprogramm an @code{gexp->derivation} übergeben (siehe
address@hidden).
-
-Zudem kann der @var{Ausdruck} eine monadische Prozedur mit null Argumenten
-bezeichnen (siehe @ref{Die Store-Monade}). Die Prozedur muss eine Ableitung
-als monadischen Wert zurückliefern, die dann durch @code{run-with-store}
-laufen gelassen wird.
-
address@hidden --source
address@hidden -S
-Die Quellcode-Ableitung der Pakete statt die Pakete selbst erstellen.
-
-Zum Beispiel liefert @code{guix build -S gcc} etwas in der Art von
address@hidden/gnu/store/@dots{}-gcc-4.7.2.tar.bz2}, also den Tarball mit dem
-GCC-Quellcode.
-
-Der gelieferte Quell-Tarball ist das Ergebnis davon, alle Patches und
-Code-Schnipsel aufzuspielen, die im @code{origin}-Objekt des Pakets
-festgelegt wurden (siehe @ref{Pakete definieren}).
-
address@hidden --sources
-Den Quellcode für @var{Paket-oder-Ableitung} und alle Abhängigkeiten davon
-rekursiv herunterladen und zurückliefern. Dies ist eine praktische Methode,
-eine lokale Kopie des gesamten Quellcodes zu beziehen, der nötig ist, um die
-Pakete zu erstellen, damit Sie diese später auch ohne Netzwerkzugang
-erstellen lassen können. Es handelt sich um eine Erweiterung der
-Befehlszeilenoption @code{--source}, die jeden der folgenden Argumentwerte
-akzeptiert:
-
address@hidden @code
address@hidden package
-Mit diesem Wert verhält sich die Befehlszeilenoption @code{--sources} auf
-genau die gleiche Weise wie die Befehlszeilenoption @code{--source}.
-
address@hidden all
-Erstellt die Quellcode-Ableitungen aller Pakete einschließlich allen
-Quellcodes, der als Teil der Eingaben im @code{inputs}-Feld aufgelistet
-ist. Dies ist der vorgegebene Wert, wenn sonst keiner angegeben wird.
-
address@hidden
-$ guix build --sources tzdata
-Folgende Ableitungen werden erstellt:
-   /gnu/store/@dots{}-tzdata2015b.tar.gz.drv
-   /gnu/store/@dots{}-tzcode2015b.tar.gz.drv
address@hidden example
-
address@hidden transitive
-Die Quellcode-Ableitungen aller Pakete sowie aller transitiven Eingaben der
-Pakete erstellen. Damit kann z.B.@: Paket-Quellcode vorab heruntergeladen
-und später offline erstellt werden.
-
address@hidden
-$ guix build --sources=transitive tzdata
-Folgende Ableitungen werden erstellt:
-   /gnu/store/@dots{}-tzcode2015b.tar.gz.drv
-   /gnu/store/@dots{}-findutils-4.4.2.tar.xz.drv
-   /gnu/store/@dots{}-grep-2.21.tar.xz.drv
-   /gnu/store/@dots{}-coreutils-8.23.tar.xz.drv
-   /gnu/store/@dots{}-make-4.1.tar.xz.drv
-   /gnu/store/@dots{}-bash-4.3.tar.xz.drv
address@hidden
address@hidden example
-
address@hidden table
-
address@hidden address@hidden
address@hidden -s @var{System}
-Versuchen, für die angegebene Art von @var{System} geeignete Binärdateien zu
-erstellen — z.B.@: @code{i686-linux} — statt für die Art von System, das die
-Erstellung durchführt.
-
address@hidden Anmerkung
-Die Befehlszeilenoption @code{--system} dient der @emph{nativen}
-Kompilierung (nicht zu verwechseln mit Cross-Kompilierung). Siehe
address@hidden unten für Informationen zur Cross-Kompilierung.
address@hidden quotation
-
-Ein Beispiel sind Linux-basierte Systeme, die verschiedene Persönlichkeiten
-emulieren können. Zum Beispiel können Sie @code{--system=i686-linux} auf
-einem @code{x86_64-linux}-System oder @code{--system=armhf-linux} auf einem
address@hidden angeben, um Pakete in einer vollständigen
-32-Bit-Umgebung zu erstellen.
-
address@hidden Anmerkung
-Das Erstellen für ein @code{armhf-linux}-System ist ungeprüft auf allen
address@hidden aktiviert, obwohl bestimmte aarch64-Chipsätze
-diese Funktionalität nicht unterstützen, darunter auch ThunderX.
address@hidden quotation
-
-Ebenso können Sie, wenn transparente Emulation mit QEMU und
address@hidden aktiviert sind (siehe @ref{Virtualisierungsdienste,
address@hidden), für jedes System Erstellungen
-durchführen, für das ein address@hidden installiert ist.
-
-Erstellungen für ein anderes System, das nicht dem System der Maschine, die
-Sie benutzen, entspricht, können auch auf eine entfernte Maschine mit der
-richtigen Architektur ausgelagert werden. Siehe @ref{Auslagern des Daemons 
einrichten}
-für mehr Informationen über das Auslagern.
-
address@hidden address@hidden
address@hidden Cross-Kompilieren
-Lässt für das angegebene @var{Tripel} cross-erstellen, dieses muss ein
-gültiges GNU-Tripel wie z.B.@: @code{"mips64el-linux-gnu"} sein (siehe
address@hidden target triplets, GNU configuration triplets,, autoconf,
-Autoconf}).
-
address@hidden
address@hidden --check
address@hidden Determinismus, Überprüfung
address@hidden Reproduzierbarkeit, Überprüfung
address@hidden erneut erstellen, wenn diese bereits im Store
-verfügbar ist, und einen Fehler melden, wenn die Erstellungsergebnisse nicht
-Bit für Bit identisch sind.
-
-Mit diesem Mechanismus können Sie überprüfen, ob zuvor installierte
-Substitute unverfälscht sind (siehe @ref{Substitute}) oder auch ob das
-Erstellungsergebnis eines Pakets deterministisch ist. Siehe @ref{Aufruf von 
guix challenge} für mehr Hintergrundinformationen und Werkzeuge.
-
-Wenn dies zusammen mit @option{--keep-failed} benutzt wird, bleiben die sich
-unterscheidenden Ausgaben im Store unter dem Namen
address@hidden/gnu/store/@dots{}-check}. Dadurch können Unterschiede zwischen 
den
-beiden Ergebnissen leicht erkannt werden.
-
address@hidden --repair
address@hidden Reparieren von Store-Objekten
address@hidden Datenbeschädigung, Behebung
-Versuchen, die angegebenen Store-Objekte zu reparieren, wenn sie beschädigt
-sind, indem sie neu heruntergeladen oder neu erstellt werden.
-
-Diese Operation ist nicht atomar und nur der Administratornutzer @code{root}
-kann sie verwenden.
-
address@hidden --derivations
address@hidden -d
-Liefert die Ableitungspfade und @emph{nicht} die Ausgabepfade für die
-angegebenen Pakete.
-
address@hidden address@hidden
address@hidden -r @var{Datei}
address@hidden GC-Wurzeln, Hinzufügen
address@hidden Müllsammlerwurzeln, Hinzufügen
-Die @var{Datei} zu einer symbolischen Verknüpfung auf das Ergebnis machen
-und als Müllsammlerwurzel registrieren.
-
-Dadurch wird das Ergebnis dieses Aufrufs von @command{guix build} vor dem
-Müllsammler geschützt, bis die @var{Datei} gelöscht wird. Wird diese
-Befehlszeilenoption @emph{nicht} angegeben, können Erstellungsergebnisse vom
-Müllsammler geholt werden, sobald die Erstellung abgeschlossen ist. Siehe
address@hidden von guix gc} für mehr Informationen zu Müllsammlerwurzeln.
-
address@hidden --log-file
address@hidden Erstellungsprotokolle, Zugriff
-Liefert die Dateinamen oder URLs der Erstellungsprotokolle für das
-angegebene @var{Paket-oder-Ableitung} oder meldet einen Fehler, falls
-Protokolldateien fehlen.
-
-Dies funktioniert, egal wie die Pakete oder Ableitungen angegeben
-werden. Zum Beispiel sind folgende Aufrufe alle äquivalent:
-
address@hidden
-guix build --log-file `guix build -d guile`
-guix build --log-file `guix build guile`
-guix build --log-file guile
-guix build --log-file -e '(@@ (gnu packages guile) guile-2.0)'
address@hidden example
-
-Wenn ein Protokoll lokal nicht verfügbar ist und sofern
address@hidden nicht übergeben wurde, sucht der Befehl nach einem
-entsprechenden Protokoll auf einem der Substitutserver (die mit
address@hidden angegeben werden können).
-
-Stellen Sie sich zum Beispiel vor, sie wollten das Erstellungsprotokoll von
-GDB auf einem MIPS-System sehen, benutzen aber selbst eine
address@hidden:
-
address@hidden
-$ guix build --log-file gdb -s mips64el-linux
-https://@value{SUBSTITUTE-SERVER}/log/@dots{}-gdb-7.10
address@hidden example
-
-So haben Sie umsonst Zugriff auf eine riesige Bibliothek von
-Erstellungsprotokollen!
address@hidden table
-
address@hidden Fehlschläge beim Erstellen untersuchen
address@hidden Fehlschläge beim Erstellen untersuchen
-
address@hidden Erstellungsfehler, Fehlersuche
-Wenn Sie ein neues Paket definieren (siehe @ref{Pakete definieren}), werden
-Sie sich vermutlich einige Zeit mit der Fehlersuche beschäftigen und die
-Erstellung so lange anpassen, bis sie funktioniert. Dazu müssen Sie die
-Erstellungsbefehle selbst in einer Umgebung benutzen, die der, die der
-Erstellungsdaemon aufbaut, so ähnlich wie möglich ist.
-
-Das Erste, was Sie dafür tun müssen, ist die Befehlszeilenoption
address@hidden oder @option{-K} von @command{guix build}
-einzusetzen, wodurch Verzeichnisbäume fehlgeschlagener Erstellungen in
address@hidden/tmp} oder dem von Ihnen als @code{TMPDIR} ausgewiesenen 
Verzeichnis
-erhalten und nicht gelöscht werden (siehe @ref{Aufruf von guix build,
address@hidden).
-
-Im Anschluss können Sie mit @command{cd} in die Verzeichnisse dieses
-fehlgeschlagenen Erstellungsbaums wechseln und mit @command{source} dessen
address@hidden laden, die alle
-Umgebungsvariablendefinitionen enthält, die zum Zeitpunkt des Fehlschlags
-der Erstellung galten. Sagen wir, Sie suchen Fehler in einem Paket
address@hidden, dann würde eine typische Sitzung so aussehen:
-
address@hidden
-$ guix build foo -K
address@hidden @i{build fails}
-$ cd /tmp/guix-build-foo.drv-0
-$ source ./environment-variables
-$ cd foo-1.2
address@hidden example
-
-Nun können Sie Befehle (fast) so aufrufen, als wären Sie der Daemon, und
-Fehlerursachen in Ihrem Erstellungsprozess ermitteln.
-
-Manchmal passiert es, dass zum Beispiel die Tests eines Pakets erfolgreich
-sind, wenn Sie sie manuell aufrufen, aber scheitern, wenn der Daemon sie
-ausführt. Das kann passieren, weil der Daemon Erstellungen in isolierten
-Umgebungen (»Containern«) durchführt, wo, anders als in der obigen Umgebung,
-kein Netzwerkzugang möglich ist, @file{/bin/sh} nicht exisiert usw.@: (siehe
address@hidden der Erstellungsumgebung}).
-
-In solchen Fällen müssen Sie den Erstellungsprozess womöglich aus einer zu
-der des Daemons ähnlichen isolierten Umgebung heraus ausprobieren:
-
address@hidden
-$ guix build -K foo
address@hidden
-$ cd /tmp/guix-build-foo.drv-0
-$ guix environment --no-grafts -C foo --ad-hoc strace gdb
-[env]# source ./environment-variables
-[env]# cd foo-1.2
address@hidden example
-
-Hierbei erzeugt @command{guix environment -C} eine isolierte Umgebung und
-öffnet darin eine Shell (siehe @ref{Aufruf von guix environment}). Der Teil
-mit @command{--ad-hoc strace gdb} fügt die Befehle @command{strace} und
address@hidden zur isolierten Umgebung hinzu, die Sie gut gebrauchen könnten,
-während Sie Fehler suchen. Wegen der Befehlszeilenoption
address@hidden bekommen Sie haargenau dieselbe Umgebung ohne veredelte
-Pakete (siehe @ref{Sicherheitsaktualisierungen} für mehr Informationen zu
-Veredelungen).
-
-Um der isolierten Umgebung des Erstellungsdaemons noch näher zu kommen,
-können wir @file{/bin/sh} entfernen:
-
address@hidden
-[env]# rm /bin/sh
address@hidden example
-
-(Keine Sorge, das ist harmlos: All dies passiert nur in der zuvor von
address@hidden environment} erzeugten Wegwerf-Umgebung.)
-
-Der Befehl @command{strace} befindet sich wahrscheinlich nicht in Ihrem
-Suchpfad, aber wir können ihn so benutzen:
-
address@hidden
-[env]# $GUIX_ENVIRONMENT/bin/strace -f -o log make check
address@hidden example
-
-Auf diese Weise haben Sie nicht nur die Umgebungsvariablen, die der Daemon
-benutzt, nachgebildet, sondern lassen auch den Erstellungsprozess in einer
-isolierten Umgebung ähnlich der des Daemons laufen.
-
-
address@hidden Aufruf von guix edit
address@hidden @command{guix edit} aufrufen
-
address@hidden @command{guix edit}
address@hidden Paketdefinition, Bearbeiten
-So viele Pakete, so viele Quelldateien! Der Befehl @command{guix edit}
-erleichtert das Leben von sowohl Nutzern als auch Paketentwicklern, indem er
-Ihren Editor anweist, die Quelldatei mit der Definition des jeweiligen
-Pakets zu bearbeiten. Zum Beispiel startet dies:
-
address@hidden
-guix edit gcc@@4.9 vim
address@hidden example
-
address@hidden
-das mit der Umgebungsvariablen @code{VISUAL} ode @code{EDITOR} angegebene
-Programm und lässt es das Rezept von address@hidden und von Vim anzeigen.
-
-Wenn Sie ein Git-Checkout von Guix benutzen (siehe @ref{Erstellung aus dem 
Git})
-oder Ihre eigenen Pakete im @code{GUIX_PACKAGE_PATH} erstellt haben (siehe
address@hidden), werden Sie damit die Paketrezepte auch bearbeiten
-können. Andernfalls werden Sie zumindest in die Lage versetzt, die nur
-lesbaren Rezepte für sich im Moment im Store befindliche Pakete zu
-untersuchen.
-
-
address@hidden Aufruf von guix download
address@hidden @command{guix download} aufrufen
-
address@hidden @command{guix download}
address@hidden Paketquellcode herunterladen
-Wenn Entwickler einer Paketdefinition selbige schreiben, müssen diese
-normalerweise einen Quellcode-Tarball herunterladen, seinen SHA256-Hash als
-Prüfsumme berechnen und diese in der Paketdefinition eintragen (siehe
address@hidden definieren}). Das Werkzeug @command{guix download} hilft bei
-dieser Aufgabe: Damit wird eine Datei von der angegebenen URI
-heruntergeladen, in den Store eingelagert und sowohl ihr Dateiname im Store
-als auch ihr SHA256-Hash als Prüfsumme angezeigt.
-
-Dadurch, dass die heruntergeladene Datei in den Store eingefügt wird, wird
-Bandbreite gespart: Wenn der Entwickler schließlich versucht, das neu
-definierte Paket mit @command{guix build} zu erstellen, muss der
-Quell-Tarball nicht erneut heruntergeladen werden, weil er sich bereits im
-Store befindet. Es ist auch eine bequeme Methode, Dateien temporär
-aufzubewahren, die letztlich irgendwann gelöscht werden (siehe @ref{Aufruf von 
guix gc}).
-
-Der Befehl @command{guix download} unterstützt dieselben URIs, die in
-Paketdefinitionen verwendet werden. Insbesondere unterstützt er
address@hidden://}-URIs. @code{https}-URIs (HTTP über TLS) werden unterstützt,
address@hidden die Guile-Anbindungen für GnuTLS sind in der Umgebung
-des Benutzers verfügbar; wenn nicht, wird ein Fehler gemeldet. Siehe
address@hidden Preparations, how to install the GnuTLS bindings for Guile,,
-gnutls-guile, GnuTLS-Guile}, hat mehr Informationen.
-
-Mit @command{guix download} werden HTTPS-Serverzertifikate verifiziert,
-indem die Zertifikate der X.509-Autoritäten in das durch die
-Umgebungsvariable @code{SSL_CERT_DIR} bezeichnete Verzeichnis
-heruntergeladen werden (siehe @ref{X.509-Zertifikate}), außer
address@hidden wird benutzt.
-
-Folgende Befehlszeilenoptionen stehen zur Verfügung:
-
address@hidden @code
address@hidden address@hidden
address@hidden -f @var{Format}
-Die Hash-Prüfsumme im angegebenen @var{Format} ausgeben. Für weitere
-Informationen, was gültige Werte für das @var{Format} sind, siehe
address@hidden von guix hash}.
-
address@hidden --no-check-certificate
-X.509-Zertifikate von HTTPS-Servern @emph{nicht} validieren.
-
-Wenn Sie diese Befehlszeilenoption benutzen, haben Sie @emph{keinerlei
-Garantie}, dass Sie tatsächlich mit dem authentischen Server, der für die
-angegebene URL verantwortlich ist, kommunizieren. Das macht Sie anfällig
-gegen sogenannte »Man-in-the-Middle«-Angriffe.
-
address@hidden address@hidden
address@hidden -o @var{Datei}
-Die heruntergeladene Datei @emph{nicht} in den Store, sondern in die
-angegebene @var{Datei} abspeichern.
address@hidden table
-
address@hidden Aufruf von guix hash
address@hidden @command{guix hash} aufrufen
-
address@hidden @command{guix hash}
-Der Befehl @command{guix hash} berechnet den SHA256-Hash einer Datei. Er ist
-primär ein Werkzeug, dass es bequemer macht, etwas zur Distribution
-beizusteuern: Damit wird die kryptografische Hash-Prüfsumme berechnet, die
-bei der Definition eines Pakets benutzt werden kann (siehe @ref{Pakete 
definieren}).
-
-Die allgemeine Syntax lautet:
-
address@hidden
-guix hash @var{Option} @var{Datei}
address@hidden example
-
-Wird als @var{Datei} ein Bindestrich @code{-} angegeben, berechnet
address@hidden hash} den Hash der von der Standardeingabe gelesenen
-Daten. @command{guix hash} unterstützt die folgenden Optionen:
-
address@hidden @code
-
address@hidden address@hidden
address@hidden -f @var{Format}
-Gibt die Prüfsumme im angegebenen @var{Format} aus.
-
-Unterstützte Formate: @code{nix-base32}, @code{base32}, @code{base16}
-(@code{hex} und @code{hexadecimal} können auch benutzt werden).
-
-Wird keine Befehlszeilenoption @option{--format} angegeben, wird
address@hidden hash} die Prüfsumme im @code{nix-base32}-Format
-ausgeben. Diese Darstellung wird bei der Definition von Paketen benutzt.
-
address@hidden --recursive
address@hidden -r
-Die Prüfsumme der @var{Datei} rekursiv berechnen.
-
address@hidden FIXME: Replace xref above with xref to an ``Archive'' section 
when
address@hidden it exists.
-In diesem Fall wird die Prüfsumme eines Archivs berechnet, das die
address@hidden enthält, und auch ihre Kinder, wenn es sich um ein Verzeichnis
-handelt. Einige der Metadaten der @var{Datei} sind Teil dieses Archivs. Zum
-Beispiel unterscheidet sich die berechnete Prüfsumme, wenn die @var{Datei}
-eine reguläre Datei ist, je nachdem, ob die @var{Datei} ausführbar ist oder
-nicht. Metadaten wie der Zeitstempel haben keinen Einfluss auf die Prüfsumme
-(siehe @ref{Aufruf von guix archive}).
-
address@hidden --exclude-vcs
address@hidden -x
-Wenn dies zusammen mit der Befehlszeilenoption @option{--recursive}
-angegeben wird, werden Verzeichnisse zur Versionskontrolle (@file{.bzr},
address@hidden, @file{.hg}, etc.)@: vom Archiv ausgenommen.
-
address@hidden git-fetch
-Zum Beispiel würden Sie auf diese Art die Prüfsumme eines Git-Checkouts
-berechnen, was nützlich ist, wenn Sie die Prüfsumme für die Methode
address@hidden benutzen (siehe @ref{»origin«-Referenz}):
-
address@hidden
-$ git clone http://example.org/foo.git
-$ cd foo
-$ guix hash -rx .
address@hidden example
address@hidden table
-
address@hidden Aufruf von guix import
address@hidden @command{guix import} aufrufen
-
address@hidden Pakete importieren
address@hidden Paketimport
address@hidden Pakete an Guix anpassen
address@hidden @command{guix import} aufrufen
-Der Befehl @command{guix import} ist für Leute hilfreich, die ein Paket
-gerne mit so wenig Arbeit wie möglich zur Distribution hinzufügen würden —
-ein legitimer Anspruch. Der Befehl kennt ein paar Sammlungen, aus denen mit
-ihm Paketmetadaten »importiert« werden können. Das Ergebnis ist eine
-Paketdefinition oder eine Vorlage dafür in dem uns bekannten Format (siehe
address@hidden definieren}).
-
-Die allgemeine Syntax lautet:
-
address@hidden
-guix import @var{Importer} @address@hidden
address@hidden example
-
-Der @var{Importer} gibt die Quelle an, aus der Paketmetadaten importiert
-werden, und die @var{Optionen} geben eine Paketbezeichnung und andere vom
address@hidden abhängige Daten an. Derzeit sind folgende »Importer«
-verfügbar:
-
address@hidden @code
address@hidden gnu
-Metadaten für das angegebene GNU-Paket importieren. Damit wird eine Vorlage
-für die neueste Version dieses GNU-Pakets zur Verfügung gestellt,
-einschließlich der Prüfsumme seines Quellcode-Tarballs, seiner kanonischen
-Zusammenfassung und seiner Beschreibung.
-
-Zusätzliche Informationen wie Paketabhängigkeiten und seine Lizenz müssen
-noch manuell ermittelt werden.
-
-Zum Beispiel liefert der folgende Befehl eine Paketdefinition für
address@hidden:
-
address@hidden
-guix import gnu hello
address@hidden example
-
-Speziell für diesen Importer stehen noch folgende Befehlszeilenoptionen zur
-Verfügung:
-
address@hidden @code
address@hidden address@hidden
-Die Richtlinie zum Umgang mit fehlenden OpenPGP-Schlüsseln beim Verifizieren
-der Paketsignatur (auch »Beglaubigung« genannt) festlegen, wie bei
address@hidden refresh}. Siehe @ref{Aufruf von guix refresh,
address@hidden
address@hidden table
-
address@hidden pypi
address@hidden pypi
-Metadaten aus dem @uref{https://pypi.python.org/, Python Package Index}
-importieren. Informationen stammen aus der JSON-formatierten Beschreibung,
-die unter @code{pypi.python.org} verfügbar ist, und enthalten meistens alle
-relevanten Informationen einschließlich der Abhängigkeiten des Pakets. Für
-maximale Effizienz wird empfohlen, das Hilfsprogramm @command{unzip} zu
-installieren, damit der Importer »Python Wheels« entpacken und daraus Daten
-beziehen kann.
-
-Der folgende Befehl importiert Metadaten für das Python-Paket namens
address@hidden:
-
address@hidden
-guix import pypi itsdangerous
address@hidden example
-
address@hidden @code
address@hidden --recursive
address@hidden -r
-Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv
-durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in
-Guix noch nicht gibt.
address@hidden table
-
address@hidden gem
address@hidden gem
-Metadaten von @uref{https://rubygems.org/, RubyGems}
-importieren. Informationen kommen aus der JSON-formatierten Beschreibung,
-die auf @code{rubygems.org} verfügbar ist, und enthält die relevantesten
-Informationen einschließlich der Laufzeitabhängigkeiten. Dies hat aber auch
-Schattenseiten — die Metadaten unterscheiden nicht zwischen
-Zusammenfassungen und Beschreibungen, daher wird dieselbe Zeichenkette für
-beides eingesetzt. Zudem fehlen Informationen zu nicht in Ruby geschriebenen
-Abhängigkeiten, die benötigt werden, um native Erweiterungen zu in Ruby
-geschriebenem Code zu erstellen. Diese herauszufinden bleibt dem
-Paketentwickler überlassen.
-
-Der folgende Befehl importiert Metadaten aus dem Ruby-Paket @code{rails}.
-
address@hidden
-guix import gem rails
address@hidden example
-
address@hidden @code
address@hidden --recursive
address@hidden -r
-Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv
-durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in
-Guix noch nicht gibt.
address@hidden table
-
address@hidden cpan
address@hidden CPAN
-Importiert Metadaten von @uref{https://www.metacpan.org/,
-MetaCPAN}. Informationen werden aus den JSON-formatierten Metadaten
-genommen, die über die @uref{https://fastapi.metacpan.org/,
-Programmierschnittstelle (»API«) von MetaCPAN} angeboten werden, und
-enthalten die relevantesten Informationen wie zum Beispiel
-Modulabhängigkeiten. Lizenzinformationen sollten genau nachgeprüft
-werden. Wenn Perl im Store verfügbar ist, wird das Werkzeug @code{corelist}
-benutzt, um Kernmodule in der Abhängigkeitsliste wegzulassen.
-
-Folgender Befehl importiert Metadaten für das Perl-Modul
address@hidden::Boolean}:
-
address@hidden
-guix import cpan Acme::Boolean
address@hidden example
-
address@hidden cran
address@hidden CRAN
address@hidden Bioconductor
-Metadaten aus dem @uref{https://cran.r-project.org/, CRAN} importieren, der
-zentralen Sammlung für die @uref{http://r-project.org, statistische und
-grafische Umgebung address@hidden
-
-Informationen werden aus der Datei namens @code{DESCRIPTION} des Pakets
-extrahiert.
-
-Der folgende Befehl importiert Metadaten für das @code{Cairo}-R-Paket:
-
address@hidden
-guix import cran Cairo
address@hidden example
-
-Wird zudem @code{--recursive} angegeben, wird der Importer den
-Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv
-durchlaufen und Paketausdrücke für all die Pakete erzeugen, die noch nicht
-Teil von Guix sind.
-
-Wird @code{--archive=bioconductor} angegeben, werden Metadaten vom
address@hidden://www.bioconductor.org/, Bioconductor} importiert, einer
-Sammlung von R-Paketen zur Analyse und zum Verständnis von großen Mengen
-genetischer Daten in der Bioinformatik.
-
-Informationen werden aus der @code{DESCRIPTION}-Datei im Paket extrahiert,
-das auf der Weboberfläche des Bioconductor-SVN-Repositorys veröffentlicht
-wurde.
-
-Der folgende Befehl importiert Metadaten für das R-Paket
address@hidden:
-
address@hidden
-guix import cran --archive=bioconductor GenomicRanges
address@hidden example
-
address@hidden texlive
address@hidden TeX Live
address@hidden CTAN
-Metadaten aus @uref{http://www.ctan.org/, CTAN}, dem umfassenden
-TeX-Archivnetzwerk, herunterladen, was für TeX-Pakete benutzt wird, die Teil
-der @uref{https://www.tug.org/texlive/, TeX-Live-Distribution} sind.
-
-Informationen über das Paket werden über die von CTAN angebotene
-XML-Programmierschnittstelle bezogen, wohingegen der Quellcode aus dem
-SVN-Repository des TeX-Live-Projekts heruntergeladen wird. Das wird so
-gemacht, weil CTAN keine versionierten Archive vorhält.
-
-Der folgende Befehl importiert Metadaten für das TeX-Paket @code{fontspec}:
-
address@hidden
-guix import texlive fontspec
address@hidden example
-
-Wenn @code{--archive=VERZEICHNIS} angegeben wird, wird der Quellcode
address@hidden aus dem Unterverzeichnis @file{latex} des
address@hidden/source}-Baums im SVN-Repository von TeX Live
-heruntergeladen, sondern aus dem angegebenen Schwesterverzeichnis im selben
-Wurzelverzeichnis.
-
-Der folgende Befehl importiert Metadaten für das Paket @code{ifxetex} aus
-CTAN und lädt die Quelldateien aus dem Verzeichnis
address@hidden/source/generic}:
-
address@hidden
-guix import texlive --archive=generic ifxetex
address@hidden example
-
address@hidden json
address@hidden JSON, Import
-Paketmetadaten aus einer lokalen JSON-Datei importieren. Betrachten Sie
-folgende Beispiel-Paketdefinition im JSON-Format:
-
address@hidden
address@hidden
-  "name": "hello",
-  "version": "2.10",
-  "source": "mirror://gnu/hello/hello-2.10.tar.gz",
-  "build-system": "gnu",
-  "home-page": "https://www.gnu.org/software/hello/";,
-  "synopsis": "Hello, GNU world: An example GNU package",
-  "description": "GNU Hello prints a greeting.",
-  "license": "GPL-3.0+",
-  "native-inputs": ["gcc@@6"]
address@hidden
address@hidden example
-
-Die Felder sind genauso benannt wie bei einem @code{<package>}-Verbundstyp
-(siehe @ref{Pakete definieren}). Referenzen zu anderen Paketen stehen darin
-als JSON-Liste von mit Anführungszeichen quotierten Zeichenketten wie
address@hidden oder @code{guile@@2.0}.
-
-Der Importer unterstützt auch eine ausdrücklichere Definition der
-Quelldateien mit den üblichen Feldern eines @code{<origin>}-Verbunds:
-
address@hidden
address@hidden
-  @dots{}
-  "source": @{
-    "method": "url-fetch",
-    "uri": "mirror://gnu/hello/hello-2.10.tar.gz",
-    "sha256": @{
-      "base32": "0ssi1wpaf7plaswqqjwigppsg5fyh99vdlb9kzl7c9lng89ndq1i"
-    @}
-  @}
-  @dots{}
address@hidden
address@hidden example
-
-Der folgende Befehl liest Metadaten aus der JSON-Datei @code{hello.json} und
-gibt einen Paketausdruck aus:
-
address@hidden
-guix import json hello.json
address@hidden example
-
address@hidden nix
-Metadaten aus einer lokalen Kopie des Quellcodes der
address@hidden://nixos.org/nixpkgs/, Nixpkgs-Distribution}
address@hidden wird der Befehl @command{nix-instantiate} von
address@hidden://nixos.org/nix/, Nix} verwendet.}. Paketdefinitionen in Nixpkgs
-werden typischerweise in einer Mischung aus der Sprache von Nix und aus
-Bash-Code geschrieben. Dieser Befehl wird nur die abstrakte Paketstruktur,
-die in der Nix-Sprache geschrieben ist, importieren. Dazu gehören
-normalerweise alle grundlegenden Felder einer Paketdefinition.
-
-Beim Importieren eines GNU-Pakets werden Zusammenfassung und Beschreibung
-stattdessen durch deren kanonische Variante bei GNU ersetzt.
-
-Normalerweise würden Sie zunächst dies ausführen:
-
address@hidden
-export NIX_REMOTE=daemon
address@hidden example
-
address@hidden
-damit @command{nix-instantiate} nicht versucht, die Nix-Datenbank zu öffnen.
-
-Zum Beispiel importiert der Befehl unten die Paketdefinition von LibreOffice
-(genauer gesagt importiert er die Definition des an das Attribut
address@hidden auf oberster Ebene gebundenen Pakets):
-
address@hidden
-guix import nix ~/path/to/nixpkgs libreoffice
address@hidden example
-
address@hidden hackage
address@hidden hackage
-Metadaten aus @uref{https://hackage.haskell.org/, Hackage}, dem zentralen
-Paketarchiv der Haskell-Gemeinde, importieren. Informationen werden aus
-Cabal-Dateien ausgelesen. Darin sind alle relevanten Informationen
-einschließlich der Paketabhängigkeiten enthalten.
-
-Speziell für diesen Importer stehen noch folgende Befehlszeilenoptionen zur
-Verfügung:
-
address@hidden @code
address@hidden --stdin
address@hidden -s
-Eine Cabal-Datei von der Standardeingabe lesen.
address@hidden --no-test-dependencies
address@hidden -t
-Keine Abhängigkeiten übernehmen, die nur von Testkatalogen benötigt werden.
address@hidden address@hidden
address@hidden -e @var{Aliste}
address@hidden muss eine assoziative Liste der Scheme-Programmiersprache sein,
-die die Umgebung definiert, in der bedingte Ausdrücke von Cabal ausgewertet
-werden. Dabei werden folgende Schlüssel akzeptiert: @code{os}, @code{arch},
address@hidden und eine Zeichenkette, die dem Namen einer Option (einer »Flag«)
-entspricht. Der mit einer »Flag« assoziierte Wert muss entweder das Symbol
address@hidden oder @code{false} sein. Der anderen Schlüsseln zugeordnete Wert
-muss mit der Definition des Cabal-Dateiformats konform sein. Der vorgegebene
-Wert zu den Schlüsseln @code{os}, @code{arch} and @code{impl} ist jeweils
address@hidden, @samp{x86_64} bzw. @samp{ghc}.
address@hidden --recursive
address@hidden -r
-Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv
-durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in
-Guix noch nicht gibt.
address@hidden table
-
-Der folgende Befehl importiert Metadaten für die neuste Version des
address@hidden, ohne Testabhängigkeiten zu übernehmen und bei
-Übergabe von @code{false} als Wert der Flag @samp{network-uri}:
-
address@hidden
-guix import hackage -t -e "'((\"network-uri\" . false))" HTTP
address@hidden example
-
-Eine ganz bestimmte Paketversion kann optional ausgewählt werden, indem man
-nach dem Paketnamen anschließend ein At-Zeichen und eine Versionsnummer
-angibt wie in folgendem Beispiel:
-
address@hidden
-guix import hackage mtl@@2.1.3.1
address@hidden example
-
address@hidden stackage
address@hidden stackage
-Der @code{stackage}-Importer ist ein Wrapper um den
address@hidden Er nimmt einen Paketnamen und schaut dafür die
-Paketversion nach, die Teil einer @uref{https://www.stackage.org,
-Stackage}-Veröffentlichung mit Langzeitunterstützung (englisch »Long-Term
-Support«, kurz LTS) ist, deren Metadaten er dann mit dem
address@hidden bezieht. Beachten Sie, dass es Ihre Aufgabe ist,
-eine LTS-Veröffentlichung auszuwählen, die mit dem von Guix benutzten
-GHC-Compiler kompatibel ist.
-
-Speziell für diesen Importer stehen noch folgende Befehlszeilenoptionen zur
-Verfügung:
-
address@hidden @code
address@hidden --no-test-dependencies
address@hidden -t
-Keine Abhängigkeiten übernehmen, die nur von Testkatalogen benötigt werden.
address@hidden address@hidden
address@hidden -l @var{Version}
address@hidden ist die gewünschte Version der LTS-Veröffentlichung. Wird
-keine angegeben, wird die neueste benutzt.
address@hidden --recursive
address@hidden -r
-Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv
-durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in
-Guix noch nicht gibt.
address@hidden table
-
-Der folgende Befehl importiert Metadaten für dasjenige
address@hidden, das in der LTS-Stackage-Veröffentlichung mit
-Version 7.18 vorkommt:
-
address@hidden
-guix import stackage --lts-version=7.18 HTTP
address@hidden example
-
address@hidden elpa
address@hidden elpa
-Metadaten aus der Paketsammlung »Emacs Lisp Package Archive« (ELPA)
-importieren (siehe @ref{Packages,,, emacs, The GNU Emacs Manual}).
-
-Speziell für diesen Importer stehen noch folgende Befehlszeilenoptionen zur
-Verfügung:
-
address@hidden @code
address@hidden address@hidden
address@hidden -a @var{Repo}
-Mit @var{Repo} wird die Archiv-Sammlung (ein »Repository«) bezeichnet, von
-dem die Informationen bezogen werden sollen. Derzeit sind die unterstützten
-Repositorys und ihre Bezeichnungen folgende:
address@hidden -
address@hidden
address@hidden://elpa.gnu.org/packages, GNU}, bezeichnet mit @code{gnu}. Dies
-ist die Vorgabe.
-
-Pakete aus @code{elpa.gnu.org} wurden mit einem der Schlüssel im
-GnuPG-Schlüsselbund in @file{share/emacs/25.1/etc/package-keyring.gpg} (oder
-einem ähnlichen Pfad) des @code{emacs}-Pakets signiert (siehe @ref{Package
-Installation, ELPA package signatures,, emacs, The GNU Emacs Manual}).
-
address@hidden
address@hidden://stable.melpa.org/packages, MELPA-Stable}, bezeichnet mit
address@hidden
-
address@hidden
address@hidden://melpa.org/packages, MELPA}, bezeichnet mit @code{melpa}.
address@hidden itemize
-
address@hidden --recursive
address@hidden -r
-Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv
-durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in
-Guix noch nicht gibt.
address@hidden table
-
address@hidden crate
address@hidden crate
-Metadaten aus der Paketsammlung crates.io für Rust importieren
address@hidden://crates.io, crates.io}.
-
address@hidden opam
address@hidden OPAM
address@hidden OCaml
-Metadaten aus der Paketsammlung @uref{https://opam.ocaml.org/, OPAM} der
-OCaml-Gemeinde importieren.
address@hidden table
-
address@hidden import} verfügt über eine modulare Code-Struktur. Mehr
-Importer für andere Paketformate zu haben, wäre nützlich, und Ihre Hilfe ist
-hierbei gerne gesehen (siehe @ref{Mitwirken}).
-
address@hidden Aufruf von guix refresh
address@hidden @command{guix refresh} aufrufen
-
address@hidden @command{guix refresh}
-Die Zielgruppe des Befehls @command{guix refresh} zum Auffrischen von
-Paketen sind in erster Linie Entwickler der GNU-Software-Distribution. Nach
-Vorgabe werden damit alle Pakete in der Distribution gemeldet, die nicht der
-neuesten Version des Anbieters entsprechen, indem Sie dies ausführen:
-
address@hidden
-$ guix refresh
-gnu/packages/gettext.scm:29:13: gettext would be upgraded from 0.18.1.1 to 
0.18.2.1
-gnu/packages/glib.scm:77:12: glib would be upgraded from 2.34.3 to 2.37.0
address@hidden example
-
-Alternativ können die zu betrachtenden Pakete dabei angegeben werden, was
-zur Ausgabe einer Warnung führt, wenn es für Pakete kein
-Aktualisierungsprogramm gibt:
-
address@hidden
-$ guix refresh coreutils guile guile-ssh
-gnu/packages/ssh.scm:205:2: warning: no updater for guile-ssh
-gnu/packages/guile.scm:136:12: guile would be upgraded from 2.0.12 to 2.0.13
address@hidden example
-
address@hidden refresh} durchsucht die Paketsammlung beim Anbieter jedes
-Pakets und bestimmt, was die höchste Versionsnummer ist, zu der es dort eine
-Veröffentlichung gibt. Zum Befehl gehören Aktualisierungsprogramme, mit
-denen bestimmte Typen von Paketen automatisch aktualisiert werden können:
-GNU-Pakete, ELPA-Pakete usw.@: — siehe die Dokumentation von @option{--type}
-unten. Es gibt jedoch auch viele Pakete, für die noch keine Methode
-enthalten ist, um das Vorhandensein einer neuen Veröffentlichung zu
-prüfen. Der Mechanismus ist aber erweiterbar, also können Sie gerne mit uns
-in Kontakt treten, wenn Sie eine neue Methode hinzufügen möchten!
-
address@hidden @code
-
address@hidden --recursive
-Consider the packages specified, and all the packages upon which they
-depend.
-
address@hidden
-$ guix refresh --recursive coreutils
-gnu/packages/acl.scm:35:2: warning: no updater for acl
-gnu/packages/m4.scm:30:12: info: 1.4.18 is already the latest version of m4
-gnu/packages/xml.scm:68:2: warning: no updater for expat
-gnu/packages/multiprecision.scm:40:12: info: 6.1.2 is already the latest 
version of gmp
address@hidden
address@hidden example
-
address@hidden table
-
-Manchmal unterscheidet sich der vom Anbieter benutzte Name von dem
-Paketnamen, der in Guix verwendet wird, so dass @command{guix refresh} etwas
-Unterstützung braucht. Die meisten Aktualisierungsprogramme folgen der
-Eigenschaft @code{upstream-name} in Paketdefinitionen, die diese
-Unterstützung bieten kann.
-
address@hidden
-(define-public network-manager
-  (package
-    (name "network-manager")
-    ;; @dots{}
-    (properties '((upstream-name . "NetworkManager")))))
address@hidden example
-
-Wenn @code{--update} übergeben wird, werden die Quelldateien der
-Distribution verändert, so dass für diese Paketrezepte die aktuelle Version
-und die aktuelle Hash-Prüfsumme des Quellcode-Tarballs eingetragen wird
-(siehe @ref{Pakete definieren}). Dazu werden der neueste Quellcode-Tarball
-jedes Pakets sowie die jeweils zugehörige OpenPGP-Signatur heruntergeladen;
-mit Letzterer wird der heruntergeladene Tarball gegen seine Signatur mit
address@hidden authentifiziert und schließlich dessen Hash berechnet. Wenn
-der öffentliche Schlüssel, mit dem der Tarball signiert wurde, im
-Schlüsselbund des Benutzers fehlt, wird versucht, ihn automatisch von einem
-Schlüssel-Server zu holen; wenn das klappt, wird der Schlüssel zum
-Schlüsselbund des Benutzers hinzugefügt, ansonsten meldet @command{guix
-refresh} einen Fehler.
-
-Die folgenden Befehlszeilenoptionen werden unterstützt:
-
address@hidden @code
-
address@hidden address@hidden
address@hidden -e @var{Ausdruck}
-Als Paket benutzen, wozu der @var{Ausdruck} ausgewertet wird.
-
-Dies ist nützlich, um genau ein bestimmtes Paket zu referenzieren, wie in
-diesem Beispiel:
-
address@hidden
-guix refresh -l -e '(@@@@ (gnu packages commencement) glibc-final)'
address@hidden example
-
-Dieser Befehls listet auf, was alles von der »endgültigen« Erstellung von
-libc abhängt (praktisch alle Pakete).
-
address@hidden --update
address@hidden -u
-Die Quelldateien der Distribution (die Paketrezepte) werden direkt »in
-place« verändert. Normalerweise führen Sie dies aus einem Checkout des
-Guix-Quellbaums heraus aus (siehe @ref{Guix vor der Installation ausführen}):
-
address@hidden
-$ ./pre-inst-env guix refresh -s non-core -u
address@hidden example
-
-Siehe @ref{Pakete definieren} für mehr Informationen zu Paketdefinitionen.
-
address@hidden address@hidden
address@hidden -s @var{Teilmenge}
-Wählt alle Pakete aus der @var{Teilmenge} aus, die entweder @code{core} oder
address@hidden sein muss.
-
-Die @code{core}-Teilmenge bezieht sich auf alle Pakete, die den Kern der
-Distribution ausmachen, d.h.@: Pakete, aus denen heraus »alles andere«
-erstellt wird. Dazu gehören GCC, libc, Binutils, Bash und so weiter. In der
-Regel ist die Folge einer Änderung an einem dieser Pakete in der
-Distribution, dass alle anderen neu erstellt werden müssen. Daher sind
-solche Änderungen unangenehm für Nutzer, weil sie einiges an Erstellungszeit
-oder Bandbreite investieren müssen, um die Aktualisierung abzuschließen.
-
-Die @code{non-core}-Teilmenge bezieht sich auf die übrigen Pakete. Sie wird
-typischerweise dann benutzt, wenn eine Aktualisierung der Kernpakete zu
-viele Umstände machen würde.
-
address@hidden address@hidden
address@hidden -m @var{Datei}
-Wählt alle Pakete im in der @var{Datei} stehenden Manifest aus. Das ist
-nützlich, um zu überprüfen, welche Pakete aus dem Manifest des Nutzers
-aktualisiert werden können.
-
address@hidden address@hidden
address@hidden -t @var{Aktualisierungsprogramm}
-Nur solche Pakete auswählen, die vom angegebenen
address@hidden behandelt werden. Es darf auch eine
-kommagetrennte Liste mehrerer Aktualisierungsprogramme angegeben werden. Zur
-Zeit kann als @var{Aktualisierungsprogramm} eines der folgenden angegeben
-werden:
-
address@hidden @code
address@hidden gnu
-Aktualisierungsprogramm für GNU-Pakete,
address@hidden gnome
-Aktualisierungsprogramm für GNOME-Pakete,
address@hidden kde
-Aktualisierungsprogramm für KDE-Pakete,
address@hidden xorg
-Aktualisierungsprogramm für X.org-Pakete,
address@hidden kernel.org
-Aktualisierungsprogramm auf kernel.org angebotener Pakete,
address@hidden elpa
-Aktualisierungsprogramm für @uref{http://elpa.gnu.org/, ELPA-Pakete},
address@hidden cran
-Aktualisierungsprogramm für @uref{https://cran.r-project.org/, CRAN-Pakete},
address@hidden bioconductor
-Aktualisierungsprogramm für R-Pakete vom
address@hidden://www.bioconductor.org/, Bioconductor},
address@hidden cpan
-Aktualisierungsprogramm für @uref{http://www.cpan.org/, CPAN-Pakete},
address@hidden pypi
-Aktualisierungsprogramm für @uref{https://pypi.python.org, PyPI-Pakete},
address@hidden gem
-Aktualisierungsprogramm für @uref{https://rubygems.org, RubyGems-Pakete}.
address@hidden github
-Aktualisierungsprogramm für @uref{https://github.com, GitHub-Pakete}.
address@hidden hackage
-Aktualisierungsprogramm für @uref{https://hackage.haskell.org,
-Hackage-Pakete}.
address@hidden stackage
-Aktualisierungsprogramm für @uref{https://www.stackage.org,
-Stackage-Pakete}.
address@hidden crate
-Aktualisierungsprogramm für @uref{https://crates.io, Crates-Pakete}.
address@hidden launchpad
-Aktualisierungsprogramm für @uref{https://launchpad.net, Launchpad}.
address@hidden table
-
-Zum Beispiel prüft folgender Befehl nur auf mögliche Aktualisierungen von
-auf @code{elpa.gnu.org} angebotenen Emacs-Paketen und von CRAN-Paketen:
-
address@hidden
-$ guix refresh --type=elpa,cran
-gnu/packages/statistics.scm:819:13: r-testthat would be upgraded from 0.10.0 
to 0.11.0
-gnu/packages/emacs.scm:856:13: emacs-auctex would be upgraded from 11.88.6 to 
11.88.9
address@hidden example
-
address@hidden table
-
-An @command{guix refresh} können auch ein oder mehrere Paketnamen übergeben
-werden wie in diesem Beispiel:
-
address@hidden
-$ ./pre-inst-env guix refresh -u emacs idutils gcc@@4.8
address@hidden example
-
address@hidden
-Der Befehl oben aktualisiert speziell das @code{emacs}- und das
address@hidden Eine Befehlszeilenoption @code{--select} hätte dann
-keine Wirkung.
-
-Wenn Sie sich fragen, ob ein Paket aktualisiert werden sollte oder nicht,
-kann es helfen, sich anzuschauen, welche Pakete von der Aktualisierung
-betroffen wären und auf Kompatibilität hin geprüft werden sollten. Dazu kann
-die folgende Befehlszeilenoption zusammen mit einem oder mehreren Paketnamen
-an @command{guix refresh} übergeben werden:
-
address@hidden @code
-
address@hidden --list-updaters
address@hidden -L
-Eine Liste verfügbarer Aktualisierungsprogramme anzeigen und terminieren
-(siehe @option{--type} oben).
-
-Für jedes Aktualisierungsprogramm den Anteil der davon betroffenen Pakete
-anzeigen; zum Schluss wird der Gesamtanteil von irgendeinem
-Aktualisierungsprogramm betroffener Pakete angezeigt.
-
address@hidden --list-dependent
address@hidden -l
-Auflisten, welche abhängigen Pakete auf oberster Ebene neu erstellt werden
-müssten, wenn eines oder mehrere Pakete aktualisiert würden.
-
-Siehe @ref{Aufruf von guix graph, den @code{reverse-package}-Typ von
address@hidden graph}} für Informationen dazu, wie Sie die Liste der
-Abhängigen eines Pakets visualisieren können.
-
address@hidden table
-
-Bedenken Sie, dass die Befehlszeilenoption @code{--list-dependent} das
-Ausmaß der nach einer Aktualisierungen benötigten Neuerstellungen nur
address@hidden Es könnten auch unter Umständen mehr Neuerstellungen
-anfallen.
-
address@hidden
-$ guix refresh --list-dependent flex
-Building the following 120 packages would ensure 213 dependent packages are 
rebuilt:
-hop@@2.4.0 geiser@@0.4 notmuch@@0.18 mu@@0.9.9.5 cflow@@1.4 idutils@@4.6 
@dots{}
address@hidden example
-
-Der oben stehende Befehl gibt einen Satz von Paketen aus, die Sie erstellen
-wollen könnten, um die Kompatibilität einer Aktualisierung des
address@hidden beurteilen zu können.
-
address@hidden @code
-
address@hidden --list-transitive
-Die Pakete auflisten, von denen eines oder mehrere Pakete abhängen.
-
address@hidden
-$ guix refresh --list-transitive flex
-flex@@2.6.4 depends on the following 25 packages: perl@@5.28.0 help2man@@1.47.6
-bison@@3.0.5 indent@@2.2.10 tar@@1.30 gzip@@1.9 bzip2@@1.0.6 xz@@5.2.4 
file@@5.33 @dots{}
address@hidden example
-
address@hidden table
-
-Der oben stehende Befehl gibt einen Satz von Paketen aus, die, wenn sie
-geändert würden, eine Neuerstellung des @code{flex}-Pakets auslösen würden.
-
-Mit den folgenden Befehlszeilenoptionen können Sie das Verhalten von GnuPG
-anpassen:
-
address@hidden @code
-
address@hidden address@hidden
-Den @var{Befehl} als GnuPG-2.x-Befehl einsetzen. Der @var{Befehl} wird im
address@hidden gesucht.
-
address@hidden address@hidden
-Die @var{Datei} als Schlüsselbund mit Anbieterschlüsseln verwenden. Die
address@hidden muss im @dfn{Keybox-Format} vorliegen. Keybox-Dateien haben
-normalerweise einen Namen, der auf @file{.kbx} endet. Sie können mit Hilfe
-von address@hidden Guard (GPG) bearbeitet werden (siehe @ref{kbxutil,
address@hidden,, gnupg, Using the GNU Privacy Guard} für Informationen
-über ein Werkzeug zum Bearbeiten von Keybox-Dateien).
-
-Wenn diese Befehlszeilenoption nicht angegeben wird, benutzt @command{guix
-refresh} die Keybox-Datei @file{~/.config/guix/upstream/trustedkeys.kbx} als
-Schlüsselbund für Signierschlüssel von Anbietern. OpenPGP-Signaturen werden
-mit Schlüsseln aus diesem Schlüsselbund überprüft; fehlende Schlüssel werden
-auch in diesen Schlüsselbund heruntergeladen (siehe @option{--key-download}
-unten).
-
-Sie können Schlüssel aus Ihrem normalerweise benutzten GPG-Schlüsselbund in
-eine Keybox-Datei exportieren, indem Sie Befehle wie diesen benutzen:
-
address@hidden
-gpg --export rms@@gnu.org | kbxutil --import-openpgp >> mykeyring.kbx
address@hidden example
-
-Ebenso können Sie wie folgt Schlüssel in eine bestimmte Keybox-Datei
-herunterladen:
-
address@hidden
-gpg --no-default-keyring --keyring mykeyring.kbx \
-  --recv-keys @value{OPENPGP-SIGNING-KEY-ID}
address@hidden example
-
-Siehe @ref{GPG Configuration Options, @option{--keyring},, gnupg, Using the
-GNU Privacy Guard} für mehr Informationen zur Befehlszeilenoption
address@hidden von GPG.
-
address@hidden address@hidden
-Fehlende OpenPGP-Schlüssel gemäß dieser @var{Richtlinie} behandeln, für die
-eine der Folgenden angegeben werden kann:
-
address@hidden @code
address@hidden always
-Immer fehlende OpenPGP-Schlüssel herunterladen und zum GnuPG-Schlüsselbund
-des Nutzers hinzufügen.
-
address@hidden never
-Niemals fehlende OpenPGP-Schlüssel herunterladen, sondern einfach abbrechen.
-
address@hidden interactive
-Ist ein Paket mit einem unbekannten OpenPGP-Schlüssel signiert, wird der
-Nutzer gefragt, ob der Schlüssel heruntergeladen werden soll oder
-nicht. Dies entspricht dem vorgegebenen Verhalten.
address@hidden table
-
address@hidden address@hidden
-Den mit @var{Host} bezeichneten Rechner als Schlüsselserver für OpenPGP
-benutzen, wenn ein öffentlicher Schlüssel importiert wird.
-
address@hidden table
-
-Das @code{github}-Aktualisierungsprogramm benutzt die
address@hidden://developer.github.com/v3/, GitHub-Programmierschnittstelle}
-(die »Github-API«), um Informationen über neue Veröffentlichungen
-einzuholen. Geschieht dies oft, z.B.@: beim Auffrischen aller Pakete, so
-wird GitHub irgendwann aufhören, weitere API-Anfragen zu
-beantworten. Normalerweise sind 60 API-Anfragen pro Stunde erlaubt, für eine
-vollständige Auffrischung aller GitHub-Pakete in Guix werden aber mehr
-benötigt. Wenn Sie sich bei GitHub mit Ihrem eigenen API-Token
-authentisieren, gelten weniger einschränkende Grenzwerte. Um einen API-Token
-zu benutzen, setzen Sie die Umgebungsvariable @code{GUIX_GITHUB_TOKEN} auf
-einen von @uref{https://github.com/settings/tokens} oder anderweitig
-bezogenen API-Token.
-
-
address@hidden Aufruf von guix lint
address@hidden @command{guix lint} aufrufen
-
address@hidden @command{guix lint}
address@hidden Pakete, auf Fehler prüfen
-Den Befehl @command{guix lint} gibt es, um Paketentwicklern beim Vermeiden
-häufiger Fehler und bei der Einhaltung eines konsistenten Code-Stils zu
-helfen. Er führt eine Reihe von Prüfungen auf einer angegebenen Menge von
-Paketen durch, um in deren Definition häufige Fehler aufzuspüren. Zu den
-verfügbaren @dfn{Prüfern} gehören (siehe @code{--list-checkers} für eine
-vollständige Liste):
-
address@hidden @code
address@hidden synopsis
address@hidden description
-Überprüfen, ob bestimmte typografische und stilistische Regeln in
-Paketbeschreibungen und -zusammenfassungen eingehalten wurden.
-
address@hidden inputs-should-be-native
-Eingaben identifizieren, die wahrscheinlich native Eingaben sein sollten.
-
address@hidden source
address@hidden home-page
address@hidden mirror-url
address@hidden github-url
address@hidden source-file-name
-Die URLs für die Felder @code{home-page} und @code{source} anrufen und nicht
-erreichbare URLs melden. Wenn passend, wird eine @code{mirror://}-URL
-vorgeschlagen. Wenn die Quell-URL auf eine GitHub-URL weiterleitet, wird
-eine Empfehlung ausgegeben, direkt letztere zu verwenden. Es wird geprüft,
-dass der Quell-Dateiname aussagekräftig ist, dass er also z.B.@: nicht nur
-aus einer Versionsnummer besteht oder als »git-checkout« angegeben wurde,
-ohne dass ein @code{Dateiname} deklariert wurde (siehe 
@ref{»origin«-Referenz}).
-
address@hidden source-unstable-tarball
-Parse the @code{source} URL to determine if a tarball from GitHub is
-autogenerated or if it is a release tarball.  Unfortunately GitHub's
-autogenerated tarballs are sometimes regenerated.
-
address@hidden cve
address@hidden Sicherheitslücken
address@hidden CVE, Common Vulnerabilities and Exposures
-Bekannte Sicherheitslücken melden, die in den Datenbanken der »Common
-Vulnerabilities and Exposures« (CVE) aus diesem und dem letzten Jahr
-vorkommen, @uref{https://nvd.nist.gov/download.cfm#CVE_FEED, wie sie von der
-US-amerikanischen NIST veröffentlicht werden}.
-
-Um Informationen über eine bestimmte Sicherheitslücke angezeigt zu bekommen,
-besuchen Sie Webseiten wie:
-
address@hidden
address@hidden
address@hidden://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-YYYY-ABCD}
address@hidden
address@hidden://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-YYYY-ABCD}
address@hidden itemize
-
address@hidden
-wobei Sie statt @code{CVE-YYYY-ABCD} die CVE-Kennnummer angeben — z.B.@:
address@hidden
-
-Paketentwickler können in ihren Paketrezepten den Namen und die Version des
-Pakets in der @uref{https://nvd.nist.gov/cpe.cfm,Common Platform Enumeration
-(CPE)} angeben, falls sich diese von dem in Guix benutzten Namen und der
-Version unterscheiden, zum Beispiel so:
-
address@hidden
-(package
-  (name "grub")
-  ;; @dots{}
-  ;; CPE bezeichnet das Paket als "grub2".
-  (properties '((cpe-name . "grub2")
-                (cpe-version . "2.3")))
address@hidden example
-
address@hidden See <http://www.openwall.com/lists/oss-security/2017/03/15/3>.
-Manche Einträge in der CVE-Datenbank geben die Version des Pakets nicht an,
-auf das sie sich beziehen, und würden daher bis in alle Ewigkeit Warnungen
-auslösen. Paketentwickler, die CVE-Warnmeldungen gefunden und geprüft haben,
-dass diese ignoriert werden können, können sie wie in diesem Beispiel
-deklarieren:
-
address@hidden
-(package
-  (name "t1lib")
-  ;; @dots{}
-  ;; Diese CVEs treffen nicht mehr zu und können bedenkenlos ignoriert
-  ;; werden.
-  (properties `((lint-hidden-cve . ("CVE-2011-0433"
-                                    "CVE-2011-1553"
-                                    "CVE-2011-1554"
-                                    "CVE-2011-5244")))))
address@hidden example
-
address@hidden Formatierung
-Offensichtliche Fehler bei der Formatierung von Quellcode melden, z.B.@:
-Leerraum-Zeichen am Zeilenende oder Nutzung von Tabulatorzeichen.
address@hidden table
-
-Die allgemeine Syntax lautet:
-
address@hidden
-guix lint @var{Optionen} @address@hidden
address@hidden example
-
-Wird kein Paket auf der Befehlszeile angegeben, dann werden alle Pakete
-geprüft, die es gibt. Als @var{Optionen} können null oder mehr der folgenden
-Befehlszeilenoptionen übergeben werden:
-
address@hidden @code
address@hidden --list-checkers
address@hidden -l
-Alle verfügbaren Prüfer für die Pakete auflisten und beschreiben.
-
address@hidden --checkers
address@hidden -c
-Nur die Prüfer aktivieren, die hiernach in einer kommagetrennten Liste aus
-von @code{--list-checkers} aufgeführten Prüfern vorkommen.
-
address@hidden table
-
address@hidden Aufruf von guix size
address@hidden @command{guix size} aufrufen
-
address@hidden Größe
address@hidden Paketgröße
address@hidden Abschluss
address@hidden @command{guix size}
-Der Befehl @command{guix size} hilft Paketentwicklern dabei, den
-Plattenplatzverbrauch von Paketen zu profilieren. Es ist leicht, die
-Auswirkungen zu unterschätzen, die das Hinzufügen zusätzlicher
-Abhängigkeiten zu einem Paket hat oder die das Verwenden einer einzelnen
-Ausgabe für ein leicht aufteilbares Paket ausmacht (siehe @ref{Pakete mit 
mehreren Ausgaben.}). Das sind typische Probleme, auf die @command{guix size}
-aufmerksam machen kann.
-
-Dem Befehl können eine oder mehrere Paketspezifikationen wie @code{gcc@@4.8}
-oder @code{guile:debug} übergeben werden, oder ein Dateiname im
-Store. Betrachten Sie dieses Beispiel:
-
address@hidden
-$ guix size coreutils
-Store-Objekt                            Gesamt   Selbst
-/gnu/store/@dots{}-gcc-5.5.0-lib           60.4    30.1  38.1%
-/gnu/store/@dots{}-glibc-2.27              30.3    28.8  36.6%
-/gnu/store/@dots{}-coreutils-8.28          78.9    15.0  19.0%
-/gnu/store/@dots{}-gmp-6.1.2               63.1     2.7   3.4%
-/gnu/store/@dots{}-bash-static-4.4.12       1.5     1.5   1.9%
-/gnu/store/@dots{}-acl-2.2.52              61.1     0.4   0.5%
-/gnu/store/@dots{}-attr-2.4.47             60.6     0.2   0.3%
-/gnu/store/@dots{}-libcap-2.25             60.5     0.2   0.2%
-Gesamt: 78.9 MiB
address@hidden example
-
address@hidden Abschluss
-Die hier aufgelisteten Store-Objekte bilden den @dfn{transitiven Abschluss}
-der Coreutils — d.h.@: die Coreutils und all ihre Abhängigkeiten und deren
-Abhängigkeiten, rekursiv —, wie sie hiervon angezeigt würden:<f
-
address@hidden
-$ guix gc -R /gnu/store/@dots{}-coreutils-8.23
address@hidden example
-
-Hier zeigt die Ausgabe neben den Store-Objekten noch drei Spalten. Die erste
-Spalte namens »Gesamt« gibt wieder, wieviele Mebibytes (MiB) der Abschluss
-des Store-Objekts groß ist — das heißt, dessen eigene Größe plus die Größe
-all seiner Abhängigkeiten. Die nächste Spalte, bezeichnet mit »Selbst«,
-zeigt die Größe nur dieses Objekts an. Die letzte Spalte zeigt das
-Verhältnis der Größe des Objekts zur Gesamtgröße aller hier aufgelisteten
-Objekte an.
-
-In diesem Beispiel sehen wir, dass der Abschluss der Coreutils address@hidden
-schwer ist, wovon das meiste durch libc und die Bibliotheken zur
-Laufzeitunterstützung von GCC ausgemacht wird. (Dass libc und die
-Bibliotheken vom GCC einen großen Anteil am Abschluss ausmachen, ist aber an
-sich noch kein Problem, weil es Bibliotheken sind, die auf dem System
-sowieso immer verfügbar sein müssen.)
-
-Wenn das oder die Paket(e), die an @command{guix size} übergeben wurden, im
-Store verfügbar address@hidden gesagt braucht @command{guix size} die
address@hidden veredelte} Variante des angegebenen Pakets bzw. der Pakete, wie
address@hidden build @var{Paket} --no-grafts} sie liefert. Siehe 
@ref{Sicherheitsaktualisierungen} für Informationen über Veredelungen.}, 
beauftragen Sie mit
address@hidden size} den Daemon, die Abhängigkeiten davon zu bestimmen und
-deren Größe im Store zu messen, ähnlich wie es mit @command{du -ms
---apparent-size} geschehen würde (siehe @ref{du invocation,,, coreutils, GNU
-Coreutils}).
-
-Wenn die übergebenen Pakete @emph{nicht} im Store liegen, erstattet
address@hidden size} Bericht mit Informationen, die aus verfügbaren
-Substituten herausgelesen werden (siehe @ref{Substitute}). Dadurch kann die
-Plattenausnutzung von Store-Objekten profiliert werden, die gar nicht auf
-der Platte liegen und nur auf entfernten Rechnern vorhanden sind.
-
-Sie können auch mehrere Paketnamen angeben:
-
address@hidden
-$ guix size coreutils grep sed bash
-Store-Objekt                            Gesamt   Selbst
-/gnu/store/@dots{}-coreutils-8.24          77.8    13.8  13.4%
-/gnu/store/@dots{}-grep-2.22               73.1     0.8   0.8%
-/gnu/store/@dots{}-bash-4.3.42             72.3     4.7   4.6%
-/gnu/store/@dots{}-readline-6.3            67.6     1.2   1.2%
address@hidden
-Gesamt: 102.3 MiB
address@hidden example
-
address@hidden
-In diesem Beispiel sehen wir, dass die Kombination der vier Pakete insgesamt
-102,address@hidden Platz verbraucht, was wesentlich weniger als die Summe der
-einzelnen Abschlüsse ist, weil diese viele Abhängigkeiten gemeinsam
-verwenden.
-
-Die verfügbaren Befehlszeilenoptionen sind:
-
address@hidden @option
-
address@hidden address@hidden
-Substitutinformationen von den @var{URLs} benutzen. Siehe
address@hidden, dieselbe Option bei @code{guix build}}.
-
address@hidden address@hidden
-Zeilen anhand des @var{Schlüssel}s sortieren, der eine der folgenden
-Alternativen sein muss:
-
address@hidden @code
address@hidden self
-die Größe jedes Objekts (die Vorgabe),
address@hidden Abschluss
-die Gesamtgröße des Abschlusses des Objekts.
address@hidden table
-
address@hidden address@hidden
-Eine grafische Darstellung des Plattenplatzverbrauchs als eine
-PNG-formatierte Karte in die @var{Datei} schreiben.
-
-Für das Beispiel oben sieht die Karte so aus:
-
address@hidden/coreutils-size-map,5in,, Karte der Plattenausnutzung der
-Coreutils, erzeugt mit @command{guix size}}
-
-Diese Befehlszeilenoption setzt voraus, dass
address@hidden://wingolog.org/software/guile-charting/, Guile-Charting}
-installiert und im Suchpfad für Guile-Module sichtbar ist. Falls nicht,
-schlägt @command{guix size} beim Versuch fehl, dieses Modul zu laden.
-
address@hidden address@hidden
address@hidden -s @var{System}
-Pakete für dieses @var{System} betrachten — z.B.@: für @code{x86_64-linux}.
-
address@hidden table
-
address@hidden Aufruf von guix graph
address@hidden @command{guix graph} aufrufen
-
address@hidden DAG
address@hidden @command{guix graph}
address@hidden Paketabhängigkeiten
-Pakete und ihre Abhängigkeiten bilden einen @dfn{Graphen}, genauer gesagt
-einen gerichteten azyklischen Graphen (englisch »Directed Acyclic Graph«,
-kurz DAG). Es kann schnell schwierig werden, ein Modell eines Paket-DAGs vor
-dem geistigen Auge zu behalten, weshalb der Befehl @command{guix graph} eine
-visuelle Darstellung des DAGs bietet. Das vorgegebene Verhalten von
address@hidden graph} ist, eine DAG-Darstellung im Eingabeformat von
address@hidden://www.graphviz.org/, Graphviz} auszugeben, damit die Ausgabe
-direkt an den Befehl @command{dot} aus Graphviz weitergeleitet werden
-kann. Es kann aber auch eine HTML-Seite mit eingebettetem JavaScript-Code
-ausgegeben werden, um ein »Sehnendiagramm« (englisch »Chord Diagram«) in
-einem Web-Browser anzuzeigen, mit Hilfe der Bibliothek
address@hidden://d3js.org/, d3.js}, oder es können Cypher-Anfragen ausgegeben
-werden, mit denen eine die Anfragesprache @uref{http://www.opencypher.org/,
-openCypher} unterstützende Graph-Datenbank einen Graphen konstruieren
-kann. Die allgemeine Syntax ist:
-
address@hidden
-guix graph @var{Optionen} @address@hidden
address@hidden example
-
-Zum Beispiel erzeugt der folgende Befehl eine PDF-Datei, die den Paket-DAG
-für die address@hidden Utilities darstellt, welcher ihre Abhängigkeiten zur
-Erstellungszeit anzeigt:
-
address@hidden
-guix graph coreutils | dot -Tpdf > dag.pdf
address@hidden example
-
-Die Ausgabe sieht so aus:
-
address@hidden/coreutils-graph,2in,,Abhängigkeitsgraph der GNU Coreutils}
-
-Ein netter, kleiner Graph, oder?
-
-Aber es gibt mehr als eine Art von Graph! Der Graph oben ist kurz und knapp:
-Es ist der Graph der Paketobjekte, ohne implizite Eingaben wie GCC, libc,
-grep und so weiter. Oft möchte man einen knappen Graphen sehen, aber
-manchmal will man auch mehr Details sehen. @command{guix graph} unterstützt
-mehrere Typen von Graphen; Sie können den Detailgrad auswählen.
-
address@hidden @code
address@hidden package
-Der vorgegebene Typ aus dem Beispiel oben. Er zeigt den DAG der Paketobjekte
-ohne implizite Abhängigkeiten. Er ist knapp, filtert aber viele Details
-heraus.
-
address@hidden reverse-package
-Dies zeigt den @emph{umgekehrten} DAG der Pakete. Zum Beispiel:
-
address@hidden
-guix graph --type=reverse-package ocaml
address@hidden example
-
-...@: yields the graph of packages that @emph{explicitly} depend on OCaml
-(if you are also interested in cases where OCaml is an implicit dependency,
-see @code{reverse-bag} below.)
-
-Beachten Sie, dass für Kernpakete damit gigantische Graphen entstehen
-können. Wenn Sie nur die Anzahl der Pakete wissen wollen, die von einem
-gegebenen Paket abhängen, benutzen Sie @command{guix refresh
---list-dependent} (siehe @ref{Aufruf von guix refresh,
address@hidden).
-
address@hidden bag-emerged
-Dies ist der Paket-DAG @emph{einschließlich} impliziter Eingaben.
-
-Zum Beispiel liefert der folgende Befehl:
-
address@hidden
-guix graph --type=bag-emerged coreutils | dot -Tpdf > dag.pdf
address@hidden example
-
-…@: diesen größeren Graphen:
-
address@hidden/coreutils-bag-graph,,5in,Detaillierter Abhängigkeitsgraph der
-GNU Coreutils}
-
-Am unteren Rand des Graphen sehen wir alle impliziten Eingaben des
address@hidden (siehe @ref{Erstellungssysteme, @code{gnu-build-system}}).
-
-Beachten Sie dabei aber, dass auch hier die Abhängigkeiten dieser impliziten
-Eingaben — d.h.@: die @dfn{Bootstrap-Abhängigkeiten} (siehe
address@hidden) — nicht gezeigt werden, damit der Graph knapper bleibt.
-
address@hidden bag
-Ähnlich wie @code{bag-emerged}, aber diesmal mit allen
-Bootstrap-Abhängigkeiten.
-
address@hidden bag-with-origins
-Ähnlich wie @code{bag}, aber auch mit den Ursprüngen und deren
-Abhängigkeiten.
-
address@hidden reverse-bag
-This shows the @emph{reverse} DAG of packages.  Unlike
address@hidden, it also takes implicit dependencies into account.
-For example:
-
address@hidden
-guix graph -t reverse-bag dune
address@hidden example
-
address@hidden
-...@: yields the graph of all packages that depend on Dune, directly or
-indirectly.  Since Dune is an @emph{implicit} dependency of many packages
address@hidden @code{dune-build-system}, this shows a large number of packages,
-whereas @code{reverse-package} would show very few if any.
-
address@hidden Ableitung
-Diese Darstellung ist am detailliertesten: Sie zeigt den DAG der Ableitungen
-(siehe @ref{Ableitungen}) und der einfachen Store-Objekte. Verglichen mit
-obiger Darstellung sieht man viele zusätzliche Knoten einschließlich
-Erstellungs-Skripts, Patches, Guile-Module usw.
-
-Für diesen Typ Graph kann auch der Name einer @file{.drv}-Datei anstelle
-eines Paketnamens angegeben werden, etwa so:
-
address@hidden
-guix graph -t derivation `guix system build -d my-config.scm`
address@hidden example
-
address@hidden module
-Dies ist der Graph der @dfn{Paketmodule} (siehe @ref{Paketmodule}). Zum
-Beispiel zeigt der folgende Befehl den Graph für das Paketmodul an, das das
address@hidden definiert:
-
address@hidden
-guix graph -t module guile | dot -Tpdf > modul-graph.pdf
address@hidden example
address@hidden table
-
-Alle oben genannten Typen entsprechen @emph{Abhängigkeiten zur
-Erstellungszeit}. Der folgende Graphtyp repräsentiert die
address@hidden zur Laufzeit}:
-
address@hidden @code
address@hidden references
-Dies ist der Graph der @dfn{Referenzen} einer Paketausgabe, wie
address@hidden gc --references} sie liefert (siehe @ref{Aufruf von guix gc}).
-
-Wenn die angegebene Paketausgabe im Store nicht verfügbar ist, versucht
address@hidden graph}, die Abhängigkeitsinformationen aus Substituten zu
-holen.
-
-Hierbei können Sie auch einen Store-Dateinamen statt eines Paketnamens
-angeben. Zum Beispiel generiert der Befehl unten den Referenzgraphen Ihres
-Profils (der sehr groß werden kann!):
-
address@hidden
-guix graph -t references `readlink -f ~/.guix-profile`
address@hidden example
-
address@hidden referrers
-Dies ist der Graph der ein Store-Objekt @dfn{referenzierenden} Objekte, wie
address@hidden gc --referrers} sie liefern würde (siehe @ref{Aufruf von guix 
gc}).
-
-Er basiert ausschließlich auf lokalen Informationen aus Ihrem Store. Nehmen
-wir zum Beispiel an, dass das aktuelle Inkscape in 10 Profilen verfügbar
-ist, dann wird @command{guix graph -t referrers inkscape} einen Graph
-zeigen, der bei Inkscape gewurzelt ist und Kanten zu diesen 10 Profilen hat.
-
-Ein solcher Graph kann dabei helfen, herauszufinden, weshalb ein
-Store-Objekt nicht vom Müllsammler abgeholt werden kann.
-
address@hidden table
-
-Folgendes sind die verfügbaren Befehlszeilenoptionen:
-
address@hidden @option
address@hidden address@hidden
address@hidden -t @var{Typ}
-Eine Graph-Ausgabe dieses @var{Typ}s generieren. Dieser @var{Typ} muss einer
-der oben genannten Werte sein.
-
address@hidden --list-types
-Die unterstützten Graph-Typen auflisten.
-
address@hidden address@hidden
address@hidden -b @var{Backend}
-Einen Graph mit Hilfe des ausgewählten @var{Backend}s generieren.
-
address@hidden --list-backends
-Die unterstützten Graph-Backends auflisten.
-
-Derzeit sind die verfügbaren Backends Graphviz und d3.js.
-
address@hidden address@hidden
address@hidden -e @var{Ausdruck}
-Als Paket benutzen, wozu der @var{Ausdruck} ausgewertet wird.
-
-Dies ist nützlich, um genau ein bestimmtes Paket zu referenzieren, wie in
-diesem Beispiel:
-
address@hidden
-guix graph -e '(@@@@ (gnu packages commencement) gnu-make-final)'
address@hidden example
-
address@hidden address@hidden
address@hidden -s @var{System}
-Den Graphen für das @var{System} anzeigen — z.B.@: @code{i686-linux}.
-
-Der Abhängigkeitsgraph ist größtenteils von der Systemarchitektur
-unabhängig, aber ein paar architekturabhängige Teile können Ihnen mit dieser
-Befehlszeilenoption visualisiert werden.
address@hidden table
-
-
-
address@hidden Aufruf von guix publish
address@hidden @command{guix publish} aufrufen
-
address@hidden @command{guix publish}
-Der Zweck von @command{guix publish} ist, es Nutzern zu ermöglichen, ihren
-Store auf einfache Weise mit anderen zu teilen, die ihn dann als
-Substitutserver einsetzen können (siehe @ref{Substitute}).
-
-Wenn @command{guix publish} ausgeführt wird, wird dadurch ein HTTP-Server
-gestartet, so dass jeder mit Netzwerkzugang davon Substitute beziehen
-kann. Das bedeutet, dass jede Maschine, auf der Guix läuft, auch als
-Build-Farm fungieren kann, weil die HTTP-Schnittstelle mit Hydra, der
-Software, mit der die offizielle Build-Farm @address@hidden
-betrieben wird, kompatibel ist.
-
-Um Sicherheit zu gewährleisten, wird jedes Substitut signiert, so dass
-Empfänger dessen Authentizität und Integrität nachprüfen können (siehe
address@hidden). Weil @command{guix publish} den Signierschlüssel des
-Systems benutzt, der nur vom Systemadministrator gelesen werden kann, muss
-es als der Administratornutzer »root« gestartet werden. Mit der
-Befehlszeilenoption @code{--user} werden Administratorrechte bald nach dem
-Start wieder abgelegt.
-
-Das Schlüsselpaar zum Signieren muss erzeugt werden, bevor @command{guix
-publish} gestartet wird. Dazu können Sie @command{guix archive
---generate-key} ausführen (siehe @ref{Aufruf von guix archive}).
-
-Die allgemeine Syntax lautet:
-
address@hidden
-guix publish @address@hidden
address@hidden example
-
-Wird @command{guix publish} ohne weitere Argumente ausgeführt, wird damit
-ein HTTP-Server gestartet, der auf Port 8080 lauscht:
-
address@hidden
-guix publish
address@hidden example
-
-Sobald ein Server zum Veröffentlichen autorisiert wurde (siehe @ref{Aufruf von 
guix archive}), kann der Daemon davon Substitute herunterladen:
-
address@hidden
-guix-daemon --substitute-urls=http://example.org:8080
address@hidden example
-
-Nach den Voreinstellungen komprimiert @command{guix publish} Archive erst
-dann, wenn sie angefragt werden. Dieser »dynamische« Modus bietet sich an,
-weil so nichts weiter eingerichtet werden muss und er direkt verfügbar
-ist. Wenn Sie allerdings viele Clients bedienen wollen, empfehlen wir, dass
-Sie die Befehlszeilenoption @option{--cache} benutzen, die das
-Zwischenspeichern der komprimierten Archive aktiviert, bevor diese an die
-Clients geschickt werden — siehe unten für Details. Mit dem Befehl
address@hidden weather} haben Sie eine praktische Methode zur Hand, zu
-überprüfen, was so ein Server anbietet (siehe @ref{Aufruf von guix weather}).
-
-Als Bonus dient @command{guix publish} auch als inhaltsadressierbarer
-Spiegelserver für Quelldateien, die in @code{origin}-Verbundsobjekten
-eingetragen sind (siehe @ref{»origin«-Referenz}). Wenn wir zum Beispiel
-annehmen, dass @command{guix publish} auf @code{example.org} läuft, liefert
-folgende URL die rohe @file{hello-2.10.tar.gz}-Datei mit dem angegebenen
-SHA256-Hash als ihre Prüfsumme (dargestellt im @code{nix-base32}-Format,
-siehe @ref{Aufruf von guix hash}):
-
address@hidden
-http://example.org/file/hello-2.10.tar.gz/sha256/address@hidden
address@hidden example
-
-Offensichtlich funktionieren diese URLs nur mit solchen Dateien, die auch im
-Store vorliegen; in anderen Fällen werden sie 404 (»Nicht gefunden«)
-zurückliefern.
-
address@hidden Erstellungsprotokolle, Veröffentlichen
-Erstellungsprotokolle sind unter @code{/log}-URLs abrufbar:
-
address@hidden
-http://example.org/log/address@hidden
address@hidden example
-
address@hidden
-Ist der @command{guix-daemon} so eingestellt, dass er Erstellungsprotokolle
-komprimiert abspeichert, wie es voreingestellt ist (siehe @ref{Aufruf des 
guix-daemon}), liefern @code{/log}-URLs das unveränderte komprimierte
-Protokoll, mit einer entsprechenden @code{Content-Type}- und/oder
address@hidden Wir empfehlen dabei, dass Sie den
address@hidden mit @code{--log-compression=gzip} ausführen, weil
-Web-Browser dieses Format automatisch dekomprimieren können, was bei
-bzip2-Kompression nicht der Fall ist.
-
-Folgende Befehlszeilenoptionen stehen zur Verfügung:
-
address@hidden @code
address@hidden address@hidden
address@hidden -p @var{Port}
-Auf HTTP-Anfragen auf diesem @var{Port} lauschen.
-
address@hidden address@hidden
-Auf der Netzwerkschnittstelle für den angegebenen @var{Host}, also der
-angegebenen Rechneradresse, lauschen. Vorgegeben ist, Verbindungen mit jeder
-Schnittstelle zu akzeptieren.
-
address@hidden address@hidden
address@hidden -u @var{Benutzer}
-So früh wie möglich alle über die Berechtigungen des @var{Benutzer}s
-hinausgehenden Berechtigungen ablegen — d.h.@: sobald der Server-Socket
-geöffnet und der Signierschlüssel gelesen wurde.
-
address@hidden address@hidden
address@hidden -C address@hidden
-Daten auf der angegebenen address@hidden komprimieren. Wird als
address@hidden null angegeben, wird Kompression deaktiviert. Der Bereich von 1
-bis 9 entspricht unterschiedlichen gzip-Kompressionsstufen: 1 ist am
-schnellsten, während 9 am besten komprimiert (aber den Prozessor mehr
-auslastet). Der Vorgabewert ist 3.
-
-Wenn @option{--cache} nicht übergeben wird, werden Daten dynamisch immer
-erst dann komprimiert, wenn sie abgeschickt werden; komprimierte Datenströme
-landen in keinem Zwischenspeicher. Um also die Auslastung der Maschine, auf
-der @command{guix publish} läuft, zu reduzieren, kann es eine gute Idee
-sein, eine niedrige Kompressionsstufe zu wählen, @command{guix publish}
-einen Proxy mit Zwischenspeicher (einen »Caching Proxy«) voranzuschalten,
-oder @option{--cache} zu benutzen. @option{--cache} zu benutzen, hat den
-Vorteil, dass @command{guix publish} damit eine
address@hidden seinen Antworten beifügen kann.
-
address@hidden address@hidden
address@hidden -c @var{Verzeichnis}
-Archive und Metadaten (@code{.narinfo}-URLs) in das @var{Verzeichnis}
-zwischenspeichern und nur solche Archive versenden, die im Zwischenspeicher
-vorliegen.
-
-Wird diese Befehlszeilenoption weggelassen, dann werden Archive und
-Metadaten »dynamisch« erst auf eine Anfrage hin erzeugt. Dadurch kann die
-verfügbare Bandbreite reduziert werden, besonders wenn Kompression aktiviert
-ist, weil die Operation dann durch die Prozessorleistung beschränkt sein
-kann. Noch ein Nachteil des voreingestellten Modus ist, dass die Länge der
-Archive nicht im Voraus bekannt ist, @command{guix publish} also keine
address@hidden an seine Antworten anfügt, wodurch
-Clients nicht wissen können, welche Datenmenge noch heruntergeladen werden
-muss.
-
-Im Gegensatz dazu liefert, wenn @option{--cache} benutzt wird, die erste
-Anfrage nach einem Store-Objekt (über dessen @code{.narinfo}-URL) den
-Fehlercode 404, und im Hintergrund wird ein Prozess gestartet, der das
-Archiv in den Zwischenspeicher einlagert (auf Englisch sagen wir address@hidden
-the archive«), d.h.@: seine @code{.narinfo} wird berechnet und das Archiv,
-falls nötig, komprimiert. Sobald das Archiv im @var{Verzeichnis}
-zwischengespeichert wurde, werden nachfolgende Anfragen erfolgreich sein und
-direkt aus dem Zwischenspeicher bedient, der garantiert, dass Clients
-optimale Bandbreite genießen.
-
-Der Prozess zum Einlagern wird durch Worker-Threads umgesetzt. Der Vorgabe
-entsprechend wird dazu pro Prozessorkern ein Thread erzeugt, aber dieses
-Verhalten kann angepasst werden. Siehe @option{--workers} weiter unten.
-
-Wird @option{--ttl} verwendet, werden zwischengespeicherte Einträge
-automatisch gelöscht, sobald die dabei angegebene Zeit abgelaufen ist.
-
address@hidden address@hidden
-Wird @option{--cache} benutzt, wird die Reservierung von @var{N}
-Worker-Threads angefragt, um Archive einzulagern.
-
address@hidden address@hidden
address@hidden erzeugen, die eine Time-to-live (TTL)
-von @var{ttl} signalisieren. Für @var{ttl} muss eine Dauer (mit dem
-Anfangsbuchstaben der Maßeinheit der Dauer im Englischen) angegeben werden:
address@hidden bedeutet 5 Tage, @code{1m} bedeutet 1 Monat und so weiter.
-
-Das ermöglicht es Guix, Substitutinformationen @var{ttl} lang
-zwischenzuspeichern. Beachten Sie allerdings, dass @code{guix publish}
-selbst @emph{nicht} garantiert, dass die davon angebotenen Store-Objekte so
-lange verfügbar bleiben, wie es die @var{ttl} vorsieht.
-
-Des Weiteren können bei Nutzung von @option{--cache} die
-zwischengespeicherten Einträge gelöscht werden, wenn auf sie @var{ttl} lang
-nicht zugegriffen wurde und kein ihnen entsprechendes Objekt mehr im Store
-existiert.
-
address@hidden address@hidden
-Den @var{Pfad} als Präfix für die URLs von »nar«-Dateien benutzen (siehe
address@hidden von guix archive, normalized archives}).
-
-Vorgegeben ist, dass Nars unter einer URL mit
address@hidden/nar/gzip/@dots{}-coreutils-8.25} angeboten werden. Mit dieser
-Befehlszeilenoption können Sie den @code{/nar}-Teil durch den angegebenen
address@hidden ersetzen.
-
address@hidden address@hidden
address@hidden address@hidden
-Die angegebenen @var{Datei}en als das Paar aus öffentlichem und privatem
-Schlüssel zum Signieren veröffentlichter Store-Objekte benutzen.
-
-Die Dateien müssen demselben Schlüsselpaar entsprechen (der private
-Schlüssel wird zum Signieren benutzt, der öffentliche Schlüssel wird
-lediglich in den Metadaten der Signatur aufgeführt). Die Dateien müssen
-Schlüssel im kanonischen (»canonical«) S-Ausdruck-Format enthalten, wie es
-von @command{guix archive --generate-key} erzeugt wird (siehe @ref{Aufruf von 
guix archive}). Vorgegeben ist, dass @file{/etc/guix/signing-key.pub} und
address@hidden/etc/guix/signing-key.sec} benutzt werden.
-
address@hidden address@hidden
address@hidden -r address@hidden
-Einen Guile-REPL-Server (siehe @ref{REPL Servers,,, guile, GNU Guile
-Reference Manual}) auf diesem @var{Port} starten (37146 ist
-voreingestellt). Dies kann zur Fehlersuche auf einem laufenden
address@hidden publish}«-Server benutzt werden.
address@hidden table
-
address@hidden publish} auf einem »Guix System«-System zu aktivieren ist ein
-Einzeiler: Instanziieren Sie einfach einen
address@hidden im @code{services}-Feld Ihres
address@hidden zur Betriebssystemdeklaration (siehe
address@hidden, @code{guix-publish-service-type}}).
-
-Falls Sie Guix aber auf einer »Fremddistribution« laufen lassen, folgen Sie
-folgenden Anweisungen:
-
address@hidden
address@hidden
-Wenn Ihre Wirtsdistribution systemd als »init«-System benutzt:
-
address@hidden
-# ln -s ~root/.guix-profile/lib/systemd/system/guix-publish.service \
-        /etc/systemd/system/
-# systemctl start guix-publish && systemctl enable guix-publish
address@hidden example
-
address@hidden
-Wenn Ihre Wirts-Distribution als »init«-System Upstart verwendet:
-
address@hidden
-# ln -s ~root/.guix-profile/lib/upstart/system/guix-publish.conf /etc/init/
-# start guix-publish
address@hidden example
-
address@hidden
-Verfahren Sie andernfalls auf die gleiche Art für das »init«-System, das
-Ihre Distribution verwendet.
address@hidden itemize
-
address@hidden Aufruf von guix challenge
address@hidden @command{guix challenge} aufrufen
-
address@hidden Reproduzierbare Erstellungen
address@hidden verifizierbare Erstellungen
address@hidden @command{guix challenge}
address@hidden Anfechten
-Entsprechen die von diesem Server gelieferten Binärdateien tatsächlich dem
-Quellcode, aus dem sie angeblich erzeugt wurden? Ist ein
-Paketerstellungsprozess deterministisch? Diese Fragen versucht @command{guix
-challenge} zu beantworten.
-
-Die erste Frage ist offensichtlich wichtig: Bevor man einen Substitutserver
-benutzt (siehe @ref{Substitute}), @emph{verifiziert} man besser, dass er
-die richtigen Binärdateien liefert, d.h.@: man @emph{fechtet sie an}. Die
-letzte Frage macht die erste möglich: Wenn Paketerstellungen deterministisch
-sind, müssten voneinander unabhängige Erstellungen genau dasselbe Ergebnis
-liefern, Bit für Bit; wenn ein Server mit einer anderen Binärdatei als der
-lokal erstellten Binärdatei antwortet, ist diese entweder beschädigt oder
-bösartig.
-
-Wir wissen, dass die in @file{/gnu/store}-Dateinamen auftauchende
-Hash-Prüfsumme der Hash aller Eingaben des Prozesses ist, mit dem die Datei
-oder das Verzeichnis erstellt wurde — Compiler, Bibliotheken,
-Erstellungsskripts und so weiter (siehe @ref{Einführung}). Wenn wir von
-deterministischen Erstellungen ausgehen, sollte ein Store-Dateiname also auf
-genau eine Erstellungsausgabe abgebildet werden. Mit @command{guix
-challenge} prüft man, ob es tatsächlich eine eindeutige Abbildung gibt,
-indem die Erstellungsausgaben mehrerer unabhängiger Erstellungen jedes
-angegebenen Store-Objekts verglichen werden.
-
-Die Ausgabe des Befehls sieht so aus:
-
address@hidden
-$ guix challenge --substitute-urls="https://@value{SUBSTITUTE-SERVER} 
https://guix.example.org";
-Liste der Substitute von »https://@value{SUBSTITUTE-SERVER}« wird aktualisiert 
… 100.0%
-Liste der Substitute von »https://guix.example.org« wird aktualisiert … 100.0%
-Inhalt von /gnu/store/@dots{}-openssl-1.0.2d verschieden:
-  lokale Prüfsumme: 0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q
-  https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-openssl-1.0.2d: 
0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q
-  https://guix.example.org/nar/@dots{}-openssl-1.0.2d: 
1zy4fmaaqcnjrzzajkdn3f5gmjk754b43qkq47llbyak9z0qjyim
-Inhalt von /gnu/store/@dots{}-git-2.5.0 verschieden:
-  lokale Prüfsumme: 00p3bmryhjxrhpn2gxs2fy0a15lnip05l97205pgbk5ra395hyha
-  https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-git-2.5.0: 
069nb85bv4d4a6slrwjdy8v1cn4cwspm3kdbmyb81d6zckj3nq9f
-  https://guix.example.org/nar/@dots{}-git-2.5.0: 
0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9c73
-Inhalt von /gnu/store/@dots{}-pius-2.1.1 verschieden:
-  lokale Prüfsumme: 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax
-  https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-pius-2.1.1: 
0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax
-  https://guix.example.org/nar/@dots{}-pius-2.1.1: 
1cy25x1a4fzq5rk0pmvc8xhwyffnqz95h2bpvqsz2mpvlbccy0gs
-
address@hidden
-
-6,406 Store-Objekte wurden analysiert:
-  — 4,749 (74.1%) waren identisch
-  — 525 (8.2%) unterscheiden sich
-  — 1,132 (17.7%) blieben ergebnislos
address@hidden smallexample
-
address@hidden
-In diesem Beispiel wird mit @command{guix challenge} zuerst die Menge lokal
-erstellter Ableitungen im Store ermittelt — im Gegensatz zu von einem
-Substitserver heruntergeladenen Store-Objekten — und dann werden alle
-Substitutserver angefragt. Diejenigen Store-Objekte, bei denen der Server
-ein anderes Ergebnis berechnet hat als die lokale Erstellung, werden
-gemeldet.
-
address@hidden Nichtdeterminismus, in Paketerstellungen
-Nehmen wir zum Beispiel an, @code{guix.example.org} gibt uns immer eine
-verschiedene Antwort, aber @address@hidden stimmt mit
-lokalen Erstellungen überein, @emph{außer} im Fall von Git. Das könnte ein
-Hinweis sein, dass der Erstellungsprozess von Git nichtdeterministisch ist;
-das bedeutet, seine Ausgabe variiert abhängig von verschiedenen Umständen,
-die Guix nicht vollends kontrollieren kann, obwohl es Pakete in isolierten
-Umgebungen erstellt (siehe @ref{Funktionalitäten}). Zu den häufigsten Quellen 
von
-Nichtdeterminismus gehören das Einsetzen von Zeitstempeln innerhalb der
-Erstellungsgebnisse, das Einsetzen von Zufallszahlen und von Auflistungen
-eines Verzeichnisinhalts sortiert nach der Inode-Nummer. Siehe
address@hidden://reproducible-builds.org/docs/} für mehr Informationen.
-
-Um herauszufinden, was mit dieser Git-Binärdatei nicht stimmt, können wir so
-etwas machen (siehe @ref{Aufruf von guix archive}):
-
address@hidden
-$ wget -q -O - https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-git-2.5.0 \
-   | guix archive -x /tmp/git
-$ diff -ur --no-dereference /gnu/store/@dots{}-git.2.5.0 /tmp/git
address@hidden example
-
-Dieser Befehl zeigt die Unterschiede zwischen den Dateien, die sich aus der
-lokalen Erstellung ergeben, und den Dateien, die sich aus der Erstellung auf
address@hidden@value{SUBSTITUTE-SERVER}} ergeben (siehe @ref{Overview, 
Comparing and
-Merging Files,, diffutils, Comparing and Merging Files}). Der Befehl
address@hidden funktioniert großartig für Textdateien. Wenn sich
-Binärdateien unterscheiden, ist @uref{https://diffoscope.org/, Diffoscope}
-die bessere Wahl: Es ist ein hilfreiches Werkzeug, das Unterschiede in allen
-Arten von Dateien visualisiert.
-
-Sobald Sie mit dieser Arbeit fertig sind, können Sie erkennen, ob die
-Unterschiede aufgrund eines nichtdeterministischen Erstellungsprozesses oder
-wegen einem bösartigen Server zustande kommen. Wir geben uns Mühe, Quellen
-von Nichtdeterminismus in Paketen zu entfernen, damit Substitute leichter
-verifiziert werden können, aber natürlich ist an diesem Prozess nicht nur
-Guix, sondern ein großer Teil der Freie-Software-Gemeinschaft beteiligt. In
-der Zwischenzeit ist @command{guix challenge} eines der Werkzeuge, die das
-Problem anzugehen helfen.
-
-Wenn Sie ein Paket für Guix schreiben, ermutigen wir Sie, zu überprüfen, ob
address@hidden@value{SUBSTITUTE-SERVER}} und andere Substitutserver dasselbe
-Erstellungsergebnis bekommen, das Sie bekommen haben. Das geht so:
-
address@hidden
-$ guix challenge @var{Paket}
address@hidden example
-
address@hidden
-Dabei wird mit @var{Paket} eine Paketspezifikation wie @code{guile@@2.0}
-oder @code{glibc:debug} bezeichnet.
-
-Die allgemeine Syntax lautet:
-
address@hidden
-guix challenge @var{Optionen} address@hidden@dots{}]
address@hidden example
-
-Wird ein Unterschied zwischen der Hash-Prüfsumme des lokal erstellten
-Objekts und dem vom Server gelieferten Substitut festgestellt, oder zwischen
-den Substituten von unterschiedlichen Servern, dann wird der Befehl dies wie
-im obigen Beispiel anzeigen und mit dem Exit-Code 2 terminieren (andere
-Exit-Codes außer null stehen für andere Arten von Fehlern).
-
-Die eine, wichtige Befehlszeilenoption ist:
-
address@hidden @code
-
address@hidden address@hidden
-Die @var{URLs} als durch Leerraumzeichen getrennte Liste von
-Substitut-Quell-URLs benutzen. mit denen verglichen wird.
-
address@hidden --verbose
address@hidden -v
-Details auch zu Übereinstimmungen (deren Inhalt identisch ist) ausgeben,
-zusätzlich zu Informationen über Unterschiede.
-
address@hidden table
-
address@hidden Aufruf von guix copy
address@hidden @command{guix copy} aufrufen
-
address@hidden Kopieren, von Store-Objekten, über SSH
address@hidden SSH, Kopieren von Store-Objekten
address@hidden Store-Objekte zwischen Maschinen teilen
address@hidden Übertragen von Store-Objekten zwischen Maschinen
-Der Befehl @command{guix copy} kopiert Objekte aus dem Store einer Maschine
-in den Store einer anderen Maschine mittels einer Secure-Shell-Verbindung
-(kurz SSH-Verbindung)@footnote{Dieser Befehl steht nur dann zur Verfügung,
-wenn Guile-SSH gefunden werden kann. Siehe @ref{Voraussetzungen} für
-Details.}. Zum Beispiel kopiert der folgende Befehl das Paket
address@hidden, das Profil des Benutzers und all deren Abhängigkeiten auf
-den anderen @var{Rechner}, dazu meldet sich Guix als @var{Benutzer} an:
-
address@hidden
-guix copy address@hidden@@@var{Rechner} \
-          coreutils `readlink -f ~/.guix-profile`
address@hidden example
-
-Wenn manche der zu kopierenden Objekte schon auf dem anderen @var{Rechner}
-vorliegen, werden sie tatsächlich @emph{nicht} übertragen.
-
-Der folgende Befehl bezieht @code{libreoffice} und @code{gimp} von dem
address@hidden, vorausgesetzt sie sind dort verfügbar:
-
address@hidden
-guix copy address@hidden libreoffice gimp
address@hidden example
-
-Die SSH-Verbindung wird mit dem Guile-SSH-Client hergestellt, der mit
-OpenSSH kompatibel ist: Er berücksichtigt @file{~/.ssh/known_hosts} und
address@hidden/.ssh/config} und verwendet den SSH-Agenten zur Authentifizierung.
-
-Der Schlüssel, mit dem gesendete Objekte signiert sind, muss von der
-entfernten Maschine akzeptiert werden. Ebenso muss der Schlüssel, mit dem
-die Objekte signiert sind, die Sie von der entfernten Maschine empfangen, in
-Ihrer Datei @file{/etc/guix/acl} eingetragen sein, damit Ihr Daemon sie
-akzeptiert. Siehe @ref{Aufruf von guix archive} für mehr Informationen über
-die Authentifizierung von Store-Objekten.
-
-Die allgemeine Syntax lautet:
-
address@hidden
-guix copy address@hidden|address@hidden @address@hidden
address@hidden example
-
-Sie müssen immer eine der folgenden Befehlszeilenoptionen angeben:
-
address@hidden @code
address@hidden address@hidden
address@hidden address@hidden
-Gibt den Rechner (den »Host«) an, an den oder von dem gesendet
-bzw. empfangen wird. Die @var{Spezifikation} muss eine SSH-Spezifikation
-sein wie @code{example.org}, @code{charlie@@example.org} oder
address@hidden@@example.org:2222}.
address@hidden table
-
-Die @var{Objekte} können entweder Paketnamen wie @code{gimp} oder
-Store-Objekte wie @file{/gnu/store/@dots{}-idutils-4.6} sein.
-
-Wenn ein zu sendendes Paket mit Namen angegeben wird, wird es erst erstellt,
-falls es nicht im Store vorliegt, außer @option{--dry-run} wurde angegeben
-wurde. Alle gemeinsamen Erstellungsoptionen werden unterstützt (siehe
address@hidden Erstellungsoptionen}).
-
-
address@hidden Aufruf von guix container
address@hidden @command{guix container} aufrufen
address@hidden container
address@hidden @command{guix container}
address@hidden Anmerkung
-Dieses Werkzeug ist noch experimentell, Stand Version @value{VERSION}. Die
-Schnittstelle wird sich in Zukunft grundlegend verändern.
address@hidden quotation
-
-Der Zweck von @command{guix container} ist, in einer isolierten Umgebung
-(gemeinhin als »Container« bezeichnet) laufende Prozesse zu manipulieren,
-die typischerweise durch die Befehle @command{guix environment} (siehe
address@hidden von guix environment}) und @command{guix system container} (siehe
address@hidden von guix system}) erzeugt werden.
-
-Die allgemeine Syntax lautet:
-
address@hidden
-guix container @var{Aktion} @address@hidden
address@hidden example
-
-Mit @var{Aktion} wird die Operation angegeben, die in der isolierten
-Umgebung durchgeführt werden soll, und mit @var{Optionen} werden die
-kontextabhängigen Argumente an die Aktion angegeben.
-
-Folgende Aktionen sind verfügbar:
-
address@hidden @code
address@hidden exec
-Führt einen Befehl im Kontext der laufenden isolierten Umgebung aus.
-
-Die Syntax ist:
-
address@hidden
-guix container exec @var{PID} @var{Programm} @address@hidden
address@hidden example
-
address@hidden gibt die Prozess-ID der laufenden isolierten Umgebung an. Als
address@hidden muss eine ausführbare Datei im Wurzeldateisystem der
-isolierten Umgebung angegeben werden. Die @var{Argumente} sind die
-zusätzlichen Befehlszeilenoptionen, die an das @var{Programm} übergeben
-werden.
-
-Der folgende Befehl startet eine interaktive Anmelde-Shell innerhalb einer
-isolierten Guix-Systemumgebung, gestartet durch @command{guix system
-container}, dessen Prozess-ID 9001 ist:
-
address@hidden
-guix container exec 9001 /run/current-system/profile/bin/bash --login
address@hidden example
-
-Beachten Sie, dass die @var{PID} nicht der Elternprozess der isolierten
-Umgebung sein darf, sondern PID 1 in der isolierten Umgebung oder einer
-seiner Kindprozesse sein muss.
-
address@hidden table
-
address@hidden Aufruf von guix weather
address@hidden @command{guix weather} aufrufen
-
-Manchmal werden Sie schlecht gelaunt sein, weil es zu wenige Substitute gibt
-und die Pakete bei Ihnen selbst erstellt werden müssen (siehe
address@hidden). Der Befehl @command{guix weather} zeigt einen Bericht
-über die Verfügbarkeit von Substituten auf den angegebenen Servern an, damit
-Sie sich eine Vorstellung davon machen können, wie es heute um Ihre Laune
-bestellt sein wird. Manchmal bekommt man als Nutzer so hilfreiche
-Informationen, aber in erster Linie nützt der Befehl den Leuten, die
address@hidden publish} benutzen (siehe @ref{Aufruf von guix publish}).
-
address@hidden Statistik, für Substitute
address@hidden Verfügbarkeit von Substituten
address@hidden Substitutverfügbarkeit
address@hidden Wetter, Substitutverfügbarkeit
-Hier ist ein Beispiel für einen Aufruf davon:
-
address@hidden
-$ guix weather --substitute-urls=https://guix.example.org
-5.872 Paketableitungen für x86_64-linux berechnen …
-Nach 6.128 Store-Objekten von https://guix.example.org suchen …
-updating list of substitutes from 'https://guix.example.org'... 100.0%
-https://guix.example.org
-  43,4% Substitute verfügbar (2.658 von 6.128)
-  7.032,5 MiB an Nars (komprimiert)
-  19.824,2 MiB auf der Platte (unkomprimiert)
-  0,030 Sekunden pro Anfrage (182,9 Sekunden insgesamt)
-  33,5 Anfragen pro Sekunde
-
-  9,8% (342 von 3.470) der fehlenden Objekte sind in der Warteschlange
-  Mindestens 867 Erstellungen in der Warteschlange
-      x86_64-linux: 518 (59,7%)
-      i686-linux: 221 (25,5%)
-      aarch64-linux: 128 (14,8%)
-  Erstellungsgeschwindigkeit: 23,41 Erstellungen pro Stunde
-      x86_64-linux: 11,16 Erstellungen pro Stunde
-      i686-linux: 6,03 Erstellungen pro Stunde
-      aarch64-linux: 6,41 Erstellungen pro Stunde
address@hidden example
-
address@hidden Kontinuierliche Integration, Statistik
-Wie Sie sehen können, wird der Anteil unter allen Paketen angezeigt, für die
-auf dem Server Substitute verfügbar sind — unabhängig davon, ob Substitute
-aktiviert sind, und unabhängig davon, ob der signierende Schlüssel des
-Servers autorisiert ist. Es wird auch über die Größe der komprimierten
-Archive (die »Nars«) berichtet, die vom Server angeboten werden, sowie über
-die Größe, die die zugehörigen Store-Objekte im Store belegen würden (unter
-der Annahme, dass Deduplizierung abgeschaltet ist) und über den Durchsatz
-des Servers. Der zweite Teil sind Statistiken zur Kontinuierlichen
-Integration (englisch »Continuous Integration«, kurz CI), wenn der Server
-dies unterstützt. Des Weiteren kann @command{guix weather}, wenn es mit der
-Befehlszeilenoption @option{--coverage} aufgerufen wird, »wichtige«
-Paketsubstitute, die auf dem Server fehlen, auflisten (siehe unten).
-
-Dazu werden mit @command{guix weather} Anfragen über HTTP(S) zu Metadaten
-(@dfn{Narinfos}) für alle relevanten Store-Objekte gestellt. Wie
address@hidden challenge} werden die Signaturen auf den Substituten
-ignoriert, was harmlos ist, weil der Befehl nur Statistiken sammelt und
-keine Substitute installieren kann.
-
-Neben anderen Dingen ist es möglich, bestimmte Systemtypen und bestimmte
-Paketmengen anzufragen. Die verfügbaren Befehlszeilenoptionen sind folgende:
-
address@hidden @code
address@hidden address@hidden
address@hidden ist eine leerzeichengetrennte Liste anzufragender
-Substitutserver-URLs. Wird diese Befehlszeilenoption weggelassen, wird die
-vorgegebene Menge an Substitutservern angefragt.
-
address@hidden address@hidden
address@hidden -s @var{System}
-Substitute für das @var{System} anfragen — z.B.@: für
address@hidden Diese Befehlszeilenoption kann mehrmals angegeben
-werden, wodurch @command{guix weather} die Substitute für mehrere
-Systemtypen anfragt.
-
address@hidden address@hidden
-Anstatt die Substitute für alle Pakete anzufragen, werden nur die in der
address@hidden angegebenen Pakete erfragt. Die @var{Datei} muss ein
address@hidden enthalten, wie bei der Befehlszeilenoption @code{-m} von
address@hidden package} (siehe @ref{Aufruf von guix package}).
-
address@hidden address@hidden
address@hidden -c address@hidden
-Einen Bericht über die Substitutabdeckung für Pakete ausgeben, d.h.@: Pakete
-mit mindestens @var{Anzahl}-vielen Abhängigen (voreingestellt mindestens
-null) anzeigen, für die keine Substitute verfügbar sind. Die abhängigen
-Pakete werden selbst nicht aufgeführt: Wenn @var{b} von @var{a} abhängt und
-Substitute für @var{a} fehlen, wird nur @var{a} aufgeführt, obwohl dann in
-der Regel auch die Substitute für @var{b} fehlen. Das Ergebnis sieht so aus:
-
address@hidden
-$ guix weather --substitute-urls=https://ci.guix.de.info -c 10
-8.983 Paketableitungen für x86_64-linux berechnen …
-Nach 9.343 Store-Objekten von https://ci.guix.de.info suchen …
-Liste der Substitute von »https://ci.guix.de.info« wird aktualisiert … 100.0%
-https://ci.guix.de.info
-  64.7% Substitute verfügbar (6.047 von 9.343)
address@hidden
-2502 Pakete fehlen auf »https://ci.guix.de.info« für »x86_64-linux«, darunter 
sind:
-    58  kcoreaddons@@5.49.0      /gnu/store/@dots{}-kcoreaddons-5.49.0
-    46  qgpgme@@1.11.1           /gnu/store/@dots{}-qgpgme-1.11.1
-    37  perl-http-cookiejar@@0.008  
/gnu/store/@dots{}-perl-http-cookiejar-0.008
-    @dots{}
address@hidden example
-
-What this example shows is that @code{kcoreaddons} and presumably the 58
-packages that depend on it have no substitutes at @code{ci.guix.de.info};
-likewise for @code{qgpgme} and the 46 packages that depend on it.
-
-If you are a Guix developer, or if you are taking care of this build farm,
-you'll probably want to have a closer look at these packages: they may
-simply fail to build.
address@hidden table
-
address@hidden Aufruf von guix processes
address@hidden @command{guix processes} aufrufen
-
-Der Befehl @command{guix processes} kann sich für Entwickler und
-Systemadministratoren als nützlich erweisen, besonders auf Maschinen mit
-mehreren Nutzern und auf Build-Farms. Damit werden die aktuellen Sitzungen
-(also Verbindungen zum Daemon) sowie Informationen über die beteiligten
-Prozesse address@hidden Sitzungen, wenn
address@hidden mit @option{--listen} unter Angabe eines TCP-Endpunkts
-gestartet wurde, werden @emph{nicht} aufgelistet.}. Hier ist ein Beispiel
-für die davon gelieferten Informationen:
-
address@hidden
-$ sudo guix processes
-SessionPID: 19002
-ClientPID: 19090
-ClientCommand: guix environment --ad-hoc python
-
-SessionPID: 19402
-ClientPID: 19367
-ClientCommand: guix publish -u guix-publish -p 3000 -C 9 @dots{}
-
-SessionPID: 19444
-ClientPID: 19419
-ClientCommand: cuirass --cache-directory /var/cache/cuirass @dots{}
-LockHeld: /gnu/store/@dots{}-perl-ipc-cmd-0.96.lock
-LockHeld: /gnu/store/@dots{}-python-six-bootstrap-1.11.0.lock
-LockHeld: /gnu/store/@dots{}-libjpeg-turbo-2.0.0.lock
-ChildProcess: 20495: guix offload x86_64-linux 7200 1 28800
-ChildProcess: 27733: guix offload x86_64-linux 7200 1 28800
-ChildProcess: 27793: guix offload x86_64-linux 7200 1 28800
address@hidden example
-
-In diesem Beispiel sehen wir, dass @command{guix-daemon} drei Clients hat:
address@hidden environment}, @command{guix publish} und das Werkzeug Cuirass
-zur Kontinuierlichen Integration. Deren Prozesskennung (PID) ist jeweils im
address@hidden zu sehen. Das Feld @code{SessionPID} zeigt die PID des
address@hidden dieser bestimmten Sitzung.
-
-Das Feld @code{LockHeld} zeigt an, welche Store-Objekte derzeit durch die
-Sitzung gesperrt sind, d.h.@: welche Store-Objekte zur Zeit erstellt oder
-substituiert werden (das @code{LockHeld}-Feld wird nicht angezeigt, wenn
address@hidden processes} nicht als Administratornutzer root ausgeführt
-wird). Letztlich sehen wir am @code{ChildProcess}-Feld oben, dass diese drei
-Erstellungen hier ausgelagert (englisch »offloaded«) werden (siehe
address@hidden des Daemons einrichten}).
-
-Die Ausgabe ist im Recutils-Format, damit wir den praktischen
address@hidden benutzen können, um uns interessierende Sitzungen
-auszuwählen (siehe @ref{Selection Expressions,,, recutils, GNU recutils
-manual}). Zum Beispiel zeigt dieser Befehl die Befehlszeile und PID des
-Clients an, der die Erstellung des Perl-Pakets ausgelöst hat:
-
address@hidden
-$ sudo guix processes | \
-    recsel -p ClientPID,ClientCommand -e 'LockHeld ~ "perl"'
-ClientPID: 19419
-ClientCommand: cuirass --cache-directory /var/cache/cuirass @dots{}
address@hidden example
-
-
address@hidden Systemkonfiguration
address@hidden Systemkonfiguration
-
address@hidden Systemkonfiguration
-Die »Guix System«-Distribution unterstützt einen Mechanismus zur
-konsistenten Konfiguration des gesamten Systems. Damit meinen wir, dass alle
-Aspekte der globalen Systemkonfiguration an einem Ort stehen, d.h.@: die zur
-Verfügung gestellten Systemdienste, die Zeitzone und Einstellungen zur
-Locale (also die Anpassung an regionale Gepflogenheiten und Sprachen) sowie
-Benutzerkonten. Sie alle werden an derselben Stelle deklariert. So eine
address@hidden kann @dfn{instanziiert}, also umgesetzt, werden.
-
address@hidden Yes, we're talking of Puppet, Chef, & co. here.  ↑
-Einer der Vorteile, die ganze Systemkonfiguration unter die Kontrolle von
-Guix zu stellen, ist, dass so transaktionelle Systemaktualisierungen möglich
-werden und dass diese rückgängig gemacht werden können, wenn das
-aktualisierte System nicht richtig funktioniert (siehe 
@ref{Funktionalitäten}). Ein
-anderer Vorteil ist, dass dieselbe Systemkonfiguration leicht auf einer
-anderen Maschine oder zu einem späteren Zeitpunkt benutzt werden kann, ohne
-dazu eine weitere Schicht administrativer Werkzeuge über den systemeigenen
-Werkzeugen einsetzen zu müssen.
-
-In diesem Abschnitt wird dieser Mechanismus beschrieben. Zunächst betrachten
-wir ihn aus der Perspektive eines Administrators. Dabei wird erklärt, wie
-das System konfiguriert und instanziiert werden kann. Dann folgt eine
-Demonstration, wie der Mechanismus erweitert werden kann, etwa um neue
-Systemdienste zu unterstützen.
-
address@hidden
-* Das Konfigurationssystem nutzen::  Ihr GNU-System anpassen.
-* »operating-system«-Referenz::  Details der Betriebssystem-Deklarationen.
-* Dateisysteme::             Die Dateisystemeinbindungen konfigurieren.
-* Zugeordnete Geräte::      Näheres zu blockorientierten Speichermedien.
-* Benutzerkonten::           Benutzerkonten festlegen.
-* Tastaturbelegung::         Wie das System Tastendrücke interpretiert.
-* Locales::                  Sprache und kulturelle Konventionen.
-* Dienste::                  Systemdienste festlegen.
-* Setuid-Programme::         Mit Administratorrechten startende Programme.
-* X.509-Zertifikate::        HTTPS-Server authentifizieren.
-* Name Service Switch::      Den Name Service Switch von libc konfigurieren.
-* Initiale RAM-Disk::        Linux-libre hochfahren.
-* Bootloader-Konfiguration::  Den Bootloader konfigurieren.
-* Aufruf von guix system::   Instanziierung einer Systemkonfiguration.
-* Guix in einer VM starten::  Wie man »Guix System« in einer virtuellen 
-                                Maschine startet.
-* Dienste definieren::       Neue Dienstdefinitionen hinzufügen.
address@hidden menu
-
address@hidden Das Konfigurationssystem nutzen
address@hidden Das Konfigurationssystem nutzen
-
-Das Betriebssystem können Sie konfigurieren, indem Sie eine
address@hidden in einer Datei speichern, die Sie dann
-dem Befehl @command{guix system} übergeben (siehe @ref{Aufruf von guix 
system}). Eine einfache Konfiguration mit den vorgegebenen Systemdiensten
-und dem vorgegebenen Linux-Libre als Kernel und mit einer initialen RAM-Disk
-und einem Bootloader, sieht so aus:
-
address@hidden operating-system
address@hidden
address@hidden os-config-bare-bones.texi
address@hidden lisp
-
-Dieses Beispiel sollte selbsterklärend sein. Manche der Felder oben, wie
-etwa @code{host-name} und @code{bootloader}, müssen angegeben werden. Andere
-sind optional, wie etwa @code{packages} und @code{services}, sind optional;
-werden sie nicht angegeben, nehmen sie einen Vorgabewert an.
-
-Im Folgenden werden die Effekte von einigen der wichtigsten Feldern
-erläutert (siehe @ref{»operating-system«-Referenz} für Details zu allen
-verfügbaren Feldern), dann wird beschrieben, wie man das Betriebssystem mit
address@hidden system} @dfn{instanziieren} kann.
-
address@hidden Bootloader
-
address@hidden Legacy-Boot, auf Intel-Maschinen
address@hidden BIOS-Boot, auf Intel-Maschinen
address@hidden UEFI-Boot
address@hidden EFI-Boot
-Das @code{bootloader}-Feld beschreibt, mit welcher Methode Ihr System
-»gebootet« werden soll. Maschinen, die auf Intel-Prozessoren basieren,
-können im alten »Legacy«-BIOS-Modus gebootet werden, wie es im obigen
-Beispiel der Fall wäre. Neuere Maschinen benutzen stattdessen das
address@hidden Extensible Firmware Interface} (UEFI) zum Booten. In diesem
-Fall sollte das @code{bootloader}-Feld in etwa so aussehen:
-
address@hidden
-(bootloader-configuration
-  (bootloader grub-efi-bootloader)
-  (target "/boot/efi"))
address@hidden example
-
-Siehe den Abschnitt @ref{Bootloader-Konfiguration} für weitere Informationen
-zu den verfügbaren Konfigurationsoptionen.
-
address@hidden global sichtbare Pakete
-
address@hidden %base-packages
-Im Feld @code{packages} werden Pakete aufgeführt, die auf dem System für
-alle Benutzerkonten global sichtbar sein sollen, d.h.@: in der
address@hidden jedes Nutzers, zusätzlich zu den
-nutzereigenen Profilen (siehe @ref{Aufruf von guix package}). Die Variable
address@hidden bietet alle Werkzeuge, die man für grundlegende Nutzer-
-und Administratortätigkeiten erwarten würde, einschließlich der GNU Core
-Utilities, der GNU Networking Utilities, des leichtgewichtigen Texteditors
-GNU Zile, @command{find}, @command{grep} und so weiter. Obiges Beispiel fügt
-zu diesen noch das Programm address@hidden hinzu, welches aus dem Modul
address@hidden(gnu packages screen)} genommen wird (siehe @ref{Paketmodule}). 
Die Syntax @code{(list package output)} kann benutzt werden, um
-eine bestimmte Ausgabe eines Pakets auszuwählen:
-
address@hidden
-(use-modules (gnu packages))
-(use-modules (gnu packages dns))
-
-(operating-system
-  ;; ...
-  (packages (cons (list bind "utils")
-                  %base-packages)))
address@hidden lisp
-
address@hidden specification->package
-Sich auf Pakete anhand ihres Variablennamens zu beziehen, wie oben bei
address@hidden, hat den Vorteil, dass der Name eindeutig ist; Tippfehler werden
-direkt als »unbound variables« gemeldet. Der Nachteil ist, dass man wissen
-muss, in welchem Modul ein Paket definiert wird, um die Zeile mit
address@hidden entsprechend zu ergänzen. Um dies zu vermeiden,
-kann man auch die Prozedur @code{specification->package} aus dem Modul
address@hidden(gnu packages)} aufrufen, welche das einem angegebenen Namen oder
-Name-Versions-Paar zu Grunde liegende Paket liefert:
-
address@hidden
-(use-modules (gnu packages))
-
-(operating-system
-  ;; ...
-  (packages (append (map specification->package
-                         '("tcpdump" "htop" "gnupg@@2.0"))
-                    %base-packages)))
address@hidden lisp
-
address@hidden Systemdienste
-
address@hidden services
address@hidden %base-services
-Das Feld @code{services} listet @dfn{Systemdienste} auf, die zur Verfügung
-stehen sollen, wenn das System startet (siehe @ref{Dienste}). Die
address@hidden oben legt fest, dass wir neben den
-grundlegenden Basis-Diensten auch wollen, dass der
-OpenSSH-Secure-Shell-Daemon auf Port 2222 lauscht (siehe @ref{Netzwerkdienste, 
@code{openssh-service-type}}). Intern sorgt der
address@hidden dafür, dass @code{sshd} mit den richtigen
-Befehlszeilenoptionen aufgerufen wird, je nach Systemkonfiguration werden
-auch für dessen Betrieb nötige Konfigurationsdateien erstellt (siehe
address@hidden definieren}).
-
address@hidden Anpassung, von Diensten
address@hidden modify-services
-Gelegentlich werden Sie die Basis-Dienste nicht einfach so, wie sie sind,
-benutzen, sondern anpassen wollen. Benutzen Sie @code{modify-services}
-(siehe @ref{Service-Referenz, @code{modify-services}}), um die Liste der
-Basis-Dienste zu modifizieren.
-
-Wenn Sie zum Beispiel @code{guix-daemon} und Mingetty (das Programm, womit
-Sie sich auf der Konsole anmelden) in der @var{%base-services}-Liste
-modifizieren möchten (siehe @ref{Basisdienste, @code{%base-services}}),
-schreiben Sie das Folgende in Ihre Betriebssystemdeklaration:
-
address@hidden
-(define %my-services
-  ;; Meine ganz eigene Liste von Diensten.
-  (modify-services %base-services
-    (guix-service-type config =>
-                       (guix-configuration
-                        (inherit config)
-                        (use-substitutes? #f)
-                        (extra-options '("--gc-keep-derivations"))))
-    (mingetty-service-type config =>
-                           (mingetty-configuration
-                            (inherit config)))))
-
-(operating-system
-  ;; @dots{}
-  (services %my-services))
address@hidden lisp
-
-Dadurch ändert sich die Konfiguration — d.h.@: die Dienst-Parameter — der
address@hidden und die aller
address@hidden in der
address@hidden Das funktioniert so: Zunächst arrangieren wir,
-dass die ursprüngliche Konfiguration an den Bezeichner @code{config} im
address@hidden gebunden wird, dann schreiben wir den @var{Rumpf}, damit er zur
-gewünschten Konfiguration ausgewertet wird. Beachten Sie insbesondere, wie
-wir mit @code{inherit} eine neue Konfiguration erzeugen, die dieselben Werte
-wie die alte Konfiguration hat, aber mit ein paar Modifikationen.
-
address@hidden verschlüsselte Partition
-Die Konfiguration für typische »Schreibtisch«-Nutzung zum Arbeiten, mit
-einer verschlüsselten Partition für das Wurzeldateisystem, einem
-X11-Display-Server, GNOME und Xfce (Benutzer können im Anmeldebildschirm
-auswählen, welche dieser Arbeitsumgebungen sie möchten, indem sie die Taste
address@hidden drücken), Netzwerkverwaltung, Verwaltungswerkzeugen für den
-Energieverbrauch, und Weiteres, würde so aussehen:
-
address@hidden
address@hidden os-config-desktop.texi
address@hidden lisp
-
-Ein grafisches System mit einer Auswahl an leichtgewichtigen
-Fenster-Managern statt voll ausgestatteten Arbeitsumgebungen würde so
-aussehen:
-
address@hidden
address@hidden os-config-lightweight-desktop.texi
address@hidden lisp
-
-Dieses Beispiel bezieht sich auf das Dateisystem hinter @file{/boot/efi}
-über dessen UUID, @code{1234-ABCD}. Schreiben Sie statt dieser UUID die
-richtige UUID für Ihr System, wie sie der Befehl @command{blkid} liefert.
-
-Im Abschnitt @ref{Desktop-Dienste} finden Sie eine genaue Liste der unter
address@hidden angebotenen Dienste. Der Abschnitt @ref{X.509-Zertifikate} hat 
Hintergrundinformationen über das @code{nss-certs}-Paket,
-das hier benutzt wird.
-
-Beachten Sie, dass @var{%desktop-services} nur eine Liste von die Dienste
-repräsentierenden service-Objekten ist. Wenn Sie Dienste daraus entfernen
-möchten, können Sie dazu die Prozeduren zum Filtern von Listen benutzen
-(siehe @ref{SRFI-1 Filtering and Partitioning,,, guile, GNU Guile Reference
-Manual}). Beispielsweise liefert der folgende Ausdruck eine Liste mit allen
-Diensten von @var{%desktop-services} außer dem Avahi-Dienst.
-
address@hidden
-(remove (lambda (service)
-          (eq? (service-kind service) avahi-service-type))
-        %desktop-services)
address@hidden example
-
address@hidden Das System instanziieren
-
-Angenommen, Sie haben die @code{operating-system}-Deklaration in einer Datei
address@hidden gespeichert, dann instanziiert der Befehl
address@hidden system reconfigure my-system-config.scm} diese Konfiguration
-und macht sie zum voreingestellten GRUB-Boot-Eintrag (siehe @ref{Aufruf von 
guix system}).
-
-Der normale Weg, die Systemkonfiguration nachträglich zu ändern, ist, die
-Datei zu aktualisieren und @command{guix system reconfigure} erneut
-auszuführen. Man sollte nie die Dateien in @file{/etc} bearbeiten oder den
-Systemzustand mit Befehlen wie @command{useradd} oder @command{grub-install}
-verändern. Tatsächlich müssen Sie das ausdrücklich vermeiden, sonst verfällt
-nicht nur Ihre Garantie, sondern Sie können Ihr System auch nicht mehr auf
-eine alte Version des Systems zurücksetzen, falls das jemals notwendig wird.
-
address@hidden Zurücksetzen, des Betriebssystems
-Zurücksetzen bezieht sich hierbei darauf, dass jedes Mal, wenn Sie
address@hidden system reconfigure} ausführen, eine neue @dfn{Generation} des
-Systems erzeugt wird — ohne vorherige Generationen zu verändern. Alte
-Systemgenerationen bekommen einen Eintrag im Boot-Menü des Bootloaders,
-womit Sie alte Generationen beim Starten des Rechners auswählen können, wenn
-mit der neuesten Generation etwas nicht stimmt. Eine beruhigende
-Vorstellung, oder? Der Befehl @command{guix system list-generations} führt
-die auf der Platte verfügbaren Systemgenerationen auf. Es ist auch möglich,
-das System mit den Befehlen @command{guix system roll-back} und
address@hidden system switch-generation} zurückzusetzen.
-
-Obwohl der Befehl @command{guix system reconfigure} vorherige Generationen
-nicht verändern wird, müssen Sie Acht geben, dass wenn die momentan aktuelle
-Generation nicht die neueste ist (z.B.@: nach einem Aufruf von @command{guix
-system roll-back}), weil @command{guix system reconfigure} alle neueren
-Generationen überschreibt (siehe @ref{Aufruf von guix system}).
-
address@hidden Die Programmierschnittstelle
-
-Auf der Ebene von Scheme wird der Großteil der
address@hidden mit der folgenden monadischen Prozedur
-instanziiert (siehe @ref{Die Store-Monade}):
-
address@hidden {Monadische Prozedur} operating-system-derivation os
-Liefert eine Ableitung, mit der ein @code{operating-system}-Objekt @var{os}
-erstellt wird (siehe @ref{Ableitungen}).
-
-Die Ausgabe der Ableitung ist ein einzelnes Verzeichnis mit Verweisen auf
-alle Pakete, Konfigurationsdateien und andere unterstützenden Dateien, die
-nötig sind, um @var{os} zu instanziieren.
address@hidden deffn
-
-Diese Prozedur wird vom Modul @code{(gnu system)} angeboten. Zusammen mit
address@hidden(gnu services)} (siehe @ref{Dienste}) deckt dieses Modul den Kern 
von
-»Guix System« ab. Schauen Sie es sich mal an!
-
-
address@hidden »operating-system«-Referenz
address@hidden @code{operating-system}-Referenz
-
-Dieser Abschnitt fasst alle Optionen zusammen, die für
address@hidden zur Verfügung stehen (siehe @ref{Das Konfigurationssystem 
nutzen}).
-
address@hidden {Datentyp} operating-system
-Der die Betriebssystemkonfiguration repräsentierende Datentyp. Damit meinen
-wir die globale Konfiguration des Systems und nicht die, die sich nur auf
-einzelne Nutzer bezieht (siehe @ref{Das Konfigurationssystem nutzen}).
-
address@hidden @asis
address@hidden @code{kernel} (Vorgabe: @var{linux-libre})
-Das Paket für den zu nutzenden Betriebssystem-Kernel als
address@hidden wird nur der Kernel Linux-libre
-unterstützt. In der Zukunft wird man auch address@hidden benutzen können.}.
-
address@hidden @code{kernel-arguments} (Vorgabe: @code{'()})
-Eine Liste aus Zeichenketten oder G-Ausdrücken, die für zusätzliche
-Argumente an den Kernel stehen, die ihm auf seiner Befehlszeile übergeben
-werden — wie z.B.@: @code{("console=ttyS0")}.
-
address@hidden @code{bootloader}
-Das Konfigurationsobjekt für den Bootloader, mit dem das System gestartet
-wird. Siehe @ref{Bootloader-Konfiguration}.
-
address@hidden @code{label}
-This is the label (a string) as it appears in the bootloader's menu entry.
-The default label includes the kernel name and version.
-
address@hidden @code{keyboard-layout} (Vorgabe: @code{#f})
-Dieses Feld gibt an, welche Tastaturbelegung auf der Konsole benutzt werden
-soll. Es kann entweder auf @code{#f} gesetzt sein, damit die voreingestellte
-Tastaturbelegung benutzt wird (in der Regel ist diese »US English«), oder
-ein @code{<keyboard-layout>}-Verbundsobjekt sein.
-
-Diese Tastaturbelegung wird benutzt, sobald der Kernel gebootet wurde. Diese
-Tastaturbelegung wird zum Beispiel auch verwendet, wenn Sie eine Passphrase
-eintippen, falls sich Ihr Wurzeldateisystem auf einem mit
address@hidden zugeordneten Gerät befindet (siehe @ref{Zugeordnete Geräte}).
-
address@hidden Anmerkung
-Damit wird @emph{nicht} angegeben, welche Tastaturbelegung der Bootloader
-benutzt, und auch nicht, welche der grafische Display-Server
-verwendet. Siehe @ref{Bootloader-Konfiguration} für Informationen darüber,
-wie Sie die Tastaturbelegung des Bootloaders angeben können. Siehe @ref{X 
Window} für Informationen darüber, wie Sie die Tastaturbelegung angeben
-können, die das X-Fenstersystem verwendet.
address@hidden quotation
-
address@hidden @code{initrd-modules} (Vorgabe: @code{%base-initrd-modules})
address@hidden initrd
address@hidden initiale RAM-Disk
-Die Liste der Linux-Kernel-Module, die in der initialen RAM-Disk zur
-Verfügung stehen sollen. Siehe @ref{Initiale RAM-Disk}.
-
address@hidden @code{initrd} (Vorgabe: @code{base-initrd})
-Eine Prozedur, die eine initiale RAM-Disk für den Linux-Kernel
-liefert. Dieses Feld gibt es, damit auch sehr systemnahe Anpassungen
-vorgenommen werden können, aber für die normale Nutzung sollte man es kaum
-brauchen. Siehe @ref{Initiale RAM-Disk}.
-
address@hidden @code{firmware} (Vorgabe: @var{%base-firmware})
address@hidden Firmware
-Eine Liste der Firmware-Pakete, die vom Betriebssystem-Kernel geladen werden
-können.
-
-Vorgegeben ist, dass für Atheros- und Broadcom-basierte WLAN-Geräte nötige
-Firmware geladen werden kann (genauer jeweils die Linux-libre-Module
address@hidden und @code{b43-open}). Siehe den Abschnitt 
@ref{Hardware-Überlegungen} für mehr Informationen zu unterstützter Hardware.
-
address@hidden @code{host-name}
-Der Hostname
-
address@hidden @code{hosts-file}
address@hidden hosts-Datei
-Ein dateiartiges Objekt (siehe @ref{G-Ausdrücke, file-like objects}), das
-für @file{/etc/hosts} benutzt werden soll (siehe @ref{Host Names,,, libc,
-The GNU C Library Reference Manual}). Der Vorgabewert ist eine Datei mit
-Einträgen für @code{localhost} und @var{host-name}.
-
address@hidden @code{mapped-devices} (Vorgabe: @code{'()})
-Eine Liste zugeordneter Geräte (»mapped devices«). Siehe @ref{Zugeordnete 
Geräte}.
-
address@hidden @code{file-systems}
-Eine Liste von Dateisystemen. Siehe @ref{Dateisysteme}.
-
address@hidden @code{swap-devices} (Vorgabe: @code{'()})
address@hidden Swap-Geräte
-Eine Liste von Zeichenketten, die Geräte identifizieren oder als
-»Swap-Speicher« genutzte Dateien identifizieren (siehe @ref{Memory
-Concepts,,, libc, The GNU C Library Reference Manual}). Beispiele wären etwa
address@hidden'("/dev/sda3")} oder @code{'("/swapdatei")}. Es ist möglich, eine
-Swap-Datei auf dem Dateisystem eines zugeordneten Geräts anzugeben, sofern
-auch die Gerätezuordnung und das Dateisystem mit angegeben werden. Siehe
address@hidden Geräte} und @ref{Dateisysteme}.
-
address@hidden @code{users} (Vorgabe: @code{%base-user-accounts})
address@hidden @code{groups} (Vorgabe: @var{%base-groups})
-Liste der Benutzerkonten und Benutzergruppen. Siehe @ref{Benutzerkonten}.
-
-Wenn in der @code{users}-Liste kein Benutzerkonto mit der address@hidden
-aufgeführt wird, wird automatisch für den Administrator ein
-»root«-Benutzerkonto mit address@hidden hinzugefügt.
-
address@hidden @code{skeletons} (Vorgabe: @code{(default-skeletons)})
-Eine Liste von Tupeln aus je einem Ziel-Dateinamen und einem dateiähnlichen
-Objekt (siehe @ref{G-Ausdrücke, file-like objects}). Diese Objekte werden
-als Skeleton-Dateien im Persönlichen Verzeichnis (»Home«-Verzeichnis) jedes
-neuen Benutzerkontos angelegt.
-
-Ein gültiger Wert könnte zum Beispiel so aussehen:
-
address@hidden
-`((".bashrc" ,(plain-file "bashrc" "echo Hallo\n"))
-  (".guile" ,(plain-file "guile"
-                         "(use-modules (ice-9 readline))
-                          (activate-readline)")))
address@hidden example
-
address@hidden @code{issue} (Vorgabe: @var{%default-issue})
-Eine Zeichenkette, die als Inhalt der Datei @file{/etc/issue} verwendet
-werden soll, der jedes Mal angezeigt wird, wenn sich ein Nutzer auf einer
-Textkonsole anmeldet.
-
address@hidden @code{packages} (Vorgabe: @var{%base-packages})
-Die Menge der Pakete, die ins globale Profil installiert werden sollen,
-welches unter @file{/run/current-system/profile} zu finden ist.
-
-Die vorgegebene Paketmenge umfasst zum Kern des Systems gehörende Werkzeuge
-(»core utilities«). Es ist empfehlenswert, nicht zum Kern gehörende
-Werkzeuge (»non-core«) stattdessen in Nutzerprofile zu installieren (siehe
address@hidden von guix package}).
-
address@hidden @code{timezone}
-Eine Zeichenkette, die die Zeitzone bezeichnet, wie z.B.@:
address@hidden"Europe/Berlin"}.
-
-Mit dem Befehl @command{tzselect} können Sie herausfinden, welche
-Zeichenkette der Zeitzone Ihrer Region entspricht. Wenn Sie eine ungültige
-Zeichenkette angeben, schlägt @command{guix system} fehl.
-
address@hidden @code{locale} (Vorgabe: @code{"en_US.utf8"})
-Der Name der als Voreinstellung zu verwendenden Locale (siehe @ref{Locale
-Names,,, libc, The GNU C Library Reference Manual}). Siehe @ref{Locales} für
-weitere Informationen.
-
address@hidden @code{locale-definitions} (Vorgabe: 
@var{%default-locale-definitions})
-Die Liste der Locale-Definitionen, die kompiliert werden sollen und dann im
-laufenden System benutzt werden können. Siehe @ref{Locales}.
-
address@hidden @code{locale-libcs} (Vorgabe: @code{(list @var{glibc})})
-Die Liste der GNU-libc-Pakete, deren Locale-Daten und -Werkzeuge zum
-Erzeugen der Locale-Definitionen verwendet werden sollen. Siehe
address@hidden für eine Erläuterung der Kompatibilitätsauswirkungen,
-deretwegen man diese Option benutzen wollen könnte.
-
address@hidden @code{name-service-switch} (Vorgabe: @var{%default-nss})
-Die Konfiguration des Name Service Switch (NSS) der libc — ein
address@hidden<name-service-switch>}-Objekt. Siehe @ref{Name Service Switch} für
-Details.
-
address@hidden @code{services} (Vorgabe: @var{%base-services})
-Eine Liste von »service«-Objekten, die die Systemdienste
-repräsentieren. Siehe @ref{Dienste}.
-
address@hidden essenzielle Dienste
address@hidden @code{essential-services} (Vorgabe: …)
-The list of ``essential services''---i.e., things like instances of
address@hidden and @code{host-name-service-type} (@pxref{Service-Referenz}), 
which are derived from the operating system definition itself.
-As a user you should @emph{never} need to touch this field.
-
address@hidden @code{pam-services} (Vorgabe: @code{(base-pam-services)})
address@hidden PAM
address@hidden Pluggable Authentication Modules
address@hidden FIXME: Add xref to PAM services section.
-Dienste für @dfn{Pluggable Authentication Modules} (PAM) von Linux.
-
address@hidden @code{setuid-programs} (Vorgabe: @var{%setuid-programs})
-Eine Liste von Zeichenketten liefernden G-Ausdrücken, die setuid-Programme
-bezeichnen. Siehe @ref{Setuid-Programme}.
-
address@hidden @code{sudoers-file} (Vorgabe: @var{%sudoers-specification})
address@hidden sudoers-Datei
-Der Inhalt der Datei @file{/etc/sudoers} als ein dateiähnliches Objekt
-(siehe @ref{G-Ausdrücke, @code{local-file} und @code{plain-file}}).
-
-Diese Datei gibt an, welche Nutzer den Befehl @command{sudo} benutzen
-dürfen, was sie damit tun und welche Berechtigungen sie so erhalten
-können. Die Vorgabe ist, dass nur der Administratornutzer @code{root} und
-Mitglieder der Benutzergruppe @code{wheel} den @code{sudo}-Befehl verwenden
-dürfen.
-
address@hidden table
-
address@hidden {Scheme Syntax} this-operating-system
-When used in the @emph{lexical scope} of an operating system field
-definition, this identifier resolves to the operating system being defined.
-
-The example below shows how to refer to the operating system being defined
-in the definition of the @code{label} field:
-
address@hidden
-(use-modules (gnu) (guix))
-
-(operating-system
-  ;; ...
-  (label (package-full-name
-          (operating-system-kernel this-operating-system))))
address@hidden example
-
-It is an error to refer to @code{this-operating-system} outside an operating
-system definition.
address@hidden deffn
-
address@hidden deftp
-
address@hidden Dateisysteme
address@hidden Dateisysteme
-
-Die Liste der Dateisysteme, die eingebunden werden sollen, steht im
address@hidden der Betriebssystemdeklaration (siehe @ref{Das 
Konfigurationssystem nutzen}). Jedes Dateisystem wird mit der
address@hidden deklariert, etwa so:
-
address@hidden
-(file-system
-  (mount-point "/home")
-  (device "/dev/sda3")
-  (type "ext4"))
address@hidden example
-
-Wie immer müssen manche Felder angegeben werden — die, die im Beispiel oben
-stehen —, während andere optional sind. Die Felder werden nun beschrieben.
-
address@hidden {Datentyp} file-system
-Objekte dieses Typs repräsentieren einzubindende Dateisysteme. Sie weisen
-folgende Komponenten auf:
-
address@hidden @asis
address@hidden @code{type}
-Eine Zeichenkette, die den Typ des Dateisystems spezifiziert, z.B.@:
address@hidden"ext4"}.
-
address@hidden @code{mount-point}
-Der Einhängepunkt, d.h.@: der Pfad, an dem das Dateisystem eingebunden
-werden soll.
-
address@hidden @code{device}
-Hiermit wird die »Quelle« des Dateisystems bezeichnet. Sie kann eines von
-drei Dingen sein: die Bezeichnung (»Labels«) eines Dateisystems, die
-UUID-Kennung des Dateisystems oder der Name eines @file{/dev}-Knotens. Mit
-Bezeichnungen und UUIDs kann man Dateisysteme benennen, ohne den Gerätenamen
address@hidden Sie: Obwohl es verführerisch ist, mit
address@hidden/dev/disk/by-uuid} und ähnlichen Gerätenamen dasselbe Resultat
-bekommen zu wollen, raten wir davon ab: Diese speziellen Gerätenamen werden
-erst vom udev-Daemon erzeugt und sind, wenn die Geräte eingebunden werden,
-vielleicht noch nicht verfügbar.}.
-
address@hidden file-system-label
-Dateisystem-Bezeichnungen (»Labels«) werden mit der Prozedur
address@hidden erzeugt und UUID-Kennungen werden mit @code{uuid}
-erzeugt, während Knoten in @file{/dev} mit ihrem Pfad als einfache
-Zeichenketten aufgeführt werden. Hier ist ein Beispiel, wie wir ein
-Dateisystem anhand seiner Bezeichnung aufführen, wie sie vom Befehl
address@hidden angezeigt wird:
-
address@hidden
-(file-system
-  (mount-point "/home")
-  (type "ext4")
-  (device (file-system-label "my-home")))
address@hidden example
-
address@hidden uuid
-UUID-Kennungen werden mit der @code{uuid}-Form von ihrer Darstellung als
-Zeichenkette (wie sie vom Befehl @command{tune2fs -l} angezeigt wird)
address@hidden @code{uuid}-Form nimmt 16-Byte-UUIDs entgegen, wie
-sie in @uref{https://tools.ietf.org/html/rfc4122, address@hidden definiert
-sind. Diese Form der UUID wird unter anderem von der ext2-Familie von
-Dateisystemen verwendet, sie unterscheidet sich jedoch zum Beispiel von den
-»UUID« genannten Kennungen, wie man sie bei FAT-Dateisystemen findet.} wie
-hier:
-
address@hidden
-(file-system
-  (mount-point "/home")
-  (type "ext4")
-  (device (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb")))
address@hidden example
-
-Wenn die Quelle eines Dateisystems ein zugeordnetes Gerät (siehe 
@ref{Zugeordnete Geräte}) ist, @emph{muss} sich das @code{device}-Feld auf den 
zugeordneten
-Gerätenamen beziehen — z.B.@: @file{"/dev/mapper/root-partition"}. Das ist
-nötig, damit das System weiß, dass das Einbinden des Dateisystems davon
-abhängt, die entsprechende Gerätezuordnung hergestellt zu haben.
-
address@hidden @code{flags} (Vorgabe: @code{'()})
-Eine Liste von Symbolen, die Einbinde-Flags (»mount flags«)
-bezeichnen. Erkannt werden unter anderem @code{read-only},
address@hidden, @code{no-dev} (Zugang zu besonderen Dateien verweigern),
address@hidden (setuid- und setgid-Bits ignorieren) und @code{no-exec}
-(Programmausführungen verweigern).
-
address@hidden @code{options} (Vorgabe: @code{#f})
-Entweder @code{#f} oder eine Zeichenkette mit Einbinde-Optionen (»mount
-options«).
-
address@hidden @code{mount?} (Vorgabe: @code{#t})
-Dieser Wert zeigt an, ob das Dateisystem automatisch eingebunden werden
-soll, wenn das System gestartet wird. Ist der Wert @code{#f}, dann erhält
-das Dateisystem nur einen Eintrag in der Datei @file{/etc/fstab} (welche vom
address@hidden zum Einbinden gelesen wird), es wird aber nicht
-automatisch eingebunden.
-
address@hidden @code{needed-for-boot?} (Vorgabe: @code{#f})
-Dieser boolesche Wert gibt an, ob das Dateisystem zum Hochfahren des Systems
-notwendig ist. In diesem Fall wird das Dateisystem eingebunden, wenn die
-initiale RAM-Disk (initrd) geladen wird. Für zum Beispiel das
-Wurzeldateisystem ist dies ohnehin immer der Fall.
-
address@hidden @code{check?} (Vorgabe: @code{#t})
-Dieser boolesche Wert sagt aus, ob das Dateisystem vor dem Einbinden auf
-Fehler hin geprüft werden soll.
-
address@hidden @code{create-mount-point?} (Vorgabe: @code{#f})
-Steht dies auf wahr, wird der Einhängepunkt vor dem Einbinden erstellt, wenn
-er noch nicht existiert.
-
address@hidden @code{dependencies} (Vorgabe: @code{'()})
-Dies ist eine Liste von @code{<file-system>}- oder
address@hidden<mapped-device>}-Objekten, die Dateisysteme repräsentieren, die 
vor
-diesem Dateisystem eingebunden oder zugeordnet werden müssen (und nach
-diesem ausgehängt oder geschlossen werden müssen).
-
-Betrachten Sie zum Beispiel eine Hierarchie von Einbindungen:
address@hidden/sys/fs/cgroup} ist eine Abhängigkeit von 
@file{/sys/fs/cgroup/cpu}
-und @file{/sys/fs/cgroup/memory}.
-
-Ein weiteres Beispiel ist ein Dateisystem, was von einem zugeordneten Gerät
-abhängt, zum Beispiel zur Verschlüsselung einer Partition (siehe 
@ref{Zugeordnete Geräte}).
address@hidden table
address@hidden deftp
-
-Das Modul @code{(gnu system file-systems)} exportiert die folgenden
-nützlichen Variablen.
-
address@hidden {Scheme-Variable} %base-file-systems
-Hiermit werden essenzielle Dateisysteme bezeichnet, die für normale Systeme
-unverzichtbar sind, wie zum Beispiel @var{%pseudo-terminal-file-system} und
address@hidden (siehe unten). Betriebssystemdeklaration sollten auf
-jeden Fall mindestens diese enthalten.
address@hidden defvr
-
address@hidden {Scheme-Variable} %pseudo-terminal-file-system
-Das als @file{/dev/pts} einzubindende Dateisystem. Es unterstützt über
address@hidden und ähnliche Funktionen erstellte @dfn{Pseudo-Terminals}
-(siehe @ref{Pseudo-Terminals,,, libc, The GNU C Library Reference
-Manual}). Pseudo-Terminals werden von Terminal-Emulatoren wie
address@hidden benutzt.
address@hidden defvr
-
address@hidden {Scheme-Variable} %shared-memory-file-system
-Dieses Dateisystem wird als @file{/dev/shm} eingebunden, um Speicher
-zwischen Prozessen teilen zu können (siehe @ref{Memory-mapped I/O,
address@hidden,, libc, The GNU C Library Reference Manual}).
address@hidden defvr
-
address@hidden {Scheme-Variable} %immutable-store
-Dieses Dateisystem vollzieht einen »bind mount« des @file{/gnu/store}, um
-ihn für alle Nutzer einschließlich des Administratornutzers @code{root} nur
-lesbar zu machen, d.h.@: Schreibrechte zu entziehen. Dadurch kann als
address@hidden ausgeführte Software, oder der Systemadministrator, nicht aus
-Versehen den Store modifizieren.
-
-Der Daemon kann weiterhin in den Store schreiben, indem er ihn selbst mit
-Schreibrechten in seinem eigenen »Namensraum« einbindet.
address@hidden defvr
-
address@hidden {Scheme-Variable} %binary-format-file-system
-Das @code{binfmt_misc}-Dateisystem, durch das beliebige Dateitypen als
-ausführbare Dateien auf der Anwendungsebene (dem User Space) zugänglich
-gemacht werden können. Es setzt voraus, dass das Kernel-Modul
address@hidden geladen wurde.
address@hidden defvr
-
address@hidden {Scheme-Variable} %fuse-control-file-system
-Das @code{fusectl}-Dateisystem, womit »unprivilegierte« Nutzer ohne
-besondere Berechtigungen im User Space FUSE-Dateisysteme einbinden und
-aushängen können. Dazu muss das Kernel-Modul @code{fuse.ko} geladen sein.
address@hidden defvr
-
address@hidden Zugeordnete Geräte
address@hidden Zugeordnete Geräte
-
address@hidden Gerätezuordnung
address@hidden zugeordnete Geräte
-Der Linux-Kernel unterstützt das Konzept der @dfn{Gerätezuordnung}: Ein
-blockorientiertes Gerät wie eine Festplattenpartition kann einem neuen Gerät
address@hidden werden, gewöhnlich unter @code{/dev/mapper/}, wobei das
-neue Gerät durchlaufende Daten zusätzlicher Verarbeitung unterzogen
address@hidden Sie, dass mit address@hidden kein Unterschied
-zwischen dem Konzept eines »zugeordneten Geräts« und dem eines Dateisystems
-besteht: Dort werden bei beiden Ein- und Ausgabeoperationen auf eine Datei
-in Operationen auf dessen Hintergrundspeicher @emph{übersetzt}. Hurd
-implementiert zugeordnete Geräte genau wie Dateisysteme mit dem generischen
address@hidden (siehe @ref{Translators,,, hurd, The GNU Hurd
-Reference Manual}).}. Ein typisches Beispiel ist eine Gerätezuordnung zur
-Verschlüsselung: Jeder Schreibzugriff auf das zugeordnete Gerät wird
-transparent verschlüsselt und jeder Lesezugriff ebenso entschlüsselt. Guix
-erweitert dieses Konzept, indem es darunter jedes Gerät und jede Menge von
-Geräten versteht, die auf irgendeine Weise @dfn{umgewandelt} wird, um ein
-neues Gerät zu bilden; zum Beispiel entstehen auch RAID-Geräte aus einem
address@hidden mehrerer anderer Geräte, wie etwa Festplatten oder Partition
-zu einem einzelnen Gerät, das sich wie eine Partition verhält. Ein weiteres
-Beispiel, das noch nicht in Guix implementiert wurde, sind »LVM logical
-volumes«.
-
-Zugeordnete Geräte werden mittels einer @code{mapped-device}-Form
-deklariert, die wie folgt definiert ist; Beispiele folgen weiter unten.
-
address@hidden {Datentyp} mapped-device
-Objekte dieses Typs repräsentieren Gerätezuordnungen, die gemacht werden,
-wenn das System hochfährt.
-
address@hidden @code
address@hidden source
-Es handelt sich entweder um eine Zeichenkette, die den Namen eines
-zuzuordnenden blockorientierten Geräts angibt, wie @code{"/dev/sda3"}, oder
-um eine Liste solcher Zeichenketten, sofern mehrere Geräts zu einem neuen
-Gerät verbunden werden.
-
address@hidden target
-Diese Zeichenkette gibt den Namen des neuen zugeordneten Geräts an. Bei
-Kernel-Zuordnern, wie verschlüsselten Geräten vom Typ
address@hidden, wird durch Angabe von @code{"my-partition"} ein
-Gerät @code{"/dev/mapper/my-partition"} erzeugt. Bei RAID-Geräten vom Typ
address@hidden muss der Gerätename als voller Pfad wie zum
-Beispiel @code{"/dev/md0"} angegeben werden.
-
address@hidden type
-Dies muss ein @code{mapped-device-kind}-Objekt sein, das angibt, wie die
-Quelle @var{source} dem Ziel @var{target} zugeordnet wird.
address@hidden table
address@hidden deftp
-
address@hidden {Scheme-Variable} luks-device-mapping
-Hiermit wird ein blockorientiertes Gerät mit LUKS verschlüsselt, mit Hilfe
-des Befehls @command{cryptsetup} aus dem gleichnamigen Paket. Dazu wird das
-Linux-Kernel-Modul @code{dm-crypt} vorausgesetzt.
address@hidden defvr
-
address@hidden {Scheme-Variable} raid-device-mapping
-Dies definiert ein RAID-Gerät, das mit dem Befehl @code{mdadm} aus dem
-gleichnamigen Paket als Verbund zusammengestellt wird. Es setzt voraus, dass
-das Linux-Kernel-Modul für das entsprechende RAID-Level geladen ist, z.B.@:
address@hidden für RAID-4, RAID-5 oder RAID-6, oder @code{raid10} für
-RAID-10.
address@hidden defvr
-
address@hidden Laufwerksverschlüsselung
address@hidden LUKS
-Das folgende Beispiel gibt eine Zuordnung von @file{/dev/sda3} auf
address@hidden/dev/mapper/home} mit LUKS an — dem
address@hidden://gitlab.com/cryptsetup/cryptsetup,Linux Unified Key Setup},
-einem Standardmechanismus zur Plattenverschlüsselung. Das Gerät
address@hidden/dev/mapper/home} kann dann als @code{device} einer
address@hidden benutzt werden (siehe @ref{Dateisysteme}).
-
address@hidden
-(mapped-device
-  (source "/dev/sda3")
-  (target "home")
-  (type luks-device-mapping))
address@hidden example
-
-Um nicht davon abhängig zu sein, wie Ihre Geräte nummeriert werden, können
-Sie auch die LUKS-UUID (@dfn{unique identifier}, d.h.@: den eindeutigen
-Bezeichner) des Quellgeräts auf der Befehlszeile ermitteln:
-
address@hidden
-cryptsetup luksUUID /dev/sda3
address@hidden example
-
-und wie folgt benutzen:
-
address@hidden
-(mapped-device
-  (source (uuid "cb67fc72-0d54-4c88-9d4b-b225f30b0f44"))
-  (target "home")
-  (type luks-device-mapping))
address@hidden example
-
address@hidden Swap-Verschlüsselung
-Es ist auch wünschenswert, Swap-Speicher zu verschlüsseln, da in den
-Swap-Speicher sensible Daten ausgelagert werden können. Eine Möglichkeit
-ist, eine Swap-Datei auf einem mit LUKS-Verschlüsselung zugeordneten
-Dateisystem zu verwenden. Dann wird die Swap-Datei verschlüsselt, weil das
-ganze Gerät verschlüsselt wird. Ein Beispiel finden Sie im Abschnitt
address@hidden der Installation,,Disk Partitioning}.
-
-Ein RAID-Gerät als Verbund der Partitionen @file{/dev/sda1} und
address@hidden/dev/sdb1} kann wie folgt deklariert werden:
-
address@hidden
-(mapped-device
-  (source (list "/dev/sda1" "/dev/sdb1"))
-  (target "/dev/md0")
-  (type raid-device-mapping))
address@hidden example
-
-Das Gerät @file{/dev/md0} kann als @code{device} in einer
address@hidden dienen (siehe @ref{Dateisysteme}). Beachten
-Sie, dass das RAID-Level dabei nicht angegeben werden muss; es wird während
-der initialen Erstellung und Formatierung des RAID-Geräts festgelegt und
-später automatisch bestimmt.
-
-
address@hidden Benutzerkonten
address@hidden Benutzerkonten
-
address@hidden Benutzer
address@hidden Konten
address@hidden Benutzerkonten
-Benutzerkonten und Gruppen werden allein durch die
address@hidden des Betriebssystems verwaltet. Sie
-werden mit den @code{user-account}- und @code{user-group}-Formen angegeben:
-
address@hidden
-(user-account
-  (name "alice")
-  (group "users")
-  (supplementary-groups '("wheel"   ;zur sudo-Nutzung usw. berechtigen
-                          "audio"   ;Soundkarte
-                          "video"   ;Videogeräte wie Webcams
-                          "cdrom")) ;die gute alte CD-ROM
-  (comment "Bobs Schwester")
-  (home-directory "/home/alice"))
address@hidden example
-
-Beim Hochfahren oder nach Abschluss von @command{guix system reconfigure}
-stellt das System sicher, dass nur die in der
address@hidden angegebenen Benutzerkonten und Gruppen
-existieren, mit genau den angegebenen Eigenschaften. Daher gehen durch
-direkten Aufruf von Befehlen wie @command{useradd} erwirkte Erstellungen
-oder Modifikationen von Konten oder Gruppen verloren, sobald rekonfiguriert
-oder neugestartet wird. So wird sichergestellt, dass das System genau so
-funktioniert, wie es deklariert wurde.
-
address@hidden {Datentyp} user-account
-Objekte dieses Typs repräsentieren Benutzerkonten. Darin können folgende
-Komponenten aufgeführt werden:
-
address@hidden @asis
address@hidden @code{name}
-Der Name des Benutzerkontos.
-
address@hidden @code{group}
address@hidden Gruppen
-Dies ist der Name (als Zeichenkette) oder die Bezeichnung (als Zahl) der
-Benutzergruppe, zu der dieses Konto gehört.
-
address@hidden @code{supplementary-groups} (Vorgabe: @code{'()})
-Dies kann optional als Liste von Gruppennamen angegeben werden, zu denen
-dieses Konto auch gehört.
-
address@hidden @code{uid} (Vorgabe: @code{#f})
-Dies ist entweder der Benutzeridentifikator dieses Kontos (seine »User ID«)
-als Zahl oder @code{#f}. Bei Letzterem wird vom System automatisch eine Zahl
-gewählt, wenn das Benutzerkonto erstellt wird.
-
address@hidden @code{comment} (Vorgabe: @code{""})
-Ein Kommentar zu dem Konto, wie etwa der vollständige Name des
-Kontoinhabers.
-
address@hidden @code{home-directory}
-Der Name des Persönlichen Verzeichnisses (»Home«-Verzeichnis) für dieses
-Konto.
-
address@hidden @code{create-home-directory?} (Vorgabe: @code{#t})
-Zeigt an, ob das Persönliche Verzeichnis für das Konto automatisch erstellt
-werden soll, falls es noch nicht existiert.
-
address@hidden @code{shell} (Vorgabe: Bash)
-Ein G-Ausdruck, der den Dateinamen des Programms angibt, das dem Benutzer
-als Shell dienen soll (siehe @ref{G-Ausdrücke}).
-
address@hidden @code{system?} (Vorgabe: @code{#f})
-Dieser boolesche Wert zeigt an, ob das Konto ein »System«-Benutzerkonto
-ist. Systemkonten werden manchmal anders behandelt, zum Beispiel werden sie
-auf grafischen Anmeldebildschirmen nicht aufgeführt.
-
address@hidden
address@hidden Passwort, für Benutzerkonten
address@hidden @code{password} (Vorgabe: @code{#f})
-Normalerweise lassen Sie dieses Feld auf @code{#f} und initialisieren
-Benutzerpasswörter als @code{root} mit dem @command{passwd}-Befehl. Die
-Benutzer lässt man ihr eigenes Passwort dann mit @command{passwd}
-ändern. Mit @command{passwd} festgelegte Passwörter bleiben natürlich beim
-Neustarten und beim Rekonfigurieren erhalten.
-
-Wenn Sie aber @emph{doch} ein anfängliches Passwort für ein Konto
-voreinstellen möchten, muss dieses Feld hier das verschlüsselte Passwort als
-Zeichenkette enthalten. Sie können dazu die Prozedur @code{crypt} benutzen.
-
address@hidden
-(user-account
-  (name "charlie")
-  (group "users")
-
-  ;; Specify a SHA-512-hashed initial password.
-  (password (crypt "InitialPassword!" "$6$abc")))
address@hidden example
-
address@hidden Anmerkung
-The hash of this initial password will be available in a file in
address@hidden/gnu/store}, readable by all the users, so this method must be 
used
-with care.
address@hidden quotation
-
-Siehe @ref{Passphrase Storage,,, libc, The GNU C Library Reference Manual}
-für weitere Informationen über Passwortverschlüsselung und
address@hidden,,, guile, GNU Guile Reference Manual} für Informationen über
-die Prozedur @code{crypt} in Guile.
-
address@hidden table
address@hidden deftp
-
address@hidden Gruppen
-Benutzergruppen-Deklarationen sind noch einfacher aufgebaut:
-
address@hidden
-(user-group (name "students"))
address@hidden example
-
address@hidden {Datentyp} user-group
-Dieser Typ gibt, nun ja, eine Benutzergruppe an. Es gibt darin nur ein paar
-Felder:
-
address@hidden @asis
address@hidden @code{name}
-Der Name der Gruppe.
-
address@hidden @code{id} (Vorgabe: @code{#f})
-Der Gruppenbezeichner (eine Zahl). Wird er als @code{#f} angegeben, wird
-automatisch eine neue Zahl reserviert, wenn die Gruppe erstellt wird.
-
address@hidden @code{system?} (Vorgabe: @code{#f})
-Dieser boolesche Wert gibt an, ob es sich um eine »System«-Gruppe
-handelt. Systemgruppen sind solche mit einer kleinen Zahl als Bezeichner.
-
address@hidden @code{password} (Vorgabe: @code{#f})
-Wie, Benutzergruppen können ein Passwort haben? Nun ja, anscheinend
-schon. Wenn es nicht auf @code{#f} steht, gibt dieses Feld das Passwort der
-Gruppe an.
-
address@hidden table
address@hidden deftp
-
-Um Ihnen das Leben zu erleichtern, gibt es eine Variable, worin alle
-grundlegenden Benutzergruppen aufgeführt sind, die man erwarten könnte:
-
address@hidden {Scheme-Variable} %base-groups
-Die Liste von Basis-Benutzergruppen, von denen Benutzer und/oder Pakete
-erwarten könnten, dass sie auf dem System existieren. Dazu gehören Gruppen
-wie »root«, »wheel« und »users«, sowie Gruppen, um den Zugriff auf bestimmte
-Geräte einzuschränken, wie »audio«, »disk« und »cdrom«.
address@hidden defvr
-
address@hidden {Scheme-Variable} %base-user-accounts
-Diese Liste enthält Basis-Systembenutzerkonten, von denen Programme erwarten
-können, dass sie auf einem GNU/Linux-System existieren, wie das Konto
-»nobody«.
-
-Beachten Sie, dass das Konto »root« für den Administratornutzer nicht
-dazugehört. Es ist ein Sonderfall und wird automatisch erzeugt, egal ob es
-spezifiziert wurde oder nicht.
address@hidden defvr
-
address@hidden Tastaturbelegung
address@hidden Tastaturbelegung
-
address@hidden Tastaturbelegung
address@hidden Keymap
-To specify what each key of your keyboard does, you need to tell the
-operating system what @dfn{keyboard layout} you want to use.  The default,
-when nothing is specified, is the US English QWERTY layout for 105-key PC
-keyboards.  However, German speakers will usually prefer the German QWERTZ
-layout, French speakers will want the AZERTY layout, and so on; hackers
-might prefer Dvorak or bépo, and they might even want to further customize
-the effect of some of the keys.  This section explains how to get that done.
-
address@hidden Tastaturbelegung, Definition
-There are three components that will want to know about your keyboard
-layout:
-
address@hidden
address@hidden
-The @emph{bootloader} may want to know what keyboard layout you want to use
-(@pxref{Bootloader-Konfiguration, @code{keyboard-layout}}).  This is useful
-if you want, for instance, to make sure that you can type the passphrase of
-your encrypted root partition using the right layout.
-
address@hidden
-The @emph{operating system kernel}, Linux, will need that so that the
-console is properly configured (@pxref{»operating-system«-Referenz,
address@hidden).
-
address@hidden
-The @emph{graphical display server}, usually Xorg, also has its own idea of
-the keyboard layout (@pxref{X Window, @code{keyboard-layout}}).
address@hidden itemize
-
-Guix allows you to configure all three separately but, fortunately, it
-allows you to share the same keyboard layout for all three components.
-
address@hidden XKB, Tastaturbelegungen
-Keyboard layouts are represented by records created by the
address@hidden procedure of @code{(gnu system keyboard)}.  Following
-the X Keyboard extension (XKB), each layout has four attributes: a name
-(often a language code such as ``fi'' for Finnish or ``jp'' for Japanese),
-an optional variant name, an optional keyboard model name, and a possibly
-empty list of additional options.  In most cases the layout name is all you
-care about.  Here are a few example:
-
address@hidden
-;; The German QWERTZ layout.  Here we assume a standard
-;; "pc105" keyboard model.
-(keyboard-layout "de")
-
-;; The bépo variant of the French layout.
-(keyboard-layout "fr" "bepo")
-
-;; The Catalan layout.
-(keyboard-layout "es" "cat")
-
-;; The Latin American Spanish layout.  In addition, the
-;; "Caps Lock" key is used as an additional "Ctrl" key,
-;; and the "Menu" key is used as a "Compose" key to enter
-;; accented letters.
-(keyboard-layout "latam"
-                 #:options '("ctrl:nocaps" "compose:menu"))
-
-;; The Russian layout for a ThinkPad keyboard.
-(keyboard-layout "ru" #:model "thinkpad")
-
-;; The "US international" layout, which is the US layout plus
-;; dead keys to enter accented characters.  This is for an
-;; Apple MacBook keyboard.
-(keyboard-layout "us" "intl" #:model "macbook78")
address@hidden example
-
-See the @file{share/X11/xkb} directory of the @code{xkeyboard-config}
-package for a complete list of supported layouts, variants, and models.
-
address@hidden Tastaturbelegung, Konfiguration
-Let's say you want your system to use the Turkish keyboard layout throughout
-your system---bootloader, console, and Xorg.  Here's what your system
-configuration would look like:
-
address@hidden set-xorg-configuration
address@hidden
-;; Using the Turkish layout for the bootloader, the console,
-;; and for Xorg.
-
-(operating-system
-  ;; ...
-  (keyboard-layout (keyboard-layout "tr"))  ;for the console
-  (bootloader (bootloader-configuration
-                (bootloader grub-efi-bootloader)
-                (target "/boot/efi")
-                (keyboard-layout keyboard-layout))) ;for GRUB
-  (services (cons (set-xorg-configuration
-                    (xorg-configuration             ;for Xorg
-                      (keyboard-layout keyboard-layout)))
-                  %desktop-services)))
address@hidden lisp
-
-In the example above, for GRUB and for Xorg, we just refer to the
address@hidden field defined above, but we could just as well refer
-to a different layout.  The @code{set-xorg-configuration} procedure
-communicates the desired Xorg configuration to the graphical log-in manager,
-by default GDM.
-
-We've discussed how to specify the @emph{default} keyboard layout of your
-system when it starts, but you can also adjust it at run time:
-
address@hidden
address@hidden
-If you're using GNOME, its settings panel has a ``Region & Language'' entry
-where you can select one or more keyboard layouts.
-
address@hidden
-Under Xorg, the @command{setxkbmap} command (from the same-named package)
-allows you to change the current layout.  For example, this is how you would
-change the layout to US Dvorak:
-
address@hidden
-setxkbmap us dvorak
address@hidden example
-
address@hidden
-The @code{loadkeys} command changes the keyboard layout in effect in the
-Linux console.  However, note that @code{loadkeys} does @emph{not} use the
-XKB keyboard layout categorization described above.  The command below loads
-the French bépo layout:
-
address@hidden
-loadkeys fr-bepo
address@hidden example
address@hidden itemize
-
address@hidden Locales
address@hidden Locales
-
address@hidden Locale
-Eine @dfn{Locale} legt die kulturellen Konventionen einer bestimmten Sprache
-und Region auf der Welt fest (siehe @ref{Locales,,, libc, The GNU C Library
-Reference Manual}). Jede Locale hat einen Namen, der typischerweise von der
-Form @address@hidden@address@hidden — z.B.@: benennt
address@hidden die Locale für französische Sprache mit den kulturellen
-Konventionen aus Luxemburg unter Verwendung der UTF-8-Kodierung.
-
address@hidden Locale-Definition
-Normalerweise werden Sie eine standardmäßig zu verwendende Locale für die
-Maschine vorgeben wollen, indem Sie das @code{locale}-Feld der
address@hidden verwenden (siehe @ref{»operating-system«-Referenz, 
@code{locale}}).
-
-Die ausgewählte Locale wird automatisch zu den dem System bekannten
address@hidden hinzugefügt, falls nötig, und ihre Kodierung wird
-aus dem Namen hergeleitet — z.B.@: wird angenommen, dass @code{bo_CN.utf8}
-als Kodierung @code{UTF-8} verwendet. Zusätzliche Locale-Definitionen können
-im Feld @code{locale-definitions} vom @code{operating-system} festgelegt
-werden — das ist zum Beispiel dann nützlich, wenn die Kodierung nicht aus
-dem Locale-Namen hergeleitet werden konnte. Die vorgegebene Menge an
-Locale-Definitionen enthält manche weit verbreiteten Locales, aber um Platz
-zu sparen, nicht alle verfügbaren Locales.
-
-Um zum Beispiel die nordfriesische Locale für Deutschland hinzuzufügen,
-könnte der Wert des Feldes wie folgt aussehen:
-
address@hidden
-(cons (locale-definition
-        (name "fy_DE.utf8") (source "fy_DE"))
-      %default-locale-definitions)
address@hidden example
-
-Um Platz zu sparen, könnte man auch wollen, dass @code{locale-definitions}
-nur die tatsächlich benutzen Locales aufführt, wie etwa:
-
address@hidden
-(list (locale-definition
-        (name "ja_JP.eucjp") (source "ja_JP")
-        (charset "EUC-JP")))
address@hidden example
-
address@hidden LOCPATH
-Die kompilierten Locale-Definitionen sind unter
address@hidden/run/current-system/locale/X.Y} verfügbar, wobei @code{X.Y} die
-Version von libc bezeichnet. Dies entspricht dem Pfad, an dem eine von Guix
-ausgelieferte address@hidden standardmäßig nach Locale-Daten sucht. Er kann
-überschrieben werden durch die Umgebungsvariable @code{LOCPATH} (siehe
address@hidden, @code{LOCPATH} und Locale-Pakete}).
-
-Die @code{locale-definition}-Form wird vom Modul @code{(gnu system locale)}
-zur Verfügung gestellt.  Details folgen unten.
-
address@hidden {Datentyp} locale-definition
-Dies ist der Datentyp einer Locale-Definition.
-
address@hidden @asis
-
address@hidden @code{name}
-Der Name der Locale. Siehe @ref{Locale Names,,, libc, The GNU C Library
-Reference Manual} für mehr Informationen zu Locale-Namen.
-
address@hidden @code{source}
-Der Name der Quelle der Locale. Typischerweise ist das der Teil
address@hidden@address@hidden des Locale-Namens.
-
address@hidden @code{charset} (Vorgabe: @code{"UTF-8"})
-Der »Zeichensatz« oder das »Code set«, d.h.@: die Kodierung dieser Locale,
address@hidden://www.iana.org/assignments/character-sets, wie die IANA sie
-definiert}.
-
address@hidden table
address@hidden deftp
-
address@hidden {Scheme-Variable} %default-locale-definitions
-Eine Liste häufig benutzter UTF-8-Locales, die als Vorgabewert des
address@hidden in @code{operating-system}-Deklarationen
-benutzt wird.
-
address@hidden Locale-Name
address@hidden Normalisiertes Codeset in Locale-Namen
-Diese Locale-Definitionen benutzen das @dfn{normalisierte Codeset} für den
-Teil des Namens, der nach dem Punkt steht (siehe @ref{Using gettextized
-software, normalized codeset,, libc, The GNU C Library Reference
-Manual}). Zum Beispiel ist @code{uk_UA.utf8} enthalten, dagegen ist etwa
address@hidden darin @emph{nicht} enthalten.
address@hidden defvr
-
address@hidden Kompatibilität der Locale-Daten
-
address@hidden Inkompatibilität, von Locale-Daten
address@hidden verfügen über ein
address@hidden, um die address@hidden anzugeben, die zum
-Kompilieren von Locale-Deklarationen verwendet werden sollen (siehe
address@hidden). »Was interessiert mich das?«, könnten Sie
-fragen. Naja, leider ist das binäre Format der Locale-Daten von einer
-libc-Version auf die nächste manchmal nicht miteinander kompatibel.
-
address@hidden See <https://sourceware.org/ml/libc-alpha/2015-09/msg00575.html>
address@hidden and 
<https://lists.gnu.org/archive/html/guix-devel/2015-08/msg00737.html>.
-Zum Beispiel kann ein mit der libc-Version 2.21 gebundenes Programm keine
-mit libc 2.22 erzeugten Locale-Daten lesen; schlimmer noch, das Programm
address@hidden statt einfach die inkompatiblen Locale-Daten zu
address@hidden 2.23 von address@hidden und neuere werden
-inkompatible Locale-Daten nur mehr überspringen, was schon einmal eine
-Verbesserung ist.}. Ähnlich kann ein gegen libc 2.22 gebundenes Programm die
-meisten, aber nicht alle, Locale-Daten von libc 2.21 lesen (Daten zu
address@hidden sind aber zum Beispiel inkompatibel); somit schlagen
-Aufrufe von @code{setlocale} vielleicht fehl, aber das Programm läuft
-weiter.
-
-Das »Problem« mit Guix ist, dass Nutzer viel Freiheit genießen: Sie können
-wählen, ob und wann sie die Software in ihren Profilen aktualisieren und
-benutzen vielleicht eine andere libc-Version als sie der Systemadministrator
-benutzt hat, um die systemweiten Locale-Daten zu erstellen.
-
-Glücklicherweise können »unprivilegierte« Nutzer ohne zusätzliche
-Berechtigungen dann zumindest ihre eigenen Locale-Daten installieren und
address@hidden entsprechend definieren (siehe @ref{locales-and-locpath,
address@hidden und Locale-Pakete}).
-
-Trotzdem ist es am besten, wenn die systemweiten Locale-Daten unter
address@hidden/run/current-system/locale} für alle libc-Versionen erstellt 
werden,
-die auf dem System noch benutzt werden, damit alle Programme auf sie
-zugreifen können — was auf einem Mehrbenutzersystem ganz besonders wichtig
-ist. Dazu kann der Administrator des Systems mehrere libc-Pakete im
address@hidden vom @code{operating-system} angeben:
-
address@hidden
-(use-package-modules base)
-
-(operating-system
-  ;; @dots{}
-  (locale-libcs (list glibc-2.21 (canonical-package glibc))))
address@hidden example
-
-Mit diesem Beispiel ergäbe sich ein System, was Locale-Definitionen sowohl
-für libc 2.21 als auch die aktuelle Version von libc in
address@hidden/run/current-system/locale} hat.
-
-
address@hidden Dienste
address@hidden Dienste
-
address@hidden Systemdienste
-Ein wichtiger Bestandteil des Schreibens einer
address@hidden ist das Auflisten der
address@hidden und ihrer Konfiguration (siehe @ref{Das Konfigurationssystem 
nutzen}). Systemdienste sind typischerweise im Hintergrund
-laufende Daemon-Programme, die beim Hochfahren des Systems gestartet werden,
-oder andere Aktionen, die zu dieser Zeit durchgeführt werden müssen — wie
-das Konfigurieren des Netzwerkzugangs.
-
-Guix hat eine weit gefasste Definition, was ein »Dienst« ist (siehe
address@hidden), aber viele Dienste sind solche, die von
address@hidden verwaltet werden (siehe @ref{Shepherd-Dienste}). Auf
-einem laufenden System kann der @command{herd}-Befehl benutzt werden, um
-verfügbare Dienste aufzulisten, ihren Status anzuzeigen, sie zu starten und
-zu stoppen oder andere angebotene Operationen durchzuführen (siehe @ref{Jump
-Start,,, shepherd, The GNU Shepherd Manual}). Zum Beispiel:
-
address@hidden
-# herd status
address@hidden example
-
-Dieser Befehl, durchgeführt als @code{root}, listet die momentan definierten
-Dienste auf. Der Befehl @command{herd doc} fasst kurz zusammen, was ein
-gegebener Dienst ist und welche Aktionen mit ihm assoziiert sind:
-
address@hidden
-# herd doc nscd
-Run libc's name service cache daemon (nscd).
-
-# herd doc nscd action invalidate
-invalidate: Invalidate the given cache--e.g., 'hosts' for host name lookups.
address@hidden example
-
-Die Unterbefehle @command{start}, @command{stop} und @command{restart} haben
-die Wirkung, die man erwarten würde. Zum Beispiel kann mit folgenden
-Befehlen der nscd-Dienst angehalten und der Xorg-Display-Server neu
-gestartet werden:
-
address@hidden
-# herd stop nscd
-Service nscd has been stopped.
-# herd restart xorg-server
-Service xorg-server has been stopped.
-Service xorg-server has been started.
address@hidden example
-
-Die folgenden Abschnitte dokumentieren die verfügbaren Dienste, die in einer
address@hidden benutzt werden können, angefangen mit
-den Diensten im Kern des Systems (»core services«)
-
address@hidden
-* Basisdienste::             Essenzielle Systemdienste.
-* Geplante Auftragsausführung::  Der mcron-Dienst.
-* Log-Rotation::             Der rottlog-Dienst.
-* Netzwerkdienste::          Netzwerkeinrichtung, SSH-Daemon etc.
-* X Window::                 Grafische Anzeige.
-* Druckdienste::             Unterstützung für lokale und entfernte 
-                               Drucker.
-* Desktop-Dienste::          D-Bus- und Desktop-Dienste.
-* Tondienste::               Dienste für ALSA und Pulseaudio.
-* Datenbankdienste::         SQL-Datenbanken, Schlüssel-Wert-Speicher etc.
-* Mail-Dienste::             IMAP, POP3, SMTP und so weiter.
-* Kurznachrichtendienste::   Dienste für Kurznachrichten.
-* Telefondienste::           Telefoniedienste.
-* Überwachungsdienste::     Dienste zur Systemüberwachung.
-* Kerberos-Dienste::         Kerberos-Dienste.
-* LDAP-Dienste::             LDAP-Dienste.
-* Web-Dienste::              Web-Server.
-* Zertifikatsdienste::       TLS-Zertifikate via Let’s Encrypt.
-* DNS-Dienste::              DNS-Daemons.
-* VPN-Dienste::              VPN-Daemons.
-* Network File System::      Dienste mit Bezug zum Netzwerkdateisystem.
-* Kontinuierliche Integration::  Der Cuirass-Dienst.
-* Dienste zur Stromverbrauchsverwaltung::  Den Akku schonen.
-* Audio-Dienste::            Der MPD.
-* Virtualisierungsdienste::  Dienste für virtuelle Maschinen.
-* Versionskontrolldienste::  Entfernten Zugang zu Git-Repositorys bieten.
-* Spieldienste::             Spielserver.
-* Verschiedene Dienste::     Andere Dienste.
address@hidden menu
-
address@hidden Basisdienste
address@hidden Basisdienste
-
-Das Modul @code{(gnu services base)} stellt Definitionen für Basis-Dienste
-zur Verfügung, von denen man erwartet, dass das System sie anbietet. Im
-Folgenden sind die von diesem Modul exportierten Dienste aufgeführt.
-
address@hidden {Scheme-Variable} %base-services
-Diese Variable enthält eine Liste von Basis-Diensten, die man auf einem
-System vorzufinden erwartet (siehe @ref{Diensttypen und Dienste} für
-weitere Informationen zu Dienstobjekten): ein Anmeldungsdienst (mingetty)
-auf jeder Konsole (jedem »tty«), syslogd, den Name Service Cache Daemon
-(nscd) von libc, die udev-Geräteverwaltung und weitere.
-
-Dies ist der Vorgabewert für das @code{services}-Feld für die Dienste von
address@hidden Normalerweise werden Sie, wenn Sie
-ein Betriebssystem anpassen, Dienste an die @var{%base-services}-Liste
-anhängen, wie hier gezeigt:
-
address@hidden
-(append (list (service avahi-service-type)
-              (service openssh-service-type))
-        %base-services)
address@hidden example
address@hidden defvr
-
address@hidden {Scheme-Variable} special-files-service-type
-Dieser Dienst richtet »besondere Dateien« wie @file{/bin/sh} ein; eine
-Instanz des Dienstes ist Teil der @code{%base-services}.
-
-Der mit @code{special-files-service-type}-Diensten assoziierte Wert muss
-eine Liste von Tupeln sein, deren erstes Element eine »besondere Datei« und
-deren zweites Element deren Zielpfad ist. Der Vorgabewert ist:
-
address@hidden @file{/bin/sh}
address@hidden @file{sh}, in @file{/bin}
address@hidden
-`(("/bin/sh" ,(file-append @var{bash} "/bin/sh")))
address@hidden example
-
address@hidden @file{/usr/bin/env}
address@hidden @file{env}, in @file{/usr/bin}
-Wenn Sie zum Beispiel auch @code{/usr/bin/env} zu Ihrem System hinzufügen
-möchten, können Sie den Wert ändern auf:
-
address@hidden
-`(("/bin/sh" ,(file-append @var{bash} "/bin/sh"))
-  ("/usr/bin/env" ,(file-append @var{coreutils} "/bin/env")))
address@hidden example
-
-Da dieser Dienst Teil der @code{%base-services} ist, können Sie
address@hidden benutzen, um die Liste besonderer Dateien abzuändern
-(siehe @ref{Service-Referenz, @code{modify-services}}). Die leichte
-Alternative, um eine besondere Datei hinzuzufügen, ist über die Prozedur
address@hidden (siehe unten).
address@hidden defvr
-
address@hidden {Scheme-Prozedur} extra-special-file @var{Datei} @var{Ziel}
-Das @var{Ziel} als »besondere Datei« @var{Datei} verwenden.
-
-Beispielsweise können Sie die folgenden Zeilen in das @code{services}-Feld
-Ihrer Betriebssystemdeklaration einfügen für eine symbolische Verknüpfung
address@hidden/usr/bin/env}:
-
address@hidden
-(extra-special-file "/usr/bin/env"
-                    (file-append coreutils "/bin/env"))
address@hidden example
address@hidden deffn
-
address@hidden {Scheme-Prozedur} host-name-service @var{Name}
-Liefert einen Dienst, der den Rechnernamen (den »Host«-Namen des Rechners)
-als @var{Name} festlegt.
address@hidden deffn
-
address@hidden {Scheme-Prozedur} login-service @var{Konfiguration}
-Liefert einen Dienst, der die Benutzeranmeldung möglich macht. Dazu
-verwendet er die angegebene @var{Konfiguration}, ein
address@hidden<login-configuration>}-Objekt, das unter anderem die beim Anmelden
-angezeigte Mitteilung des Tages (englisch »Message of the Day«) festlegt.
address@hidden deffn
-
address@hidden {Datentyp} login-configuration
-Dies ist der Datentyp, der die Anmeldekonfiguration repräsentiert.
-
address@hidden @asis
-
address@hidden @code{motd}
address@hidden Message of the Day
-Ein dateiartiges Objekt, das die »Message of the Day« enthält.
-
address@hidden @code{allow-empty-passwords?} (Vorgabe: @code{#t})
-Leere Passwörter standardmäßig zulassen, damit sich neue Anwender anmelden
-können, direkt nachdem das Benutzerkonto »root« für den Administrator
-angelegt wurde.
-
address@hidden table
address@hidden deftp
-
address@hidden {Scheme-Prozedur} mingetty-service @var{Konfiguration}
-Liefert einen Dienst, der mingetty nach den Vorgaben der @var{Konfiguration}
-ausführt, einem @code{<mingetty-configuration>}-Objekt, das unter anderem
-die Konsole (das »tty«) festlegt, auf der mingetty laufen soll.
address@hidden deffn
-
address@hidden {Datentyp} mingetty-configuration
-Dieser Datentyp repräsentiert die Konfiguration von Mingetty, der
-vorgegebenen Implementierung zur Anmeldung auf einer virtuellen Konsole.
-
address@hidden @asis
-
address@hidden @code{tty}
-Der Name der Konsole, auf der diese Mingetty-Instanz läuft — z.B.@:
address@hidden"tty1"}.
-
address@hidden @code{auto-login} (Vorgabe: @code{#f})
-Steht dieses Feld auf wahr, muss es eine Zeichenkette sein, die den
-Benutzernamen angibt, als der man vom System automatisch angemeldet
-wird. Ist es @code{#f}, so muss zur Anmeldung ein Benutzername und ein
-Passwort eingegeben werden.
-
address@hidden @code{login-program} (Vorgabe: @code{#f})
-Dies muss entweder @code{#f} sein, dann wird das voreingestellte
-Anmeldeprogramm benutzt (@command{login} aus dem Shadow-Werkzeugsatz) oder
-der Name des Anmeldeprogramms als G-Ausdruck.
-
address@hidden @code{login-pause?} (Vorgabe: @code{#f})
-Ist es auf @code{#t} gesetzt, sorgt es in Verbindung mit @var{auto-login}
-dafür, dass der Benutzer eine Taste drücken muss, ehe eine Anmelde-Shell
-gestartet wird.
-
address@hidden @code{mingetty} (Vorgabe: @var{mingetty})
-Welches Mingetty-Paket benutzt werden soll.
-
address@hidden table
address@hidden deftp
-
address@hidden {Scheme-Prozedur} agetty-service @var{Konfiguration}
-Liefert einen Dienst, um agetty entsprechend der @var{Konfiguration}
-auszuführen, welche ein @code{<agetty-configuration>}-Objekt sein muss, das
-unter anderem festlegt, auf welchem tty es laufen soll.
address@hidden deffn
-
address@hidden {Datentyp} agetty-configuration
-Dies ist der Datentyp, der die Konfiguration von agetty repräsentiert, was
-Anmeldungen auf einer virtuellen oder seriellen Konsole implementiert. Siehe
-die Handbuchseite @code{agetty(8)} für mehr Informationen.
-
address@hidden @asis
-
address@hidden @code{tty}
-Der Name der Konsole, auf der diese Instanz von agetty läuft, als
-Zeichenkette — z.B.@: @code{"ttyS0"}. Dieses Argument ist optional, sein
-Vorgabewert ist eine vernünftige Wahl unter den seriellen Schnittstellen,
-auf deren Benutzung der Linux-Kernel eingestellt ist.
-
-Hierzu wird, wenn in der Kernel-Befehlszeile ein Wert für eine Option namens
address@hidden festgelegt wurde, der Gerätename daraus für agetty
-extrahiert und benutzt.
-
-Andernfalls wird agetty, falls auf der Kernel-Befehlszeile eine Option
address@hidden mit einem tty vorkommt, den daraus extrahierten Gerätenamen
-der seriellen Schnittstelle benutzen.
-
-In beiden Fällen wird agetty nichts an den anderen Einstellungen für
-serielle Geräte verändern (Baud-Rate etc.), in der Hoffnung, dass Linux sie
-auf die korrekten Werte festgelegt hat.
-
address@hidden @code{baud-rate} (Vorgabe: @code{#f})
-Eine Zeichenkette, die aus einer kommagetrennten Liste von einer oder
-mehreren Baud-Raten besteht, absteigend sortiert.
-
address@hidden @code{term} (Vorgabe: @code{#f})
-Eine Zeichenkette, die den Wert enthält, der für die Umgebungsvariable
address@hidden benutzt werden soll.
-
address@hidden @code{eight-bits?} (Vorgabe: @code{#f})
-Steht dies auf @code{#t}, wird angenommen, dass das tty 8-Bit-korrekt ist,
-so dass die Paritätserkennung abgeschaltet wird.
-
address@hidden @code{auto-login} (Vorgabe: @code{#f})
-Wird hier ein Anmeldename als eine Zeichenkette übergeben, wird der
-angegebene Nutzer automatisch angemeldet, ohne nach einem Anmeldenamen oder
-Passwort zu fragen.
-
address@hidden @code{no-reset?} (Vorgabe: @code{#f})
-Steht dies auf @code{#t}, werden die Cflags des Terminals (d.h.@: dessen
-Steuermodi) nicht zurückgesetzt.
-
address@hidden @code{host} (Vorgabe: @code{#f})
-Dies akzeptiert eine Zeichenkette mit dem einzutragenden
-Anmeldungs-Rechnernamen "login_host", der in die Datei @file{/var/run/utmpx}
-geschrieben wird.
-
address@hidden @code{remote?} (Vorgabe: @code{#f})
-Ist dies auf @code{#t} gesetzt, wird in Verbindung mit @var{host} eine
-Befehlszeilenoption @code{-r} für einen falschen Rechnernamen (»Fakehost«)
-in der Befehlszeile des mit @var{login-program} angegebenen Anmeldeprogramms
-übergeben.
-
address@hidden @code{flow-control?} (Vorgabe: @code{#f})
-Ist dies auf @code{#t} gesetzt, wird Hardware-Flusssteuerung (RTS/CTS)
-aktiviert.
-
address@hidden @code{no-issue?} (Vorgabe: @code{#f})
-Ist dies auf @code{#t} gesetzt, wird der Inhalt der Datei @file{/etc/issue}
address@hidden angezeigt, bevor die Anmeldeaufforderung zu sehen ist.
-
address@hidden @code{init-string} (Vorgabe: @code{#f})
-Dies akzeptiert eine Zeichenkette, die zum tty oder zum Modem zuerst vor
-allem anderen gesendet wird. Es kann benutzt werden, um ein Modem zu
-initialisieren.
-
address@hidden @code{no-clear?} (Vorgabe: @code{#f})
-Ist dies auf @code{#t} gesetzt, wird agetty den Bildschirm @emph{nicht}
-löschen, bevor es die Anmeldeaufforderung anzeigt.
-
address@hidden @code{login-program} (Vorgabe: (file-append shadow "/bin/login"))
-Hier muss entweder ein G-Ausdruck mit dem Namen eines Anmeldeprogramms
-übergeben werden, oder dieses Feld wird nicht gesetzt, so dass als
-Vorgabewert das Programm @command{login} aus dem Shadow-Werkzeugsatz
-verwendet wird.
-
address@hidden @code{local-line} (Vorgabe: @code{#f})
-Steuert den Leitungsschalter CLOCAL. Hierfür wird eines von drei Symbolen
-als Argument akzeptiert, @code{'auto}, @code{'always} oder
address@hidden'never}. Für @code{#f} wählt agetty als Vorgabewert @code{'auto}.
-
address@hidden @code{extract-baud?} (Vorgabe: @code{#f})
-Ist dies auf @code{#t} gesetzt, so wird agetty angewiesen, die Baud-Rate aus
-den Statusmeldungen mancher Arten von Modem abzulesen.
-
address@hidden @code{skip-login?} (Vorgabe: @code{#f})
-Ist dies auf @code{#t} gesetzt, wird der Benutzer nicht aufgefordert, einen
-Anmeldenamen einzugeben. Dies kann zusammen mit dem @var{login-program}-Feld
-benutzt werden, um nicht standardkonforme Anmeldesysteme zu benutzen.
-
address@hidden @code{no-newline?} (Vorgabe: @code{#f})
-Ist dies auf @code{#t} gesetzt, wird @emph{kein} Zeilenumbruch ausgegeben,
-bevor die Datei @file{/etc/issue} ausgegeben wird.
-
address@hidden Is this dangerous only when used with login-program, or always?
address@hidden @code{login-options} (Vorgabe: @code{#f})
-Dieses Feld akzeptiert eine Zeichenkette mit den Befehlszeilenoptionen für
-das Anmeldeprogramm. Beachten Sie, dass bei einem selbst gewählten
address@hidden ein böswilliger Nutzer versuchen könnte, als
-Anmeldenamen etwas mit eingebetteten Befehlszeilenoptionen anzugeben, die
-vom Anmeldeprogramm interpretiert werden könnten.
-
address@hidden @code{login-pause} (Vorgabe: @code{#f})
-Ist dies auf @code{#t} gesetzt, wird auf das Drücken einer beliebigen Taste
-gewartet, bevor die Anmeldeaufforderung angezeigt wird. Hiermit kann in
-Verbindung mit @var{auto-login} weniger Speicher verbraucht werden, indem
-man Shells erst erzeugt, wenn sie benötigt werden.
-
address@hidden @code{chroot} (Vorgabe: @code{#f})
-Wechselt die Wurzel des Dateisystems auf das angegebene Verzeichnis. Dieses
-Feld akzeptiert einen Verzeichnispfad als Zeichenkette.
-
address@hidden @code{hangup?} (Vorgabe: @code{#f})
-Mit dem Linux-Systemaufruf @code{vhangup} auf dem angegebenen Terminal
-virtuell auflegen.
-
address@hidden @code{keep-baud?} (Vorgabe: @code{#f})
-Ist dies auf @code{#t} gesetzt, wird versucht, die bestehende Baud-Rate
-beizubehalten. Die Baud-Raten aus dem Feld @var{baud-rate} werden benutzt,
-wenn agetty ein @key{BREAK}-Zeichen empfängt.
-
address@hidden @code{timeout} (Vorgabe: @code{#f})
-Ist dies auf einen ganzzahligen Wert gesetzt, wird terminiert, falls kein
-Benutzername innerhalb von @var{timeout} Sekunden eingelesen werden konnte.
-
address@hidden @code{detect-case?} (Vorgabe: @code{#f})
-Ist dies auf @code{#t} gesetzt, wird Unterstützung für die Erkennung von
-Terminals aktiviert, die nur Großschreibung beherrschen. Mit dieser
-Einstellung wird, wenn ein Anmeldename nur aus Großbuchstaben besteht,
-dieser als Anzeichen dafür aufgefasst, dass das Terminal nur Großbuchstaben
-beherrscht, und einige Umwandlungen von Groß- in Kleinbuchstaben
-aktiviert. Beachten Sie, dass dabei @emph{keine} Unicode-Zeichen unterstützt
-werden.
-
address@hidden @code{wait-cr?} (Vorgabe: @code{#f})
-Wenn dies auf @code{#t} gesetzt ist, wird gewartet, bis der Benutzer oder
-das Modem einen Wagenrücklauf (»Carriage Return«) oder einen Zeilenvorschub
-(»Linefeed«) absendet, ehe @file{/etc/issue} oder eine Anmeldeaufforderung
-angezeigt wird. Dies wird typischerweise zusammen mit dem Feld
address@hidden benutzt.
-
address@hidden @code{no-hints?} (Vorgabe: @code{#f})
-Ist es auf @code{#t} gesetzt, werden @emph{keine} Hinweise zu den
-Feststelltasten Num-Taste, Umschaltsperre (»Caps Lock«) und Rollen-Taste
-(»Scroll Lock«) angezeigt.
-
address@hidden @code{no-hostname?} (Vorgabe: @code{#f})
-Das vorgegebene Verhalten ist, den Rechnernamen auszugeben. Ist dieses Feld
-auf @code{#t} gesetzt, wird überhaupt kein Rechnername angezeigt.
-
address@hidden @code{long-hostname?} (Vorgabe: @code{#f})
-Das vorgegebene Verhalten ist, den Rechnernamen nur bis zu seinem ersten
-Punkt anzuzeigen. Ist dieses Feld auf @code{#t} gesetzt, wird der
-vollständige Rechnername (der »Fully Qualified Hostname«), wie ihn
address@hidden oder @code{getaddrinfo} liefern, angezeigt.
-
address@hidden @code{erase-characters} (Vorgabe: @code{#f})
-Dieses Feld akzeptiert eine Zeichenkette aus Zeichen, die auch als Rücktaste
-(zum Löschen) interpretiert werden sollen, wenn der Benutzer seinen
-Anmeldenamen eintippt.
-
address@hidden @code{kill-characters} (Vorgabe: @code{#f})
-Dieses Feld akzeptiert eine Zeichenkette aus Zeichen, deren Eingabe als
-»ignoriere alle vorherigen Zeichen« interpretiert werden soll (auch
-»kill«-Zeichen genannt), wenn der Benutzer seinen Anmeldenamen eintippt.
-
address@hidden @code{chdir} (Vorgabe: @code{#f})
-Dieses Feld akzeptiert eine Zeichenkette, die einen Verzeichnispfad angibt,
-zu dem vor der Anmeldung gewechselt wird.
-
address@hidden @code{delay} (Vorgabe: @code{#f})
-Dieses Feld akzeptiert eine ganze Zahl mit der Anzahl Sekunden, die gewartet
-werden soll, bis ein tty geöffnet und die Anmeldeaufforderung angezeigt
-wird.
-
address@hidden @code{nice} (Vorgabe: @code{#f})
-Dieses Feld akzeptiert eine ganze Zahl mit dem »nice«-Wert, mit dem das
-Anmeldeprogramm ausgeführt werden soll.
-
address@hidden @code{extra-options} (Vorgabe: @code{'()})
-Dieses Feld ist ein »Notausstieg«, mit dem Nutzer beliebige
-Befehlszeilenoptionen direkt an @command{agetty} übergeben können. Diese
-müssen hier als eine Liste von Zeichenketten angegeben werden.
-
address@hidden table
address@hidden deftp
-
address@hidden {Scheme-Prozedur} kmscon-service-type @var{Konfiguration}
-Liefert einen Dienst, um
address@hidden://www.freedesktop.org/wiki/Software/kmscon,kmscon} entsprechend
-der @var{Konfiguration} auszuführen. Diese ist ein
address@hidden<kmscon-configuration>}-Objekt, das unter anderem angibt, auf 
welchem
-tty es ausgeführt werden soll.
address@hidden deffn
-
address@hidden {Datentyp} kmscon-configuration
-Dieser Datentyp repräsentiert die Konfiguration von Kmscon, die das Anmelden
-auf virtuellen Konsolen ermöglicht.
-
address@hidden @asis
-
address@hidden @code{virtual-terminal}
-Der Name der Konsole, auf der diese Kmscon läuft — z.B.@: @code{"tty1"}.
-
address@hidden @code{login-program} (Vorgabe: @code{#~(string-append #$shadow 
"/bin/login")})
-Ein G-Ausdruck, der den Namen des Anmeldeprogramms angibt. Als Vorgabe wird
-das Anmeldeprogramm @command{login} aus dem Shadow-Werkzeugsatz verwendet.
-
address@hidden @code{login-arguments} (Vorgabe: @code{'("-p")})
-Eine Liste der Argumente, die an @command{login} übergeben werden sollen.
-
address@hidden @code{auto-login} (Vorgabe: @code{#f})
-Wird hier ein Anmeldename als eine Zeichenkette übergeben, wird der
-angegebene Nutzer automatisch angemeldet, ohne nach einem Anmeldenamen oder
-Passwort zu fragen.
-
address@hidden @code{hardware-acceleration?} (Vorgabe: #f)
-Ob Hardware-Beschleunigung verwendet werden soll.
-
address@hidden @code{kmscon} (Vorgabe: @var{kmscon})
-Das Kmscon-Paket, das benutzt werden soll.
-
address@hidden table
address@hidden deftp
-
address@hidden Name Service Cache Daemon
address@hidden nscd
address@hidden {Scheme-Prozedur} nscd-service address@hidden [#:glibc glibc] @
-                [#:name-services '()] Liefert einen Dienst, der den Name 
Service Cache
-Daemon (nscd) von libc mit der angegebenen @var{Konfiguration} ausführt —
-diese muss ein @code{<nscd-configuration>}-Objekt sein. Siehe @ref{Name 
Service Switch} für ein Beispiel.
-
-Der Einfachheit halber bietet der Shepherd-Dienst für nscd die folgenden
-Aktionen an:
-
address@hidden @code
address@hidden invalidate
address@hidden Zwischenspeicher ungültig machen, nscd
address@hidden nscd, Ungültigmachen des Zwischenspeichers
-Dies macht den angegebenen Zwischenspeicher ungültig. Wenn Sie zum Beispiel:
-
address@hidden
-herd invalidate nscd hosts
address@hidden example
-
address@hidden
-ausführen, wird der Zwischenspeicher für die Auflösung von Rechnernamen (von
-»Host«-Namen) des nscd ungültig.
-
address@hidden statistics
-Wenn Sie @command{herd statistics nscd} ausführen, werden Ihnen
-Informationen angezeigt, welche Ihnen Informationen über den nscd-Zustand
-und die Zwischenspeicher angezeigt.
address@hidden table
-
address@hidden deffn
-
address@hidden {Scheme-Variable} %nscd-default-configuration
-Dies ist der vorgegebene Wert für die @code{<nscd-configuration>} (siehe
-unten), die @code{nscd-service} benutzt. Die Konfiguration benutzt die
-Zwischenspeicher, die in @var{%nscd-default-caches} definiert sind; siehe
-unten.
address@hidden defvr
-
address@hidden {Datentyp} nscd-configuration
-Dieser Datentyp repräsentiert die Konfiguration des Name Service Caching
-Daemon (kurz »nscd«).
-
address@hidden @asis
-
address@hidden @code{name-services} (Vorgabe: @code{'()})
-Liste von Paketen, die @dfn{Namensdienste} bezeichnen, die für den nscd
-sichtbar sein müssen, z.B.@: @code{(list @var{nss-mdns})}.
-
address@hidden @code{glibc} (Vorgabe: @var{glibc})
-Ein Paket-Objekt, das die GNU-C-Bibliothek angibt, woraus der
address@hidden genommen werden soll.
-
address@hidden @code{log-file} (Vorgabe: @code{"/var/log/nscd.log"})
-Name der nscd-Protokolldatei. Hierhin werden Ausgaben zur Fehlersuche
-geschrieben, falls @code{debug-level} echt positiv ist.
-
address@hidden @code{debug-level} (Vorgabe: @code{0})
-Eine ganze Zahl, die den Detailgrad der Ausgabe zur Fehlersuche
-angibt. Größere Zahlen bewirken eine ausführlichere Ausgabe.
-
address@hidden @code{caches} (Vorgabe: @var{%nscd-default-caches})
-Liste der @code{<nscd-cache>}-Objekte, die repräsentieren, was alles
-zwischengespeichert werden soll; siehe unten.
-
address@hidden table
address@hidden deftp
-
address@hidden {Datentyp} nscd-cache
-Ein Datentyp, der eine Zwischenspeicher-Datenbank von nscd mitsamt ihren
-Parametern definiert.
-
address@hidden @asis
-
address@hidden @code{Datenbank}
-Dies ist ein Symbol, was den Namen der Datenbank repräsentiert, die
-zwischengespeichert werden soll. Gültige Werte sind @code{passwd},
address@hidden, @code{hosts} und @code{services}, womit jeweils die
-entsprechende NSS-Datenbank bezeichnet wird (siehe @ref{NSS Basics,,, libc,
-The GNU C Library Reference Manual}).
-
address@hidden @code{positive-time-to-live}
address@hidden @code{negative-time-to-live} (Vorgabe: @code{20})
-Eine Zahl, die für die Anzahl an Sekunden steht, die ein erfolgreiches
-(positives) oder erfolgloses (negatives) Nachschlageresultat im
-Zwischenspeicher verbleibt.
-
address@hidden @code{check-files?} (Vorgabe: @code{#t})
-Ob auf Änderungen an den der @var{database} entsprechenden Dateien reagiert
-werden soll.
-
-Wenn @var{database} zum Beispiel @code{hosts} ist, wird, wenn dieses Feld
-gesetzt ist, nscd Änderungen an @file{/etc/hosts} beobachten und
-berücksichtigen.
-
address@hidden @code{persistent?} (Vorgabe: @code{#t})
-Ob der Zwischenspeicher dauerhaft auf der Platte gespeichert werden soll.
-
address@hidden @code{shared?} (Vorgabe: @code{#t})
-Ob der Zwischenspeicher zwischen den Nutzern geteilt werden soll.
-
address@hidden @code{max-database-size} (Vorgabe: address@hidden)
-Die Maximalgröße des Datenbank-Zwischenspeichers in Bytes.
-
address@hidden XXX: 'suggested-size' and 'auto-propagate?' seem to be expert
address@hidden settings, so leave them out.
-
address@hidden table
address@hidden deftp
-
address@hidden {Scheme-Variable} %nscd-default-caches
-Liste von @code{<nscd-cache>}-Objekten, die von der vorgegebenen
address@hidden benutzt werden (siehe oben).
-
-Damit wird dauerhaftes und aggressives Zwischenspeichern beim Nachschlagen
-von Dienst- und Rechnernamen (»Host«-Namen) aktiviert. Letzteres verbessert
-die Leistungsfähigkeit beim Nachschlagen von Rechnernamen, sorgt für mehr
-Widerstandsfähigkeit gegenüber unverlässlichen Namens-Servern und bietet
-außerdem einen besseren Schutz der Privatsphäre — oftmals befindet sich das
-Ergebnis einer Anfrage nach einem Rechnernamen bereits im lokalen
-Zwischenspeicher und externe Namens-Server müssen nicht miteinbezogen
-werden.
address@hidden defvr
-
address@hidden
address@hidden syslog
address@hidden Protokollierung
address@hidden {Datentyp} syslog-configuration
-Dieser Datentyp repräsentiert die Konfiguration des syslog-Daemons.
-
address@hidden @asis
address@hidden @code{syslogd} (Vorgabe: @code{#~(string-append #$inetutils 
"/libexec/syslogd")})
-Welcher Syslog-Daemon benutzt werden soll.
-
address@hidden @code{config-file} (Vorgabe: @code{%default-syslog.conf})
-Die zu benutzende syslog-Konfigurationsdatei.
-
address@hidden table
address@hidden deftp
-
address@hidden
address@hidden syslog
address@hidden {Scheme-Prozedur} syslog-service @var{Konfiguration}
-Liefert einen Dienst, der einen syslog-Daemon entsprechend der
address@hidden ausführt.
-
-Siehe @ref{syslogd invocation,,, inetutils, GNU Inetutils} für weitere
-Informationen über die Syntax der Konfiguration.
address@hidden deffn
-
address@hidden {Scheme-Variable} guix-service-type
-Dies ist der Typ für den Dienst, der den Erstellungs-Daemon
address@hidden ausführt (siehe @ref{Aufruf des guix-daemon}). Als Wert
-muss ein @code{guix-configuration}-Verbundsobjekt verwendet werden, wie
-unten beschrieben.
address@hidden defvr
-
address@hidden
address@hidden {Datentyp} guix-configuration
-Dieser Datentyp repräsentiert die Konfiguration des Erstellungs-Daemons von
-Guix. Siehe @ref{Aufruf des guix-daemon} für weitere Informationen.
-
address@hidden @asis
address@hidden @code{guix} (Vorgabe: @var{guix})
-Das zu verwendende Guix-Paket.
-
address@hidden @code{build-group} (Vorgabe: @code{"guixbuild"})
-Der Name der Gruppe, zu der die Erstellungs-Benutzerkonten gehören.
-
address@hidden @code{build-accounts} (Vorgabe: @code{10})
-Die Anzahl zu erzeugender Erstellungs-Benutzerkonten.
-
address@hidden @code{authorize-key?} (Vorgabe: @code{#t})
address@hidden Substitute, deren Autorisierung
-Ob die unter @code{authorized-keys} aufgelisteten Substitutschlüssel
-autorisiert werden sollen — vorgegeben ist, den von
address@hidden@value{SUBSTITUTE-SERVER}} zu autorisieren (siehe 
@ref{Substitute}).
-
address@hidden %default-authorized-guix-keys
address@hidden @code{authorized-keys} (Vorgabe: 
@var{%default-authorized-guix-keys})
-Die Liste der Dateien mit autorisierten Schlüsseln, d.h.@: eine Liste von
-Zeichenketten als G-Ausdrücke (siehe @ref{Aufruf von guix archive}). Der
-vorgegebene Inhalt ist der Schlüssel von @address@hidden
-(siehe @ref{Substitute}).
-
address@hidden @code{use-substitutes?} (Vorgabe: @code{#t})
-Ob Substitute benutzt werden sollen.
-
address@hidden @code{substitute-urls} (Vorgabe: @var{%default-substitute-urls})
-Die Liste der URLs, auf denen nach Substituten gesucht wird, wenn nicht
-anders angegeben.
-
address@hidden @code{max-silent-time} (Vorgabe: @code{0})
address@hidden @code{timeout} (Vorgabe: @code{0})
-Die Anzahl an Sekunden, die jeweils nichts in die Ausgabe geschrieben werden
-darf bzw. die es insgesamt dauern darf, bis ein Erstellungsprozess
-abgebrochen wird. Beim Wert null wird nie abgebrochen.
-
address@hidden @code{log-compression} (Vorgabe: @code{'bzip2})
-Die für Erstellungsprotokolle zu benutzende Kompressionsmethode — entweder
address@hidden, @code{bzip2} oder @code{none}.
-
address@hidden @code{extra-options} (Vorgabe: @code{'()})
-Eine Liste zusätzlicher Befehlszeilenoptionen zu @command{guix-daemon}.
-
address@hidden @code{log-file} (Vorgabe: @code{"/var/log/guix-daemon.log"})
-Die Datei, in die die Standardausgabe und die Standardfehlerausgabe von
address@hidden geschrieben werden.
-
address@hidden @code{http-proxy} (Vorgabe: @code{#f})
-Der für das Herunterladen von Ableitungen mit fester Ausgabe und von
-Substituten zu verwendende HTTP-Proxy.
-
address@hidden @code{tmpdir} (Vorgabe: @code{#f})
-Ein Verzeichnispfad, der angibt, wo @command{guix-daemon} seine Erstellungen
-durchführt.
-
address@hidden table
address@hidden deftp
-
address@hidden {Scheme-Prozedur} udev-service [#:udev @var{eudev} #:rules 
@code{'()}]
-Führt @var{udev} aus, was zur Laufzeit Gerätedateien ins Verzeichnis
address@hidden/dev} einfügt. udev-Regeln können über die @var{rules}-Variable 
als
-eine Liste von Dateien übergeben werden. Die Prozeduren @var{udev-rule} und
address@hidden>udev-rule} aus @code{(gnu services base)} vereinfachen die
-Erstellung einer solchen Regeldatei.
address@hidden deffn
-
address@hidden {Scheme-Prozedur} udev-rule address@hidden @var{Inhalt}]
-Liefert eine udev-Regeldatei mit dem angegebenen @var{Dateiname}n, in der
-die vom Literal @var{Inhalt} definierten Regeln stehen.
-
-Im folgenden Beispiel wird eine Regel für ein USB-Gerät definiert und in der
-Datei @file{90-usb-ding.rules} gespeichert. Mit der Regel wird ein Skript
-ausgeführt, sobald ein USB-Gerät mit der angegebenen Produktkennung erkannt
-wird.
-
address@hidden
-(define %beispiel-udev-rule
-  (udev-rule
-    "90-usb-ding.rules"
-    (string-append "ACTION==\"add\", SUBSYSTEM==\"usb\", "
-                   "address@hidden@}==\"Beispiel\", "
-                   "RUN+=\"/pfad/zum/skript\"")))
address@hidden example
-
-The @command{herd rules udev} command, as root, returns the name of the
-directory containing all the active udev rules.
address@hidden deffn
-
-Hier zeigen wir, wie man den vorgegebenen @var{udev-service} um sie
-erweitern kann.
-
address@hidden
-(operating-system
- ;; @dots{}
- (services
- (modify-services %desktop-services
-   (udev-service-type config =>
-     (udev-configuration (inherit config)
-      (rules (append (udev-configuration-rules config)
-                     (list %beispiel-udev-rule))))))))
address@hidden example
-
address@hidden {Scheme-Prozedur} file->udev-rule address@hidden @var{Datei}]
-Liefert eine udev-Datei mit dem angegebenen @var{Dateiname}n, in der alle in
-der @var{Datei}, einem dateiartigen Objekt, definierten Regeln stehen.
-
-Folgendes Beispiel stellt dar, wie wir eine bestehende Regeldatei verwenden
-können.
-
address@hidden
-(use-modules (guix download)     ;für url-fetch
-             (guix packages)     ;für origin
-             ;; @dots{})
-
-(define %android-udev-rules
-  (file->udev-rule
-    "51-android-udev.rules"
-    (let ((version "20170910"))
-      (origin
-       (method url-fetch)
-       (uri (string-append "https://raw.githubusercontent.com/M0Rf30/";
-                           "android-udev-rules/" version "/51-android.rules"))
-       (sha256
-        (base32 "0lmmagpyb6xsq6zcr2w1cyx9qmjqmajkvrdbhjx32gqf1d9is003"))))))
address@hidden example
address@hidden deffn
-
-Zusätzlich können Guix-Paketdefinitionen unter den @var{rules} aufgeführt
-werden, um die udev-Regeln um diejenigen Definitionen zu ergänzen, die im
-Unterverzeichnis @file{lib/udev/rules.d} des jeweiligen Pakets aufgeführt
-sind. Statt des bisherigen Beispiels zu @var{file->udev-rule} hätten wir
-also auch das Paket @var{android-udev-rules} benutzen können, das in Guix im
-Modul @code{(gnu packages android)} vorhanden ist.
-
-Das folgende Beispiel zeit, wie dieses Paket @var{android-udev-rules}
-benutzt werden kann, damit das »Android-Tool« @command{adb} Geräte erkennen
-kann, ohne dafür Administratorrechte vorauszusetzen. Man sieht hier auch,
-wie die Benutzergruppe @code{adbusers} erstellt werden kann, die existieren
-muss, damit die im Paket @var{android-udev-rules} definierten Regeln richtig
-funktionieren. Um so eine Benutzergruppe zu erzeugen, müssen wir sie sowohl
-unter den @var{supplementary-groups} unserer @var{user-account}-Deklaration
-aufführen, als auch sie im @var{groups}-Feld des
address@hidden aufführen.
-
address@hidden
-(use-modules (gnu packages android)  ;für android-udev-rules
-             (gnu system shadow)     ;für user-group
-             ;; @dots{})
-
-(operating-system
-  ;; @dots{}
-  (users (cons (user-acount
-                ;; @dots{}
-                (supplementary-groups
-                 '("adbusers"   ;für adb
-                   "wheel" "netdev" "audio" "video"))
-                ;; @dots{})))
-
-  (groups (cons (user-group (system? #t) (name "adbusers"))
-                %base-groups))
-
-  ;; @dots{}
-
-  (services
-   (modify-services %desktop-services
-     (udev-service-type
-      config =>
-      (udev-configuration (inherit config)
-                          (rules (cons android-udev-rules
-                                       (udev-configuration-rules config))))))))
address@hidden example
-
address@hidden {Scheme-Variable} urandom-seed-service-type
-Etwas Entropie in der Datei @var{%random-seed-file} aufsparen, die als
-Startwert (als sogenannter »Seed«) für @file{/dev/urandom} dienen kann,
-nachdem das System neu gestartet wurde. Es wird auch versucht,
address@hidden/dev/urandom} beim Hochfahren mit Werten aus @file{/dev/hwrng} zu
-starten, falls @file{/dev/hwrng} existiert und lesbar ist.
address@hidden defvr
-
address@hidden {Scheme-Variable} %random-seed-file
-Der Name der Datei, in der einige zufällige Bytes vom
address@hidden abgespeichert werden, um sie nach einem Neustart
-von dort als Startwert für @file{/dev/urandom} auslesen zu können. Als
-Vorgabe wird @file{/var/lib/random-seed} verwendet.
address@hidden defvr
-
address@hidden Maus
address@hidden gpm
address@hidden {Scheme-Variable} gpm-service-type
-Dieser Typ wird für den Dienst verwendet, der GPM ausführt, den
address@hidden Mouse Daemon}, welcher zur Linux-Konsole
-Mausunterstützung hinzufügt. GPM ermöglicht es seinen Benutzern, auch in der
-Konsole die Maus zu benutzen und damit etwa Text auszuwählen, zu kopieren
-und einzufügen.
-
-Der Wert für Dienste dieses Typs muss eine @code{gpm-configuration} sein
-(siehe unten). Dieser Dienst gehört @emph{nicht} zu den
address@hidden
address@hidden defvr
-
address@hidden {Datentyp} gpm-configuration
-Repräsentiert die Konfiguration von GPM.
-
address@hidden @asis
address@hidden @code{options} (Vorgabe: @code{%default-gpm-options})
-Befehlszeilenoptionen, die an @command{gpm} übergeben werden. Die
-vorgegebenen Optionen weisen @command{gpm} an, auf Maus-Ereignisse auf der
-Datei @file{/dev/input/mice} zu lauschen. Siehe @ref{Command Line,,, gpm,
-gpm manual} für weitere Informationen.
-
address@hidden @code{gpm} (Vorgabe: @code{gpm})
-Das GPM-Paket, was benutzt werden soll.
-
address@hidden table
address@hidden deftp
-
address@hidden
address@hidden {Scheme-Variable} guix-publish-service-type
-Dies ist der Diensttyp für @command{guix publish} (siehe @ref{Aufruf von guix 
publish}). Sein Wert muss ein @code{guix-publish-configuration}-Objekt sein,
-wie im Folgenden beschrieben.
-
-Hierbei wird angenommen, dass @file{/etc/guix} bereits ein mit @command{guix
-archive --generate-key} erzeugtes Schlüsselpaar zum Signieren enthält (siehe
address@hidden von guix archive}). Falls nicht, wird der Dienst beim Starten
-fehlschlagen.
address@hidden deffn
-
address@hidden {Datentyp} guix-publish-configuration
-Der Datentyp, der die Konfiguration des address@hidden publish}«-Dienstes
-repräsentiert.
-
address@hidden @asis
address@hidden @code{guix} (Vorgabe: @code{guix})
-Das zu verwendende Guix-Paket.
-
address@hidden @code{port} (Vorgabe: @code{80})
-Der TCP-Port, auf dem auf Verbindungen gelauscht werden soll.
-
address@hidden @code{host} (Vorgabe: @code{"localhost"})
-Unter welcher Rechneradresse (welchem »Host«, also welcher
-Netzwerkschnittstelle) auf Verbindungen gelauscht wird. Benutzen Sie
address@hidden"0.0.0.0"}, wenn auf allen verfügbaren Netzwerkschnittstellen
-gelauscht werden soll.
-
address@hidden @code{compression-level} (Vorgabe: @code{3})
-Die gzip-Kompressionsstufe, mit der Substitute komprimiert werden
-sollen. Benutzen Sie @code{0}, um Kompression völlig abzuschalten, und
address@hidden für das höchste Kompressionsverhältnis, zu Lasten von 
zusätzlicher
-Prozessorauslastung.
-
address@hidden @code{nar-path} (Vorgabe: @code{"nar"})
-Der URL-Pfad, unter dem »Nars« zum Herunterladen angeboten werden. Siehe
address@hidden von guix publish, @code{--nar-path}} für Details.
-
address@hidden @code{cache} (Vorgabe: @code{#f})
-Wenn dies @code{#f} ist, werden Archive nicht zwischengespeichert, sondern
-erst bei einer Anfrage erzeugt. Andernfalls sollte dies der Name eines
-Verzeichnisses sein — z.B.@: @code{"/var/cache/guix/publish"} —, in das
address@hidden publish} fertige Archive und Metadaten zwischenspeichern
-soll. Siehe @ref{Aufruf von guix publish, @option{--cache}} für weitere
-Informationen über die jeweiligen Vor- und Nachteile.
-
address@hidden @code{workers} (Vorgabe: @code{#f})
-Ist dies eine ganze Zahl, gibt es die Anzahl der Worker-Threads an, die zum
-Zwischenspeichern benutzt werden; ist es @code{#f}, werden so viele benutzt,
-wie es Prozessoren gibt. Siehe @ref{Aufruf von guix publish,
address@hidden für mehr Informationen.
-
address@hidden @code{ttl} (Vorgabe: @code{#f})
-Wenn dies eine ganze Zahl ist, bezeichnet sie die @dfn{Time-to-live} als die
-Anzahl der Sekunden, die heruntergeladene veröffentlichte Archive
-zwischengespeichert werden dürfen. Siehe @ref{Aufruf von guix publish,
address@hidden für mehr Informationen.
address@hidden table
address@hidden deftp
-
address@hidden
address@hidden {Scheme-Prozedur} rngd-service [#:rng-tools @var{rng-tools}] @
-            [#:device "/dev/hwrng"] Liefert einen Dienst, der das
address@hidden aus den @var{rng-tools} benutzt, um das mit
address@hidden bezeichnete Gerät zum Entropie-Pool des Kernels
-hinzuzufügen. Dieser Dienst wird fehlschlagen, falls das mit @var{device}
-bezeichnete Gerät nicht existiert.
address@hidden deffn
-
address@hidden
address@hidden Sitzungs-Limits
address@hidden ulimit
address@hidden Priorität
address@hidden Echtzeit
address@hidden jackd
address@hidden {Scheme-Prozedur} pam-limits-service [#:limits @code{'()}]
-
-Liefert einen Dienst, der eine Konfigurationsdatei für das
address@hidden://linux-pam.org/Linux-PAM-html/sag-pam_limits.html,
address@hidden installiert. Diese Prozedur nimmt optional eine
-Liste von @code{pam-limits-entry}-Werten entgegen, die benutzt werden
-können, um @code{ulimit}-Limits und nice-Prioritäten für Benutzersitzungen
-festzulegen.
-
-Die folgenden Limit-Definitionen setzen zwei harte und weiche Limits für
-alle Anmeldesitzungen für Benutzer in der @code{realtime}-Gruppe.
-
address@hidden
-(pam-limits-service
- (list
-  (pam-limits-entry "@@realtime" 'both 'rtprio 99)
-  (pam-limits-entry "@@realtime" 'both 'memlock 'unlimited)))
address@hidden example
-
-Der erste Eintrag erhöht die maximale Echtzeit-Priorität für unprivilegierte
-Prozesse ohne zusätzliche Berechtigungen; der zweite Eintrag hebt jegliche
-Einschränkungen des maximalen Adressbereichs auf, der im Speicher reserviert
-werden darf. Diese Einstellungen werden in dieser Form oft für
-Echtzeit-Audio-Systeme verwendet.
address@hidden deffn
-
address@hidden Geplante Auftragsausführung
address@hidden Geplante Auftragsausführung
-
address@hidden cron
address@hidden mcron
address@hidden Planen von Aufträgen
-Das Modul @code{(gnu services mcron)} enthält eine Schnittstelle zu
address@hidden, einem Daemon, der gemäß einem vorher festgelegten Zeitplan
-Aufträge (sogenannte »Jobs«) ausführt (siehe @ref{Top,,, mcron,
address@hidden). address@hidden ist ähnlich zum traditionellen
address@hidden aus Unix; der größte Unterschied ist, dass mcron in
-Guile Scheme implementiert ist, wodurch einem viel Flexibilität bei der
-Spezifikation von Aufträgen und ihren Aktionen offen steht.
-
-Das folgende Beispiel definiert ein Betriebssystem, das täglich die Befehle
address@hidden (siehe @ref{Invoking updatedb,,, find, Finding Files})
-und @command{guix gc} (siehe @ref{Aufruf von guix gc}) ausführt sowie den
-Befehl @command{mkid} im Namen eines »unprivilegierten« Nutzers ohne
-besondere Berechtigungen laufen lässt (siehe @ref{mkid invocation,,,
-idutils, ID Database Utilities}). Zum Anlegen von Auftragsdefinitionen
-benutzt es G-Ausdrücke, die dann an mcron übergeben werden (siehe
address@hidden).
-
address@hidden
-(use-modules (guix) (gnu) (gnu services mcron))
-(use-package-modules base idutils)
-
-(define updatedb-job
-  ;; 'updatedb' jeden Tag um 3 Uhr morgens ausführen. Hier schreiben wir
-  ;; die vom Auftrag durchzuführende Aktion als eine Scheme-Prozedur.
-  #~(job '(next-hour '(3))
-         (lambda ()
-           (execl (string-append #$findutils "/bin/updatedb")
-                  "updatedb"
-                  "--prunepaths=/tmp /var/tmp /gnu/store"))))
-
-(define garbage-collector-job
-  ;; Jeden Tag 5 Minuten nach Mitternacht Müll sammeln gehen.
-  ;; Die Aktions des Auftrags ist ein Shell-Befehl.
-  #~(job "5 0 * * *"            ;Vixie-cron-Syntax
-         "guix gc -F 1G"))
-
-(define idutils-job
-  ;; Die Index-Datenbank des Benutzers "charlie" um 12:15 Uhr und
-  ;; 19:15 Uhr aktualisieren. Dies wird aus seinem Persönlichen
-  ;; Ordner heraus ausgeführt.
-  #~(job '(next-minute-from (next-hour '(12 19)) '(15))
-         (string-append #$idutils "/bin/mkid src")
-         #:user "charlie"))
-
-(operating-system
-  ;; @dots{}
-  (services (cons (service mcron-service-type
-                           (mcron-configuration
-                            (jobs (list garbage-collector-job
-                                        updatedb-job
-                                        idutils-job))))
-                  %base-services)))
address@hidden lisp
-
-Siehe @ref{Guile Syntax, mcron job specifications,, mcron, address@hidden
-für weitere Informationen zu mcron-Auftragsspezifikationen. Nun folgt die
-Referenz des mcron-Dienstes.
-
-On a running system, you can use the @code{schedule} action of the service
-to visualize the mcron jobs that will be executed next:
-
address@hidden
-# herd schedule mcron
address@hidden example
-
address@hidden
-The example above lists the next five tasks that will be executed, but you
-can also specify the number of tasks to display:
-
address@hidden
-# herd schedule mcron 10
address@hidden example
-
address@hidden {Scheme Variable} mcron-service-type
-This is the type of the @code{mcron} service, whose value is an
address@hidden object.
-
-This service type can be the target of a service extension that provides it
-additional job specifications (@pxref{Dienstkompositionen}).  In other
-words, it is possible to define services that provide additional mcron jobs
-to run.
address@hidden defvr
-
address@hidden {Data Type} mcron-configuration
-Data type representing the configuration of mcron.
-
address@hidden @asis
address@hidden @code{mcron} (default: @var{mcron})
-The mcron package to use.
-
address@hidden @code{jobs}
-This is a list of gexps (@pxref{G-Ausdrücke}), where each gexp corresponds
-to an mcron job specification (@pxref{Syntax, mcron job specifications,,
-mcron, address@hidden).
address@hidden table
address@hidden deftp
-
-
address@hidden Log-Rotation
address@hidden Log-Rotation
-
address@hidden rottlog
address@hidden log rotation
address@hidden Protokollierung
-Log files such as those found in @file{/var/log} tend to grow endlessly, so
-it's a good idea to @dfn{rotate} them once in a while---i.e., archive their
-contents in separate files, possibly compressed.  The @code{(gnu services
-admin)} module provides an interface to address@hidden, a log rotation
-tool (@pxref{Top,,, rottlog, GNU Rot[t]log Manual}).
-
-The example below defines an operating system that provides log rotation
-with the default settings, for commonly encountered log files.
-
address@hidden
-(use-modules (guix) (gnu))
-(use-service-modules admin mcron)
-(use-package-modules base idutils)
-
-(operating-system
-  ;; @dots{}
-  (services (cons (service rottlog-service-type)
-                  %base-services)))
address@hidden lisp
-
address@hidden {Scheme Variable} rottlog-service-type
-This is the type of the Rottlog service, whose value is a
address@hidden object.
-
-Other services can extend this one with new @code{log-rotation} objects (see
-below), thereby augmenting the set of files to be rotated.
-
-This service type can define mcron jobs (@pxref{Geplante Auftragsausführung}) 
to
-run the rottlog service.
address@hidden defvr
-
address@hidden {Data Type} rottlog-configuration
-Data type representing the configuration of rottlog.
-
address@hidden @asis
address@hidden @code{rottlog} (default: @code{rottlog})
-The Rottlog package to use.
-
address@hidden @code{rc-file} (default: @code{(file-append rottlog "/etc/rc")})
-The Rottlog configuration file to use (@pxref{Mandatory RC Variables,,,
-rottlog, GNU Rot[t]log Manual}).
-
address@hidden @code{rotations} (default: @code{%default-rotations})
-A list of @code{log-rotation} objects as defined below.
-
address@hidden @code{jobs}
-This is a list of gexps where each gexp corresponds to an mcron job
-specification (@pxref{Geplante Auftragsausführung}).
address@hidden table
address@hidden deftp
-
address@hidden {Data Type} log-rotation
-Data type representing the rotation of a group of log files.
-
-Taking an example from the Rottlog manual (@pxref{Period Related File
-Examples,,, rottlog, GNU Rot[t]log Manual}), a log rotation might be defined
-like this:
-
address@hidden
-(log-rotation
-  (frequency 'daily)
-  (files '("/var/log/apache/*"))
-  (options '("storedir apache-archives"
-             "rotate 6"
-             "notifempty"
-             "nocompress")))
address@hidden example
-
-The list of fields is as follows:
-
address@hidden @asis
address@hidden @code{frequency} (default: @code{'weekly})
-The log rotation frequency, a symbol.
-
address@hidden @code{files}
-The list of files or file glob patterns to rotate.
-
address@hidden @code{options} (default: @code{'()})
-The list of rottlog options for this rotation (@pxref{Configuration
-parameters,,, rottlog, GNU Rot[t]lg Manual}).
-
address@hidden @code{post-rotate} (default: @code{#f})
-Either @code{#f} or a gexp to execute once the rotation has completed.
address@hidden table
address@hidden deftp
-
address@hidden {Scheme Variable} %default-rotations
-Specifies weekly rotation of @var{%rotated-files} and a couple of other
-files.
address@hidden defvr
-
address@hidden {Scheme Variable} %rotated-files
-The list of syslog-controlled files to be rotated.  By default it is:
address@hidden'("/var/log/messages" "/var/log/secure")}.
address@hidden defvr
-
address@hidden Netzwerkdienste
address@hidden Netzwerkdienste
-
-The @code{(gnu services networking)} module provides services to configure
-the network interface.
-
address@hidden DHCP, networking service
address@hidden {Scheme Variable} dhcp-client-service-type
-This is the type of services that run @var{dhcp}, a Dynamic Host
-Configuration Protocol (DHCP) client, on all the non-loopback network
-interfaces.  Its value is the DHCP client package to use, @code{isc-dhcp} by
-default.
address@hidden defvr
-
address@hidden {Scheme Procedure} dhcpd-service-type
-This type defines a service that runs a DHCP daemon.  To create a service of
-this type, you must supply a @code{<dhcpd-configuration>}.  For example:
-
address@hidden
-(service dhcpd-service-type
-         (dhcpd-configuration
-          (config-file (local-file "my-dhcpd.conf"))
-          (interfaces '("enp0s25"))))
address@hidden example
address@hidden deffn
-
address@hidden {Data Type} dhcpd-configuration
address@hidden @asis
address@hidden @code{package} (default: @code{isc-dhcp})
-The package that provides the DHCP daemon.  This package is expected to
-provide the daemon at @file{sbin/dhcpd} relative to its output directory.
-The default package is the @uref{http://www.isc.org/products/DHCP, ISC's
-DHCP server}.
address@hidden @code{config-file} (default: @code{#f})
-The configuration file to use.  This is required.  It will be passed to
address@hidden via its @code{-cf} option.  This may be any ``file-like''
-object (@pxref{G-Ausdrücke, file-like objects}).  See @code{man
-dhcpd.conf} for details on the configuration file syntax.
address@hidden @code{version} (default: @code{"4"})
-The DHCP version to use.  The ISC DHCP server supports the values ``4'',
-``6'', and ``4o6''.  These correspond to the @code{dhcpd} program options
address@hidden, @code{-6}, and @code{-4o6}.  See @code{man dhcpd} for details.
address@hidden @code{run-directory} (default: @code{"/run/dhcpd"})
-The run directory to use.  At service activation time, this directory will
-be created if it does not exist.
address@hidden @code{pid-file} (default: @code{"/run/dhcpd/dhcpd.pid"})
-The PID file to use.  This corresponds to the @code{-pf} option of
address@hidden  See @code{man dhcpd} for details.
address@hidden @code{interfaces} (default: @code{'()})
-The names of the network interfaces on which dhcpd should listen for
-broadcasts.  If this list is not empty, then its elements (which must be
-strings) will be appended to the @code{dhcpd} invocation when starting the
-daemon.  It may not be necessary to explicitly specify any interfaces here;
-see @code{man dhcpd} for details.
address@hidden table
address@hidden deftp
-
address@hidden {Scheme Variable} static-networking-service-type
address@hidden TODO Document <static-networking> data structures.
-This is the type for statically-configured network interfaces.
address@hidden defvr
-
address@hidden {Scheme Procedure} static-networking-service @var{interface} 
@var{ip} @
-       [#:netmask #f] [#:gateway #f] [#:name-servers @code{'()}] @ 
[#:requirement
address@hidden'(udev)}] Return a service that starts @var{interface} with 
address
address@hidden  If @var{netmask} is true, use it as the network mask.  If
address@hidden is true, it must be a string specifying the default network
-gateway.  @var{requirement} can be used to declare a dependency on another
-service before configuring the interface.
-
-This procedure can be called several times, one for each network interface
-of interest.  Behind the scenes what it does is extend
address@hidden with additional network interfaces to
-handle.
-
-Zum Beispiel:
-
address@hidden
-(static-networking-service "eno1" "192.168.1.82"
-                           #:gateway "192.168.1.2"
-                           #:name-servers '("192.168.1.2"))
address@hidden example
address@hidden deffn
-
address@hidden wicd
address@hidden WLAN
address@hidden WiFi
address@hidden network management
address@hidden {Scheme Procedure} wicd-service [#:wicd @var{wicd}]
-Return a service that runs @url{https://launchpad.net/wicd,Wicd}, a network
-management daemon that aims to simplify wired and wireless networking.
-
-This service adds the @var{wicd} package to the global profile, providing
-several commands to interact with the daemon and configure networking:
address@hidden, a graphical user interface, and the
address@hidden and @command{wicd-curses} user interfaces.
address@hidden deffn
-
address@hidden ModemManager
-
address@hidden {Scheme Variable} modem-manager-service-type
-This is the service type for the
address@hidden://wiki.gnome.org/Projects/ModemManager, ModemManager}
-service. The value for this service type is a
address@hidden record.
-
-This service is part of @code{%desktop-services} (@pxref{Desktop-Dienste}).
address@hidden defvr
-
address@hidden {Data Type} modem-manager-configuration
-Repräsentiert die Konfiguration vom ModemManager.
-
address@hidden @asis
address@hidden @code{modem-manager} (Vorgabe: @code{modem-manager})
-Das ModemManager-Paket, was benutzt werden soll.
-
address@hidden table
address@hidden deftp
-
address@hidden NetworkManager
-
address@hidden {Scheme Variable} network-manager-service-type
-This is the service type for the
address@hidden://wiki.gnome.org/Projects/NetworkManager, NetworkManager}
-service. The value for this service type is a
address@hidden record.
-
-This service is part of @code{%desktop-services} (@pxref{Desktop-Dienste}).
address@hidden defvr
-
address@hidden {Data Type} network-manager-configuration
-Data type representing the configuration of NetworkManager.
-
address@hidden @asis
address@hidden @code{network-manager} (default: @code{network-manager})
-The NetworkManager package to use.
-
address@hidden @code{dns} (default: @code{"default"})
-Processing mode for DNS, which affects how NetworkManager uses the
address@hidden configuration file.
-
address@hidden @samp
address@hidden default
-NetworkManager will update @code{resolv.conf} to reflect the nameservers
-provided by currently active connections.
-
address@hidden dnsmasq
-NetworkManager will run @code{dnsmasq} as a local caching nameserver, using
-a "split DNS" configuration if you are connected to a VPN, and then update
address@hidden to point to the local nameserver.
-
address@hidden none
-NetworkManager will not modify @code{resolv.conf}.
address@hidden table
-
address@hidden @code{vpn-plugins} (default: @code{'()})
-This is the list of available plugins for virtual private networks (VPNs).
-An example of this is the @code{network-manager-openvpn} package, which
-allows NetworkManager to manage VPNs @i{via} OpenVPN.
-
address@hidden table
address@hidden deftp
-
address@hidden Connman
address@hidden {Scheme Variable} connman-service-type
-This is the service type to run @url{https://01.org/connman,Connman}, a
-network connection manager.
-
-Its value must be an @code{connman-configuration} record as in this example:
-
address@hidden
-(service connman-service-type
-         (connman-configuration
-           (disable-vpn? #t)))
address@hidden example
-
-See below for details about @code{connman-configuration}.
address@hidden deffn
-
address@hidden {Data Type} connman-configuration
-Data Type representing the configuration of connman.
-
address@hidden @asis
address@hidden @code{connman} (default: @var{connman})
-The connman package to use.
-
address@hidden @code{disable-vpn?} (default: @code{#f})
-When true, disable connman's vpn plugin.
address@hidden table
address@hidden deftp
-
address@hidden WPA Supplicant
address@hidden {Scheme Variable} wpa-supplicant-service-type
-This is the service type to run @url{https://w1.fi/wpa_supplicant/,WPA
-supplicant}, an authentication daemon required to authenticate against
-encrypted WiFi or ethernet networks.
address@hidden defvr
-
address@hidden {Data Type} wpa-supplicant-configuration
-Repräsentiert die Konfiguration des WPA-Supplikanten.
-
-Sie hat folgende Parameter:
-
address@hidden @asis
address@hidden @code{wpa-supplicant} (Vorgabe: @code{wpa-supplicant})
-Das WPA-Supplicant-Paket, was benutzt werden soll.
-
address@hidden @code{dbus?} (Vorgabe: @code{#t})
-Whether to listen for requests on D-Bus.
-
address@hidden @code{pid-file} (Vorgabe: @code{"/var/run/wpa_supplicant.pid"})
-Wo die PID-Datei abgelegt wird.
-
address@hidden @code{interface} (Vorgabe: @code{#f})
-If this is set, it must specify the name of a network interface that WPA
-supplicant will control.
-
address@hidden @code{config-file} (default: @code{#f})
-Optionale Konfigurationsdatei.
-
address@hidden @code{extra-options} (Vorgabe: @code{'()})
-List of additional command-line arguments to pass to the daemon.
address@hidden table
address@hidden deftp
-
address@hidden iptables
address@hidden {Scheme Variable} iptables-service-type
-This is the service type to set up an iptables configuration.  iptables is a
-packet filtering framework supported by the Linux kernel.  This service
-supports configuring iptables for both IPv4 and IPv6.  A simple example
-configuration rejecting all incoming connections except those to the ssh
-port 22 is shown below.
-
address@hidden
-(service iptables-service-type
-         (iptables-configuration
-          (ipv4-rules (plain-file "iptables.rules" "*filter
-:INPUT ACCEPT
-:FORWARD ACCEPT
-:OUTPUT ACCEPT
--A INPUT -p tcp --dport 22 -j ACCEPT
--A INPUT -j REJECT --reject-with icmp-port-unreachable
-COMMIT
-"))
-          (ipv6-rules (plain-file "ip6tables.rules" "*filter
-:INPUT ACCEPT
-:FORWARD ACCEPT
-:OUTPUT ACCEPT
--A INPUT -p tcp --dport 22 -j ACCEPT
--A INPUT -j REJECT --reject-with icmp6-port-unreachable
-COMMIT
-"))))
address@hidden lisp
address@hidden defvr
-
address@hidden {Datentyp} iptables-configuration
-Repräsentiert die iptables-Konfiguration.
-
address@hidden @asis
address@hidden @code{iptables} (Vorgabe: @code{iptables})
-The iptables package that provides @code{iptables-restore} and
address@hidden
address@hidden @code{ipv4-rules} (Vorgabe: @code{%iptables-accept-all-rules})
-The iptables rules to use.  It will be passed to @code{iptables-restore}.
-This may be any ``file-like'' object (@pxref{G-Ausdrücke, file-like
-objects}).
address@hidden @code{ipv6-rules} (Vorgabe: @code{%iptables-accept-all-rules})
-The ip6tables rules to use.  It will be passed to @code{ip6tables-restore}.
-This may be any ``file-like'' object (@pxref{G-Ausdrücke, file-like
-objects}).
address@hidden table
address@hidden deftp
-
address@hidden NTP (Network Time Protocol), Dienst
address@hidden real time clock
address@hidden {Scheme Variable} ntp-service-type
-This is the type of the service running the @uref{http://www.ntp.org,
-Network Time Protocol (NTP)} daemon, @command{ntpd}.  The daemon will keep
-the system clock synchronized with that of the specified NTP servers.
-
-The value of this service is an @code{ntpd-configuration} object, as
-described below.
address@hidden defvr
-
address@hidden {Datentyp} ntp-configuration
-Der Datentyp für die Dienstkonfiguration des NTP-Dienstes.
-
address@hidden @asis
address@hidden @code{servers} (Vorgabe: @code{%ntp-servers})
-This is the list of servers (host names) with which @command{ntpd} will be
-synchronized.
-
address@hidden @code{allow-large-adjustment?} (default: @code{#f})
-This determines whether @command{ntpd} is allowed to make an initial
-adjustment of more than 1,000 seconds.
-
address@hidden @code{ntp} (Vorgabe: @code{ntp})
-Das NTP-Paket, was benutzt werden soll.
address@hidden table
address@hidden deftp
-
address@hidden {Scheme Variable} %ntp-servers
-List of host names used as the default NTP servers.  These are servers of
-the @uref{https://www.ntppool.org/en/, NTP Pool Project}.
address@hidden defvr
-
address@hidden OpenNTPD
address@hidden {Scheme Procedure} openntpd-service-type
-Run the @command{ntpd}, the Network Time Protocol (NTP) daemon, as
-implemented by @uref{http://www.openntpd.org, OpenNTPD}.  The daemon will
-keep the system clock synchronized with that of the given servers.
-
address@hidden
-(service
- openntpd-service-type
- (openntpd-configuration
-  (listen-on '("127.0.0.1" "::1"))
-  (sensor '("udcf0 correction 70000"))
-  (constraint-from '("www.gnu.org"))
-  (constraints-from '("https://www.google.com/";))
-  (allow-large-adjustment? #t)))
-
address@hidden example
address@hidden deffn
-
address@hidden {Data Type} openntpd-configuration
address@hidden @asis
address@hidden @code{openntpd} (default: @code{(file-append openntpd 
"/sbin/ntpd")})
-The openntpd executable to use.
address@hidden @code{listen-on} (default: @code{'("127.0.0.1" "::1")})
-A list of local IP addresses or hostnames the ntpd daemon should listen on.
address@hidden @code{query-from} (default: @code{'()})
-A list of local IP address the ntpd daemon should use for outgoing queries.
address@hidden @code{sensor} (default: @code{'()})
-Specify a list of timedelta sensor devices ntpd should use.  @code{ntpd}
-will listen to each sensor that acutally exists and ignore non-existant
-ones.  See @uref{https://man.openbsd.org/ntpd.conf, upstream documentation}
-for more information.
address@hidden @code{server} (default: @var{%ntp-servers})
-Specify a list of IP addresses or hostnames of NTP servers to synchronize
-to.
address@hidden @code{servers} (default: @code{'()})
-Specify a list of IP addresses or hostnames of NTP pools to synchronize to.
address@hidden @code{constraint-from} (default: @code{'()})
address@hidden can be configured to query the ‘Date’ from trusted HTTPS servers
-via TLS.  This time information is not used for precision but acts as an
-authenticated constraint, thereby reducing the impact of unauthenticated NTP
-man-in-the-middle attacks.  Specify a list of URLs, IP addresses or
-hostnames of HTTPS servers to provide a constraint.
address@hidden @code{constraints-from} (default: @code{'()})
-As with constraint from, specify a list of URLs, IP addresses or hostnames
-of HTTPS servers to provide a constraint.  Should the hostname resolve to
-multiple IP addresses, @code{ntpd} will calculate a median constraint from
-all of them.
address@hidden @code{allow-large-adjustment?} (default: @code{#f})
-Determines if @code{ntpd} is allowed to make an initial adjustment of more
-than 180 seconds.
address@hidden table
address@hidden deftp
-
address@hidden inetd
address@hidden {Scheme variable} inetd-service-type
-This service runs the @command{inetd} (@pxref{inetd invocation,,, inetutils,
-GNU Inetutils}) daemon.  @command{inetd} listens for connections on internet
-sockets, and lazily starts the specified server program when a connection is
-made on one of these sockets.
-
-The value of this service is an @code{inetd-configuration} object.  The
-following example configures the @command{inetd} daemon to provide the
-built-in @command{echo} service, as well as an smtp service which forwards
-smtp traffic over ssh to a server @code{smtp-server} behind a gateway
address@hidden:
-
address@hidden
-(service
- inetd-service-type
- (inetd-configuration
-  (entries (list
-            (inetd-entry
-             (name "echo")
-             (socket-type 'stream)
-             (protocol "tcp")
-             (wait? #f)
-             (user "root"))
-            (inetd-entry
-             (node "127.0.0.1")
-             (name "smtp")
-             (socket-type 'stream)
-             (protocol "tcp")
-             (wait? #f)
-             (user "root")
-             (program (file-append openssh "/bin/ssh"))
-             (arguments
-              '("ssh" "-qT" "-i" "/path/to/ssh_key"
-                "-W" "smtp-server:25" "user@@hostname")))))
address@hidden example
-
-See below for more details about @code{inetd-configuration}.
address@hidden deffn
-
address@hidden {Data Type} inetd-configuration
-Data type representing the configuration of @command{inetd}.
-
address@hidden @asis
address@hidden @code{program} (default: @code{(file-append inetutils 
"/libexec/inetd")})
-The @command{inetd} executable to use.
-
address@hidden @code{entries} (default: @code{'()})
-A list of @command{inetd} service entries.  Each entry should be created by
-the @code{inetd-entry} constructor.
address@hidden table
address@hidden deftp
-
address@hidden {Data Type} inetd-entry
-Data type representing an entry in the @command{inetd} configuration.  Each
-entry corresponds to a socket where @command{inetd} will listen for
-requests.
-
address@hidden @asis
address@hidden @code{node} (Vorgabe: @code{#f})
-Optional string, a comma-separated list of local addresses @command{inetd}
-should use when listening for this service.  @xref{Configuration file,,,
-inetutils, GNU Inetutils} for a complete description of all options.
address@hidden @code{name}
-A string, the name must correspond to an entry in @code{/etc/services}.
address@hidden @code{socket-type}
-One of @code{'stream}, @code{'dgram}, @code{'raw}, @code{'rdm} or
address@hidden'seqpacket}.
address@hidden @code{protocol}
-A string, must correspond to an entry in @code{/etc/protocols}.
address@hidden @code{wait?} (Vorgabe: @code{#t})
-Whether @command{inetd} should wait for the server to exit before listening
-to new service requests.
address@hidden @code{user}
-A string containing the user (and, optionally, group) name of the user as
-whom the server should run.  The group name can be specified in a suffix,
-separated by a colon or period, i.e.@: @code{"user"}, @code{"user:group"} or
address@hidden"user.group"}.
address@hidden @code{program} (default: @code{"internal"})
-The server program which will serve the requests, or @code{"internal"} if
address@hidden should use a built-in service.
address@hidden @code{arguments} (Vorgabe: @code{'()})
-A list strings or file-like objects, which are the server program's
-arguments, starting with the zeroth argument, i.e.@: the name of the program
-itself.  For @command{inetd}'s internal services, this entry must be
address@hidden'()} or @code{'("internal")}.
address@hidden table
-
address@hidden file,,, inetutils, GNU Inetutils} for a more detailed
-discussion of each configuration field.
address@hidden deftp
-
address@hidden Tor
address@hidden {Scheme Variable} tor-service-type
-This is the type for a service that runs the @uref{https://torproject.org,
-Tor} anonymous networking daemon.  The service is configured using a
address@hidden<tor-configuration>} record.  By default, the Tor daemon runs as 
the
address@hidden unprivileged user, which is a member of the @code{tor} group.
-
address@hidden defvr
-
address@hidden {Datentyp} tor-configuration
address@hidden @asis
address@hidden @code{tor} (Vorgabe: @code{tor})
-The package that provides the Tor daemon.  This package is expected to
-provide the daemon at @file{bin/tor} relative to its output directory.  The
-default package is the @uref{https://www.torproject.org, Tor Project's}
-implementation.
-
address@hidden @code{config-file} (Vorgabe: @code{(plain-file "empty" "")})
-The configuration file to use.  It will be appended to a default
-configuration file, and the final configuration file will be passed to
address@hidden via its @code{-f} option.  This may be any ``file-like'' object
-(@pxref{G-Ausdrücke, file-like objects}).  See @code{man tor} for details
-on the configuration file syntax.
-
address@hidden @code{hidden-services} (Vorgabe: @code{'()})
-The list of @code{<hidden-service>} records to use.  For any hidden service
-you include in this list, appropriate configuration to enable the hidden
-service will be automatically added to the default configuration file.  You
-may conveniently create @code{<hidden-service>} records using the
address@hidden procedure described below.
-
address@hidden @code{socks-socket-type} (Vorgabe: @code{'tcp})
-The default socket type that Tor should use for its SOCKS socket.  This must
-be either @code{'tcp} or @code{'unix}.  If it is @code{'tcp}, then by
-default Tor will listen on TCP port 9050 on the loopback interface (i.e.,
-localhost).  If it is @code{'unix}, then Tor will listen on the UNIX domain
-socket @file{/var/run/tor/socks-sock}, which will be made writable by
-members of the @code{tor} group.
-
-If you want to customize the SOCKS socket in more detail, leave
address@hidden at its default value of @code{'tcp} and use
address@hidden to override the default by providing your own
address@hidden option.
address@hidden table
address@hidden deftp
-
address@hidden hidden service
address@hidden {Scheme Procedure} tor-hidden-service @var{name} @var{mapping}
-Define a new Tor @dfn{hidden service} called @var{name} and implementing
address@hidden  @var{mapping} is a list of port/host tuples, such as:
-
address@hidden
- '((22 "127.0.0.1:22")
-   (80 "127.0.0.1:8080"))
address@hidden example
-
-In this example, port 22 of the hidden service is mapped to local port 22,
-and port 80 is mapped to local port 8080.
-
-This creates a @file{/var/lib/tor/hidden-services/@var{name}} directory,
-where the @file{hostname} file contains the @code{.onion} host name for the
-hidden service.
-
-See @uref{https://www.torproject.org/docs/tor-hidden-service.html.en, the
-Tor project's documentation} for more information.
address@hidden deffn
-
-The @code{(gnu services rsync)} module provides the following services:
-
-You might want an rsync daemon if you have files that you want available so
-anyone (or just yourself) can download existing files or upload new files.
-
address@hidden {Scheme Variable} rsync-service-type
-This is the type for the @uref{https://rsync.samba.org, rsync} rsync daemon,
address@hidden record as in this example:
-
address@hidden
-(service rsync-service-type)
address@hidden example
-
-See below for details about @code{rsync-configuration}.
address@hidden deffn
-
address@hidden {Data Type} rsync-configuration
-Data type representing the configuration for @code{rsync-service}.
-
address@hidden @asis
address@hidden @code{package} (default: @var{rsync})
address@hidden package to use.
-
address@hidden @code{port-number} (default: @code{873})
-TCP port on which @command{rsync} listens for incoming connections.  If port
-is less than @code{1024} @command{rsync} needs to be started as the
address@hidden user and group.
-
address@hidden @code{pid-file} (default: @code{"/var/run/rsyncd/rsyncd.pid"})
-Name of the file where @command{rsync} writes its PID.
-
address@hidden @code{lock-file} (default: @code{"/var/run/rsyncd/rsyncd.lock"})
-Name of the file where @command{rsync} writes its lock file.
-
address@hidden @code{log-file} (default: @code{"/var/log/rsyncd.log"})
-Name of the file where @command{rsync} writes its log file.
-
address@hidden @code{use-chroot?} (default: @var{#t})
-Whether to use chroot for @command{rsync} shared directory.
-
address@hidden @code{share-path} (default: @file{/srv/rsync})
-Location of the @command{rsync} shared directory.
-
address@hidden @code{share-comment} (default: @code{"Rsync share"})
-Comment of the @command{rsync} shared directory.
-
address@hidden @code{read-only?} (default: @var{#f})
-Read-write permissions to shared directory.
-
address@hidden @code{timeout} (default: @code{300})
-I/O timeout in seconds.
-
address@hidden @code{user} (default: @var{"root"})
-Owner of the @code{rsync} process.
-
address@hidden @code{group} (default: @var{"root"})
-Group of the @code{rsync} process.
-
address@hidden @code{uid} (default: @var{"rsyncd"})
-User name or user ID that file transfers to and from that module should take
-place as when the daemon was run as @code{root}.
-
address@hidden @code{gid} (default: @var{"rsyncd"})
-Group name or group ID that will be used when accessing the module.
-
address@hidden table
address@hidden deftp
-
-Furthermore, @code{(gnu services ssh)} provides the following services.
address@hidden SSH
address@hidden SSH server
-
address@hidden {Scheme Procedure} lsh-service [#:host-key "/etc/lsh/host-key"] @
-       [#:daemonic? #t] [#:interfaces '()] [#:port-number 22] @
-[#:allow-empty-passwords? #f] [#:root-login? #f] @ [#:syslog-output? #t]
-[#:x11-forwarding? #t] @ [#:tcp/ip-forwarding? #t]
-[#:password-authentication? #t] @ [#:public-key-authentication? #t]
-[#:initialize? #t] Run the @command{lshd} program from @var{lsh} to listen
-on port @var{port-number}.  @var{host-key} must designate a file containing
-the host key, and readable only by root.
-
-When @var{daemonic?} is true, @command{lshd} will detach from the
-controlling terminal and log its output to syslogd, unless one sets
address@hidden to false.  Obviously, it also makes lsh-service depend
-on existence of syslogd service.  When @var{pid-file?} is true,
address@hidden writes its PID to the file called @var{pid-file}.
-
-When @var{initialize?} is true, automatically create the seed and host key
-upon service activation if they do not exist yet.  This may take long and
-require interaction.
-
-When @var{initialize?} is false, it is up to the user to initialize the
-randomness generator (@pxref{lsh-make-seed,,, lsh, LSH Manual}), and to
-create a key pair with the private key stored in file @var{host-key}
-(@pxref{lshd basics,,, lsh, LSH Manual}).
-
-When @var{interfaces} is empty, lshd listens for connections on all the
-network interfaces; otherwise, @var{interfaces} must be a list of host names
-or addresses.
-
address@hidden specifies whether to accept log-ins with empty
-passwords, and @var{root-login?} specifies whether to accept log-ins as
-root.
-
-The other options should be self-descriptive.
address@hidden deffn
-
address@hidden SSH
address@hidden SSH server
address@hidden {Scheme Variable} openssh-service-type
-This is the type for the @uref{http://www.openssh.org, OpenSSH} secure shell
-daemon, @command{sshd}.  Its value must be an @code{openssh-configuration}
-record as in this example:
-
address@hidden
-(service openssh-service-type
-         (openssh-configuration
-           (x11-forwarding? #t)
-           (permit-root-login 'without-password)
-           (authorized-keys
-             `(("alice" ,(local-file "alice.pub"))
-               ("bob" ,(local-file "bob.pub"))))))
address@hidden example
-
-See below for details about @code{openssh-configuration}.
-
-This service can be extended with extra authorized keys, as in this example:
-
address@hidden
-(service-extension openssh-service-type
-                   (const `(("charlie"
-                             ,(local-file "charlie.pub")))))
address@hidden example
address@hidden deffn
-
address@hidden {Data Type} openssh-configuration
-This is the configuration record for OpenSSH's @command{sshd}.
-
address@hidden @asis
address@hidden @code{pid-file} (default: @code{"/var/run/sshd.pid"})
-Name of the file where @command{sshd} writes its PID.
-
address@hidden @code{port-number} (default: @code{22})
-TCP port on which @command{sshd} listens for incoming connections.
-
address@hidden @code{permit-root-login} (default: @code{#f})
-This field determines whether and when to allow logins as root.  If
address@hidden, root logins are disallowed; if @code{#t}, they are allowed.  If
-it's the symbol @code{'without-password}, then root logins are permitted but
-not with password-based authentication.
-
address@hidden @code{allow-empty-passwords?} (default: @code{#f})
-When true, users with empty passwords may log in.  When false, they may not.
-
address@hidden @code{password-authentication?} (default: @code{#t})
-When true, users may log in with their password.  When false, they have
-other authentication methods.
-
address@hidden @code{public-key-authentication?} (default: @code{#t})
-When true, users may log in using public key authentication.  When false,
-users have to use other authentication method.
-
-Authorized public keys are stored in @file{~/.ssh/authorized_keys}.  This is
-used only by protocol version 2.
-
address@hidden @code{x11-forwarding?} (default: @code{#f})
-When true, forwarding of X11 graphical client connections is enabled---in
-other words, @command{ssh} options @option{-X} and @option{-Y} will work.
-
address@hidden @code{allow-agent-forwarding?} (Vorgabe: @code{#t})
-Whether to allow agent forwarding.
-
address@hidden @code{allow-tcp-forwarding?} (Vorgabe: @code{#t})
-Whether to allow TCP forwarding.
-
address@hidden @code{gateway-ports?} (Vorgabe: @code{#f})
-Whether to allow gateway ports.
-
address@hidden @code{challenge-response-authentication?} (default: @code{#f})
-Specifies whether challenge response authentication is allowed (e.g.@: via
-PAM).
-
address@hidden @code{use-pam?} (default: @code{#t})
-Enables the Pluggable Authentication Module interface.  If set to @code{#t},
-this will enable PAM authentication using
address@hidden and
address@hidden, in addition to PAM account and session
-module processing for all authentication types.
-
-Because PAM challenge response authentication usually serves an equivalent
-role to password authentication, you should disable either
address@hidden or
address@hidden
-
address@hidden @code{print-last-log?} (default: @code{#t})
-Specifies whether @command{sshd} should print the date and time of the last
-user login when a user logs in interactively.
-
address@hidden @code{subsystems} (default: @code{'(("sftp" "internal-sftp"))})
-Configures external subsystems (e.g.@: file transfer daemon).
-
-This is a list of two-element lists, each of which containing the subsystem
-name and a command (with optional arguments) to execute upon subsystem
-request.
-
-The command @command{internal-sftp} implements an in-process SFTP server.
-Alternately, one can specify the @command{sftp-server} command:
address@hidden
-(service openssh-service-type
-         (openssh-configuration
-          (subsystems
-           `(("sftp" ,(file-append openssh "/libexec/sftp-server"))))))
address@hidden example
-
address@hidden @code{accepted-environment} (default: @code{'()})
-List of strings describing which environment variables may be exported.
-
-Each string gets on its own line.  See the @code{AcceptEnv} option in
address@hidden sshd_config}.
-
-This example allows ssh-clients to export the @code{COLORTERM} variable.  It
-is set by terminal emulators, which support colors.  You can use it in your
-shell's ressource file to enable colors for the prompt and commands if this
-variable is set.
-
address@hidden
-(service openssh-service-type
-         (openssh-configuration
-           (accepted-environment '("COLORTERM"))))
address@hidden example
-
address@hidden @code{authorized-keys} (default: @code{'()})
address@hidden authorized keys, SSH
address@hidden SSH authorized keys
-This is the list of authorized keys.  Each element of the list is a user
-name followed by one or more file-like objects that represent SSH public
-keys.  For example:
-
address@hidden
-(openssh-configuration
-  (authorized-keys
-    `(("rekado" ,(local-file "rekado.pub"))
-      ("chris" ,(local-file "chris.pub"))
-      ("root" ,(local-file "rekado.pub") ,(local-file "chris.pub")))))
address@hidden example
-
address@hidden
-registers the specified public keys for user accounts @code{rekado},
address@hidden, and @code{root}.
-
-Additional authorized keys can be specified @i{via}
address@hidden
-
-Note that this does @emph{not} interfere with the use of
address@hidden/.ssh/authorized_keys}.
-
address@hidden @code{log-level} (Vorgabe: @code{'info})
-This is a symbol specifying the logging level: @code{quiet}, @code{fatal},
address@hidden, @code{info}, @code{verbose}, @code{debug}, etc.  See the man
-page for @file{sshd_config} for the full list of level names.
-
address@hidden @code{extra-content} (Vorgabe: @code{""})
-This field can be used to append arbitrary text to the configuration file.
-It is especially useful for elaborate configurations that cannot be
-expressed otherwise.  This configuration, for example, would generally
-disable root logins, but permit them from one specific IP address:
-
address@hidden
-(openssh-configuration
-  (extra-content "\
-Match Address 192.168.0.1
-  PermitRootLogin yes"))
address@hidden example
-
address@hidden table
address@hidden deftp
-
address@hidden {Scheme Procedure} dropbear-service address@hidden
-Run the @uref{https://matt.ucc.asn.au/dropbear/dropbear.html,Dropbear SSH
-daemon} with the given @var{config}, a @code{<dropbear-configuration>}
-object.
-
-For example, to specify a Dropbear service listening on port 1234, add this
-call to the operating system's @code{services} field:
-
address@hidden
-(dropbear-service (dropbear-configuration
-                    (port-number 1234)))
address@hidden example
address@hidden deffn
-
address@hidden {Data Type} dropbear-configuration
-This data type represents the configuration of a Dropbear SSH daemon.
-
address@hidden @asis
address@hidden @code{dropbear} (default: @var{dropbear})
-The Dropbear package to use.
-
address@hidden @code{port-number} (default: 22)
-The TCP port where the daemon waits for incoming connections.
-
address@hidden @code{syslog-output?} (default: @code{#t})
-Whether to enable syslog output.
-
address@hidden @code{pid-file} (default: @code{"/var/run/dropbear.pid"})
-File name of the daemon's PID file.
-
address@hidden @code{root-login?} (default: @code{#f})
-Whether to allow @code{root} logins.
-
address@hidden @code{allow-empty-passwords?} (default: @code{#f})
-Whether to allow empty passwords.
-
address@hidden @code{password-authentication?} (default: @code{#t})
-Whether to enable password-based authentication.
address@hidden table
address@hidden deftp
-
address@hidden {Scheme Variable} %facebook-host-aliases
-This variable contains a string for use in @file{/etc/hosts} (@pxref{Host
-Names,,, libc, The GNU C Library Reference Manual}).  Each line contains a
-entry that maps a known server name of the Facebook on-line service---e.g.,
address@hidden the local address@hidden or its IPv6
-equivalent, @code{::1}.
-
-This variable is typically used in the @code{hosts-file} field of an
address@hidden declaration (@pxref{»operating-system«-Referenz,
address@hidden/etc/hosts}}):
-
address@hidden
-(use-modules (gnu) (guix))
-
-(operating-system
-  (host-name "mymachine")
-  ;; ...
-  (hosts-file
-    ;; Create a /etc/hosts file with aliases for "localhost"
-    ;; and "mymachine", as well as for Facebook servers.
-    (plain-file "hosts"
-                (string-append (local-host-aliases host-name)
-                               %facebook-host-aliases))))
address@hidden example
-
-This mechanism can prevent programs running locally, such as Web browsers,
-from accessing Facebook.
address@hidden defvr
-
-The @code{(gnu services avahi)} provides the following definition.
-
address@hidden {Scheme-Variable} avahi-service-type
-This is the service that runs @command{avahi-daemon}, a system-wide
-mDNS/DNS-SD responder that allows for service discovery and
-``zero-configuration'' host name lookups (see @uref{http://avahi.org/}).
-Its value must be a @code{zero-configuration} record---see below.
-
-This service extends the name service cache daemon (nscd) so that it can
-resolve @code{.local} host names using
address@hidden://0pointer.de/lennart/projects/nss-mdns/, nss-mdns}.  @xref{Name 
Service Switch}, for information on host name resolution.
-
-Additionally, add the @var{avahi} package to the system profile so that
-commands such as @command{avahi-browse} are directly usable.
address@hidden defvr
-
address@hidden {Datentyp} avahi-configuration
-Dieser Datentyp repräsentiert die Konfiguration von Avahi.
-
address@hidden @asis
-
address@hidden @code{host-name} (Vorgabe: @code{#f})
-If different from @code{#f}, use that as the host name to publish for this
-machine; otherwise, use the machine's actual host name.
-
address@hidden @code{publish?} (Vorgabe: @code{#t})
-When true, allow host names and services to be published (broadcast) over
-the network.
-
address@hidden @code{publish-workstation?} (Vorgabe: @code{#t})
-When true, @command{avahi-daemon} publishes the machine's host name and IP
-address via mDNS on the local network.  To view the host names published on
-your local network, you can run:
-
address@hidden
-avahi-browse _workstation._tcp
address@hidden example
-
address@hidden @code{wide-area?} (Vorgabe: @code{#f})
-When true, DNS-SD over unicast DNS is enabled.
-
address@hidden @code{ipv4?} (Vorgabe: @code{#t})
address@hidden @code{ipv6?} (Vorgabe: @code{#t})
-These fields determine whether to use IPv4/IPv6 sockets.
-
address@hidden @code{domains-to-browse} (Vorgabe: @code{'()})
-This is a list of domains to browse.
address@hidden table
address@hidden deftp
-
address@hidden {Scheme Variable} openvswitch-service-type
-This is the type of the @uref{http://www.openvswitch.org, Open vSwitch}
-service, whose value should be an @code{openvswitch-configuration} object.
address@hidden deffn
-
address@hidden {Data Type} openvswitch-configuration
-Data type representing the configuration of Open vSwitch, a multilayer
-virtual switch which is designed to enable massive network automation
-through programmatic extension.
-
address@hidden @asis
address@hidden @code{package} (default: @var{openvswitch})
-Package object of the Open vSwitch.
-
address@hidden table
address@hidden deftp
-
address@hidden X Window
address@hidden X Window
-
address@hidden X11
address@hidden X Window System
address@hidden login manager
-Support for the X Window graphical display system---specifically Xorg---is
-provided by the @code{(gnu services xorg)} module.  Note that there is no
address@hidden procedure.  Instead, the X server is started by the
address@hidden manager}, by default the GNOME Display Manager (GDM).
-
address@hidden GDM
address@hidden GNOME, login manager
-GDM of course allows users to log in into window managers and desktop
-environments other than GNOME; for those using GNOME, GDM is required for
-features such as automatic screen locking.
-
address@hidden window manager
-To use X11, you must install at least one @dfn{window manager}---for example
-the @code{windowmaker} or @code{openbox} packages---preferably by adding it
-to the @code{packages} field of your operating system definition
-(@pxref{»operating-system«-Referenz, system-wide packages}).
-
address@hidden {Scheme-Variable} gdm-service-type
-This is the type for the @uref{https://wiki.gnome.org/Projects/GDM/, GNOME
-Desktop Manager} (GDM), a program that manages graphical display servers and
-handles graphical user logins.  Its value must be a @code{gdm-configuration}
-(see below.)
-
address@hidden session types (X11)
address@hidden X11 session types
-GDM looks for @dfn{session types} described by the @file{.desktop} files in
address@hidden/run/current-system/profile/share/xsessions} and allows users to
-choose a session from the log-in screen.  Packages such as @code{gnome},
address@hidden, and @code{i3} provide @file{.desktop} files; adding them to the
-system-wide set of packages automatically makes them available at the log-in
-screen.
-
-In addition, @file{~/.xsession} files are honored.  When available,
address@hidden/.xsession} must be an executable that starts a window manager 
and/or
-other X clients.
address@hidden defvr
-
address@hidden {Datentyp} gdm-configuration
address@hidden @asis
address@hidden @code{auto-login?} (default: @code{#f})
address@hidden @code{default-user} (Vorgabe: @code{#f})
-When @code{auto-login?} is false, GDM presents a log-in screen.
-
-When @code{auto-login?} is true, GDM logs in directly as
address@hidden
-
address@hidden @code{gnome-shell-assets} (Vorgabe: …)
-List of GNOME Shell assets needed by GDM: icon theme, fonts, etc.
-
address@hidden @code{xorg-configuration} (Vorgabe: @code{(xorg-configuration)})
-Xorg-Server für grafische Oberflächen konfigurieren.
-
address@hidden @code{xsession} (Vorgabe: @code{(xinitrc)})
-Script to run before starting a X session.
-
address@hidden @code{dbus-daemon} (Vorgabe: @code{dbus-daemon-wrapper})
-File name of the @code{dbus-daemon} executable.
-
address@hidden @code{gdm} (Vorgabe: @code{gdm})
-Das GDM-Paket, was benutzt werden soll.
address@hidden table
address@hidden deftp
-
address@hidden {Scheme Variable} slim-service-type
-This is the type for the SLiM graphical login manager for X11.
-
-Like GDM, SLiM looks for session types described by @file{.desktop} files
-and allows users to choose a session from the log-in screen using @kbd{F1}.
-It also honors @file{~/.xsession} files.
address@hidden defvr
-
address@hidden {Data Type} slim-configuration
-Data type representing the configuration of @code{slim-service-type}.
-
address@hidden @asis
address@hidden @code{allow-empty-passwords?} (Vorgabe: @code{#t})
-Whether to allow logins with empty passwords.
-
address@hidden @code{auto-login?} (default: @code{#f})
address@hidden @code{default-user} (default: @code{""})
-When @code{auto-login?} is false, SLiM presents a log-in screen.
-
-When @code{auto-login?} is true, SLiM logs in directly as
address@hidden
-
address@hidden @code{theme} (default: @code{%default-slim-theme})
address@hidden @code{theme-name} (default: @code{%default-slim-theme-name})
-The graphical theme to use and its name.
-
address@hidden @code{auto-login-session} (default: @code{#f})
-If true, this must be the name of the executable to start as the default
-session---e.g., @code{(file-append windowmaker "/bin/windowmaker")}.
-
-If false, a session described by one of the available @file{.desktop} files
-in @code{/run/current-system/profile} and @code{~/.guix-profile} will be
-used.
-
address@hidden Anmerkung
-You must install at least one window manager in the system profile or in
-your user profile.  Failing to do that, if @code{auto-login-session} is
-false, you will be unable to log in.
address@hidden quotation
-
address@hidden @code{xorg-configuration} (Vorgabe: @code{(xorg-configuration)})
-Xorg-Server für grafische Oberflächen konfigurieren.
-
address@hidden @code{xauth} (default: @code{xauth})
-The XAuth package to use.
-
address@hidden @code{shepherd} (default: @code{shepherd})
-The Shepherd package used when invoking @command{halt} and @command{reboot}.
-
address@hidden @code{sessreg} (default: @code{sessreg})
-The sessreg package used in order to register the session.
-
address@hidden @code{slim} (default: @code{slim})
-The SLiM package to use.
address@hidden table
address@hidden deftp
-
address@hidden {Scheme Variable} %default-theme
address@hidden {Scheme Variable} %default-theme-name
-The default SLiM theme and its name.
address@hidden defvr
-
-
address@hidden {Data Type} sddm-configuration
-This is the data type representing the sddm service configuration.
-
address@hidden @asis
address@hidden @code{display-server} (default: "x11")
-Select display server to use for the greeter. Valid values are "x11" or
-"wayland".
-
address@hidden @code{numlock} (default: "on")
-Valid values are "on", "off" or "none".
-
address@hidden @code{halt-command} (default @code{#~(string-apppend #$shepherd 
"/sbin/halt")})
-Command to run when halting.
-
address@hidden @code{reboot-command} (default @code{#~(string-append #$shepherd 
"/sbin/reboot")})
-Command to run when rebooting.
-
address@hidden @code{theme} (default "maldives")
-Theme to use. Default themes provided by SDDM are "elarun" or "maldives".
-
address@hidden @code{themes-directory} (default 
"/run/current-system/profile/share/sddm/themes")
-Directory to look for themes.
-
address@hidden @code{faces-directory} (default 
"/run/current-system/profile/share/sddm/faces")
-Directory to look for faces.
-
address@hidden @code{default-path} (default "/run/current-system/profile/bin")
-Default PATH to use.
-
address@hidden @code{minimum-uid} (default 1000)
-Minimum UID to display in SDDM.
-
address@hidden @code{maximum-uid} (default 2000)
-Maximum UID to display in SDDM
-
address@hidden @code{remember-last-user?} (default #t)
-Remember last user.
-
address@hidden @code{remember-last-session?} (default #t)
-Remember last session.
-
address@hidden @code{hide-users} (default "")
-Usernames to hide from SDDM greeter.
-
address@hidden @code{hide-shells} (default @code{#~(string-append #$shadow 
"/sbin/nologin")})
-Users with shells listed will be hidden from the SDDM greeter.
-
address@hidden @code{session-command} (default @code{#~(string-append #$sddm 
"/share/sddm/scripts/wayland-session")})
-Script to run before starting a wayland session.
-
address@hidden @code{sessions-directory} (default 
"/run/current-system/profile/share/wayland-sessions")
-Directory to look for desktop files starting wayland sessions.
-
address@hidden @code{xorg-configuration} (Vorgabe: @code{(xorg-configuration)})
-Xorg-Server für grafische Oberflächen konfigurieren.
-
address@hidden @code{xauth-path} (default @code{#~(string-append #$xauth 
"/bin/xauth")})
-Path to xauth.
-
address@hidden @code{xephyr-path} (default @code{#~(string-append #$xorg-server 
"/bin/Xephyr")})
-Path to Xephyr.
-
address@hidden @code{xdisplay-start} (default @code{#~(string-append #$sddm 
"/share/sddm/scripts/Xsetup")})
-Script to run after starting xorg-server.
-
address@hidden @code{xdisplay-stop} (default @code{#~(string-append #$sddm 
"/share/sddm/scripts/Xstop")})
-Script to run before stopping xorg-server.
-
address@hidden @code{xsession-command} (Vorgabe: @code{xinitrc})
-Script to run before starting a X session.
-
address@hidden @code{xsessions-directory} (default: 
"/run/current-system/profile/share/xsessions")
-Directory to look for desktop files starting X sessions.
-
address@hidden @code{minimum-vt} (default: 7)
-Minimum VT to use.
-
address@hidden @code{auto-login-user} (default "")
-User to use for auto-login.
-
address@hidden @code{auto-login-session} (default "")
-Desktop file to use for auto-login.
-
address@hidden @code{relogin?} (default #f)
-Relogin after logout.
-
address@hidden table
address@hidden deftp
-
address@hidden login manager
address@hidden X11 login
address@hidden {Scheme Procedure} sddm-service config
-Return a service that spawns the SDDM graphical login manager for config of
-type @code{<sddm-configuration>}.
-
address@hidden
-  (sddm-service (sddm-configuration
-                 (auto-login-user "Alice")
-                 (auto-login-session "xfce.desktop")))
address@hidden example
address@hidden deffn
-
address@hidden Xorg, Konfiguration
address@hidden {Datentyp} xorg-configuration
-This data type represents the configuration of the Xorg graphical display
-server.  Note that there is not Xorg service; instead, the X server is
-started by a ``display manager'' such as GDM, SDDM, and SLiM.  Thus, the
-configuration of these display managers aggregates an
address@hidden record.
-
address@hidden @asis
address@hidden @code{modules} (Vorgabe: @code{%default-xorg-modules})
-This is a list of @dfn{module packages} loaded by the Xorg server---e.g.,
address@hidden, @code{xf86-input-keyboard}, and so on.
-
address@hidden @code{fonts} (Vorgabe: @code{%default-xorg-fonts})
-This is a list of font directories to add to the server's @dfn{font path}.
-
address@hidden @code{drivers} (Vorgabe: @code{'()})
-This must be either the empty list, in which case Xorg chooses a graphics
-driver automatically, or a list of driver names that will be tried in this
-order---e.g., @code{("modesetting" "vesa")}.
-
address@hidden @code{resolutions} (Vorgabe: @code{'()})
-When @code{resolutions} is the empty list, Xorg chooses an appropriate
-screen resolution.  Otherwise, it must be a list of resolutions---e.g.,
address@hidden((1024 768) (640 480))}.
-
address@hidden Tastaturbelegung, für Xorg
address@hidden keymap, for Xorg
address@hidden @code{keyboard-layout} (Vorgabe: @code{#f})
-If this is @code{#f}, Xorg uses the default keyboard layout---usually US
-English (``qwerty'') for a 105-key PC keyboard.
-
-Otherwise this must be a @code{keyboard-layout} object specifying the
-keyboard layout in use when Xorg is running.  @xref{Tastaturbelegung}, for
-more information on how to specify the keyboard layout.
-
address@hidden @code{extra-config} (Vorgabe: @code{'()})
-This is a list of strings or objects appended to the configuration file.  It
-is used to pass extra text to be added verbatim to the configuration file.
-
address@hidden @code{server} (Vorgabe: @code{xorg-server})
-This is the package providing the Xorg server.
-
address@hidden @code{server-arguments} (Vorgabe: 
@code{%default-xorg-server-arguments})
-This is the list of command-line arguments to pass to the X server.  The
-default is @code{-nolisten tcp}.
address@hidden table
address@hidden deftp
-
address@hidden {Scheme-Prozedur} set-xorg-configuration @var{Konfiguration} @
-  address@hidden Tell the log-in manager (of type
address@hidden) to use @var{config}, an
-<xorg-configuration> record.
-
-Since the Xorg configuration is embedded in the log-in manager's
-configuration---e.g., @code{gdm-configuration}---this procedure provides a
-shorthand to set the Xorg configuration.
address@hidden deffn
-
address@hidden {Scheme-Prozedur} xorg-start-command address@hidden
-Return a @code{startx} script in which the modules, fonts, etc. specified in
address@hidden, are available.  The result should be used in place of
address@hidden
-
-Usually the X server is started by a login manager.
address@hidden deffn
-
-
address@hidden {Scheme Procedure} screen-locker-service @var{package} 
address@hidden
-Add @var{package}, a package for a screen locker or screen saver whose
-command is @var{program}, to the set of setuid programs and add a PAM entry
-for it.  For example:
-
address@hidden
-(screen-locker-service xlockmore "xlock")
address@hidden lisp
-
-makes the good ol' XlockMore usable.
address@hidden deffn
-
-
address@hidden Druckdienste
address@hidden Druckdienste
-
address@hidden printer support with CUPS
-Das Modul @code{(gnu services cups)} stellt eine Guix-Dienstdefinition für
-den CUPS-Druckdienst zur Verfügung. Wenn Sie Druckerunterstützung zu einem
-Guix-System hinzufügen möchten, dann fügen Sie einen
address@hidden in die Betriebssystemdefinition ein.
-
address@hidden {Scheme Variable} cups-service-type
-The service type for the CUPS print server.  Its value should be a valid
-CUPS configuration (see below).  To use the default settings, simply write:
address@hidden
-(service cups-service-type)
address@hidden example
address@hidden deffn
-
-The CUPS configuration controls the basic things about your CUPS
-installation: what interfaces it listens on, what to do if a print job
-fails, how much logging to do, and so on.  To actually add a printer, you
-have to visit the @url{http://localhost:631} URL, or use a tool such as
-GNOME's printer configuration services.  By default, configuring a CUPS
-service will generate a self-signed certificate if needed, for secure
-connections to the print server.
-
-Suppose you want to enable the Web interface of CUPS and also add support
-for Epson printers @i{via} the @code{escpr} package and for HP printers
address@hidden the @code{hplip-minimal} package.  You can do that directly, like
-this (you need to use the @code{(gnu packages cups)} module):
-
address@hidden
-(service cups-service-type
-         (cups-configuration
-           (web-interface? #t)
-           (extensions
-             (list cups-filters escpr hplip-minimal))))
address@hidden example
-
-Note: If you wish to use the Qt5 based GUI which comes with the hplip
-package then it is suggested that you install the @code{hplip} package,
-either in your OS configuration file or as your user.
-
-The available configuration parameters follow.  Each parameter definition is
-preceded by its type; for example, @samp{string-list foo} indicates that the
address@hidden parameter should be specified as a list of strings.  There is
-also a way to specify the configuration as a string, if you have an old
address@hidden file that you want to port over from some other system;
-see the end for more details.
-
address@hidden The following documentation was initially generated by
address@hidden (generate-documentation) in (gnu services cups).  Manually 
maintained
address@hidden documentation is better, so we shouldn't hesitate to edit below 
as
address@hidden needed.  However if the change you want to make to this 
documentation
address@hidden can be done in an automated way, it's probably easier to change
address@hidden (generate-documentation) than to make it below and have to deal 
with
address@hidden the churn as CUPS updates.
-
-
-Available @code{cups-configuration} fields are:
-
address@hidden address@hidden parameter} package cups
-The CUPS package.
address@hidden deftypevr
-
address@hidden address@hidden parameter} package-list extensions
-Drivers and other extensions to the CUPS package.
address@hidden deftypevr
-
address@hidden address@hidden parameter} files-configuration files-configuration
-Configuration of where to write logs, what directories to use for print
-spools, and related privileged configuration parameters.
-
-Available @code{files-configuration} fields are:
-
address@hidden address@hidden parameter} log-location access-log
-Defines the access log filename.  Specifying a blank filename disables
-access log generation.  The value @code{stderr} causes log entries to be
-sent to the standard error file when the scheduler is running in the
-foreground, or to the system log daemon when run in the background.  The
-value @code{syslog} causes log entries to be sent to the system log daemon.
-The server name may be included in filenames using the string @code{%s}, as
-in @code{/var/log/cups/%s-access_log}.
-
-Defaults to @samp{"/var/log/cups/access_log"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} file-name cache-dir
-Where CUPS should cache data.
-
-Defaults to @samp{"/var/cache/cups"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string config-file-perm
-Specifies the permissions for all configuration files that the scheduler
-writes.
-
-Note that the permissions for the printers.conf file are currently masked to
-only allow access from the scheduler user (typically root).  This is done
-because printer device URIs sometimes contain sensitive authentication
-information that should not be generally known on the system.  There is no
-way to disable this security feature.
-
-Defaults to @samp{"0640"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} log-location error-log
-Defines the error log filename.  Specifying a blank filename disables access
-log generation.  The value @code{stderr} causes log entries to be sent to
-the standard error file when the scheduler is running in the foreground, or
-to the system log daemon when run in the background.  The value
address@hidden causes log entries to be sent to the system log daemon.  The
-server name may be included in filenames using the string @code{%s}, as in
address@hidden/var/log/cups/%s-error_log}.
-
-Defaults to @samp{"/var/log/cups/error_log"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string fatal-errors
-Specifies which errors are fatal, causing the scheduler to exit.  The kind
-strings are:
-
address@hidden @code
address@hidden none
-No errors are fatal.
-
address@hidden all
-All of the errors below are fatal.
-
address@hidden browse
-Browsing initialization errors are fatal, for example failed connections to
-the DNS-SD daemon.
-
address@hidden config
-Configuration file syntax errors are fatal.
-
address@hidden listen
-Listen or Port errors are fatal, except for IPv6 failures on the loopback or
address@hidden addresses.
-
address@hidden log
-Log file creation or write errors are fatal.
-
address@hidden permissions
-Bad startup file permissions are fatal, for example shared TLS certificate
-and key files with world-read permissions.
address@hidden table
-
-Defaults to @samp{"all -browse"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean file-device?
-Specifies whether the file pseudo-device can be used for new printer
-queues.  The URI @uref{file:///dev/null} is always allowed.
-
-Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string group
-Specifies the group name or ID that will be used when executing external
-programs.
-
-Defaults to @samp{"lp"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string log-file-perm
-Specifies the permissions for all log files that the scheduler writes.
-
-Defaults to @samp{"0644"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} log-location page-log
-Defines the page log filename.  Specifying a blank filename disables access
-log generation.  The value @code{stderr} causes log entries to be sent to
-the standard error file when the scheduler is running in the foreground, or
-to the system log daemon when run in the background.  The value
address@hidden causes log entries to be sent to the system log daemon.  The
-server name may be included in filenames using the string @code{%s}, as in
address@hidden/var/log/cups/%s-page_log}.
-
-Defaults to @samp{"/var/log/cups/page_log"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string remote-root
-Specifies the username that is associated with unauthenticated accesses by
-clients claiming to be the root user.  The default is @code{remroot}.
-
-Defaults to @samp{"remroot"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} file-name request-root
-Specifies the directory that contains print jobs and other HTTP request
-data.
-
-Defaults to @samp{"/var/spool/cups"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} sandboxing sandboxing
-Specifies the level of security sandboxing that is applied to print filters,
-backends, and other child processes of the scheduler; either @code{relaxed}
-or @code{strict}.  This directive is currently only used/supported on macOS.
-
-Defaults to @samp{strict}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} file-name server-keychain
-Specifies the location of TLS certificates and private keys.  CUPS will look
-for public and private keys in this directory: a @code{.crt} files for
-PEM-encoded certificates and corresponding @code{.key} files for PEM-encoded
-private keys.
-
-Defaults to @samp{"/etc/cups/ssl"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} file-name server-root
-Specifies the directory containing the server configuration files.
-
-Defaults to @samp{"/etc/cups"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean sync-on-close?
-Specifies whether the scheduler calls fsync(2) after writing configuration
-or state files.
-
-Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} space-separated-string-list 
system-group
-Specifies the group(s) to use for @code{@@SYSTEM} group authentication.
address@hidden deftypevr
-
address@hidden address@hidden parameter} file-name temp-dir
-Specifies the directory where temporary files are stored.
-
-Defaults to @samp{"/var/spool/cups/tmp"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string user
-Specifies the user name or ID that is used when running external programs.
-
-Defaults to @samp{"lp"}.
address@hidden deftypevr
address@hidden deftypevr
-
address@hidden address@hidden parameter} access-log-level access-log-level
-Specifies the logging level for the AccessLog file.  The @code{config} level
-logs when printers and classes are added, deleted, or modified and when
-configuration files are accessed or updated.  The @code{actions} level logs
-when print jobs are submitted, held, released, modified, or canceled, and
-any of the conditions for @code{config}.  The @code{all} level logs all
-requests.
-
-Defaults to @samp{actions}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean auto-purge-jobs?
-Specifies whether to purge job history data automatically when it is no
-longer required for quotas.
-
-Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} browse-local-protocols 
browse-local-protocols
-Specifies which protocols to use for local printer sharing.
-
-Defaults to @samp{dnssd}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean browse-web-if?
-Specifies whether the CUPS web interface is advertised.
-
-Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean browsing?
-Specifies whether shared printers are advertised.
-
-Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string classification
-Specifies the security classification of the server.  Any valid banner name
-can be used, including "classified", "confidential", "secret", "topsecret",
-and "unclassified", or the banner can be omitted to disable secure printing
-functions.
-
-Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean classify-override?
-Specifies whether users may override the classification (cover page) of
-individual print jobs using the @code{job-sheets} option.
-
-Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} default-auth-type default-auth-type
-Specifies the default type of authentication to use.
-
-Defaults to @samp{Basic}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} default-encryption default-encryption
-Specifies whether encryption will be used for authenticated requests.
-
-Defaults to @samp{Required}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string default-language
-Specifies the default language to use for text and web content.
-
-Defaults to @samp{"en"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string default-paper-size
-Specifies the default paper size for new print queues.  @samp{"Auto"} uses a
-locale-specific default, while @samp{"None"} specifies there is no default
-paper size.  Specific size names are typically @samp{"Letter"} or
address@hidden"A4"}.
-
-Defaults to @samp{"Auto"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string default-policy
-Specifies the default access policy to use.
-
-Defaults to @samp{"default"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean default-shared?
-Specifies whether local printers are shared by default.
-
-Defaults to @samp{#t}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer 
dirty-clean-interval
-Specifies the delay for updating of configuration and state files, in
-seconds.  A value of 0 causes the update to happen as soon as possible,
-typically within a few milliseconds.
-
-Defaults to @samp{30}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} error-policy error-policy
-Specifies what to do when an error occurs.  Possible values are
address@hidden, which will discard the failed print job; @code{retry-job},
-which will retry the job at a later time; @code{retry-this-job}, which
-retries the failed job immediately; and @code{stop-printer}, which stops the
-printer.
-
-Defaults to @samp{stop-printer}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer filter-limit
-Specifies the maximum cost of filters that are run concurrently, which can
-be used to minimize disk, memory, and CPU resource problems.  A limit of 0
-disables filter limiting.  An average print to a non-PostScript printer
-needs a filter limit of about 200.  A PostScript printer needs about half
-that (100).  Setting the limit below these thresholds will effectively limit
-the scheduler to printing a single job at any time.
-
-Defaults to @samp{0}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer filter-nice
-Specifies the scheduling priority of filters that are run to print a job.
-The nice value ranges from 0, the highest priority, to 19, the lowest
-priority.
-
-Defaults to @samp{0}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} host-name-lookups host-name-lookups
-Specifies whether to do reverse lookups on connecting clients.  The
address@hidden setting causes @code{cupsd} to verify that the hostname
-resolved from the address matches one of the addresses returned for that
-hostname.  Double lookups also prevent clients with unregistered addresses
-from connecting to your server.  Only set this option to @code{#t} or
address@hidden if absolutely required.
-
-Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer job-kill-delay
-Specifies the number of seconds to wait before killing the filters and
-backend associated with a canceled or held job.
-
-Defaults to @samp{30}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer job-retry-interval
-Specifies the interval between retries of jobs in seconds.  This is
-typically used for fax queues but can also be used with normal print queues
-whose error policy is @code{retry-job} or @code{retry-current-job}.
-
-Defaults to @samp{30}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer job-retry-limit
-Specifies the number of retries that are done for jobs.  This is typically
-used for fax queues but can also be used with normal print queues whose
-error policy is @code{retry-job} or @code{retry-current-job}.
-
-Defaults to @samp{5}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean keep-alive?
-Specifies whether to support HTTP keep-alive connections.
-
-Defaults to @samp{#t}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer keep-alive-timeout
-Specifies how long an idle client connection remains open, in seconds.
-
-Defaults to @samp{30}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer limit-request-body
-Specifies the maximum size of print files, IPP requests, and HTML form
-data.  A limit of 0 disables the limit check.
-
-Defaults to @samp{0}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} multiline-string-list listen
-Listens on the specified interfaces for connections.  Valid values are of
-the form @var{address}:@var{port}, where @var{address} is either an IPv6
-address enclosed in brackets, an IPv4 address, or @code{*} to indicate all
-addresses.  Values can also be file names of local UNIX domain sockets.  The
-Listen directive is similar to the Port directive but allows you to restrict
-access to specific interfaces or networks.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer listen-back-log
-Specifies the number of pending connections that will be allowed.  This
-normally only affects very busy servers that have reached the MaxClients
-limit, but can also be triggered by large numbers of simultaneous
-connections.  When the limit is reached, the operating system will refuse
-additional connections until the scheduler can accept the pending ones.
-
-Defaults to @samp{128}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} location-access-control-list 
location-access-controls
-Specifies a set of additional access controls.
-
-Available @code{location-access-controls} fields are:
-
address@hidden address@hidden parameter} file-name path
-Specifies the URI path to which the access control applies.
address@hidden deftypevr
-
address@hidden address@hidden parameter} access-control-list access-controls
-Access controls for all access to this path, in the same format as the
address@hidden of @code{operation-access-control}.
-
-Defaults to @samp{()}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} method-access-control-list 
method-access-controls
-Access controls for method-specific access to this path.
-
-Defaults to @samp{()}.
-
-Available @code{method-access-controls} fields are:
-
address@hidden address@hidden parameter} boolean reverse?
-If @code{#t}, apply access controls to all methods except the listed
-methods.  Otherwise apply to only the listed methods.
-
-Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} method-list methods
-Methods to which this access control applies.
-
-Defaults to @samp{()}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} access-control-list access-controls
-Access control directives, as a list of strings.  Each string should be one
-directive, such as "Order allow,deny".
-
-Defaults to @samp{()}.
address@hidden deftypevr
address@hidden deftypevr
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer log-debug-history
-Specifies the number of debugging messages that are retained for logging if
-an error occurs in a print job.  Debug messages are logged regardless of the
-LogLevel setting.
-
-Defaults to @samp{100}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} log-level log-level
-Specifies the level of logging for the ErrorLog file.  The value @code{none}
-stops all logging while @code{debug2} logs everything.
-
-Defaults to @samp{info}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} log-time-format log-time-format
-Specifies the format of the date and time in the log files.  The value
address@hidden logs whole seconds while @code{usecs} logs microseconds.
-
-Defaults to @samp{standard}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer max-clients
-Specifies the maximum number of simultaneous clients that are allowed by the
-scheduler.
-
-Defaults to @samp{100}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer 
max-clients-per-host
-Specifies the maximum number of simultaneous clients that are allowed from a
-single address.
-
-Defaults to @samp{100}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer max-copies
-Specifies the maximum number of copies that a user can print of each job.
-
-Defaults to @samp{9999}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer max-hold-time
-Specifies the maximum time a job may remain in the @code{indefinite} hold
-state before it is canceled.  A value of 0 disables cancellation of held
-jobs.
-
-Defaults to @samp{0}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer max-jobs
-Specifies the maximum number of simultaneous jobs that are allowed.  Set to
-0 to allow an unlimited number of jobs.
-
-Defaults to @samp{500}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer 
max-jobs-per-printer
-Specifies the maximum number of simultaneous jobs that are allowed per
-printer.  A value of 0 allows up to MaxJobs jobs per printer.
-
-Defaults to @samp{0}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer max-jobs-per-user
-Specifies the maximum number of simultaneous jobs that are allowed per
-user.  A value of 0 allows up to MaxJobs jobs per user.
-
-Defaults to @samp{0}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer max-job-time
-Specifies the maximum time a job may take to print before it is canceled, in
-seconds.  Set to 0 to disable cancellation of "stuck" jobs.
-
-Defaults to @samp{10800}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer max-log-size
-Specifies the maximum size of the log files before they are rotated, in
-bytes.  The value 0 disables log rotation.
-
-Defaults to @samp{1048576}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer 
multiple-operation-timeout
-Specifies the maximum amount of time to allow between files in a multiple
-file print job, in seconds.
-
-Defaults to @samp{300}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string page-log-format
-Specifies the format of PageLog lines.  Sequences beginning with percent
-(@samp{%}) characters are replaced with the corresponding information, while
-all other characters are copied literally.  The following percent sequences
-are recognized:
-
address@hidden @samp
address@hidden %%
-insert a single percent character
-
address@hidden address@hidden@}
-insert the value of the specified IPP attribute
-
address@hidden %C
-insert the number of copies for the current page
-
address@hidden %P
-insert the current page number
-
address@hidden %T
-insert the current date and time in common log format
-
address@hidden %j
-insert the job ID
-
address@hidden %p
-insert the printer name
-
address@hidden %u
-insert the username
address@hidden table
-
-A value of the empty string disables page logging.  The string @code{%p %u
-%j %T %P %C address@hidden@} address@hidden@} address@hidden@}
address@hidden@} address@hidden@}} creates a page log with the standard items.
-
-Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} environment-variables 
environment-variables
-Passes the specified environment variable(s) to child processes; a list of
-strings.
-
-Defaults to @samp{()}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} policy-configuration-list policies
-Specifies named access control policies.
-
-Available @code{policy-configuration} fields are:
-
address@hidden address@hidden parameter} string name
-Name of the policy.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string job-private-access
-Specifies an access list for a job's private values.  @code{@@ACL} maps to
-the printer's requesting-user-name-allowed or requesting-user-name-denied
-values.  @code{@@OWNER} maps to the job's owner.  @code{@@SYSTEM} maps to
-the groups listed for the @code{system-group} field of the
address@hidden configuration, which is reified into the
address@hidden(5)} file.  Other possible elements of the access list
-include specific user names, and @code{@@@var{group}} to indicate members of
-a specific group.  The access list may also be simply @code{all} or
address@hidden
-
-Defaults to @samp{"@@OWNER @@SYSTEM"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string job-private-values
-Specifies the list of job values to make private, or @code{all},
address@hidden, or @code{none}.
-
-Defaults to @samp{"job-name job-originating-host-name
-job-originating-user-name phone"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string subscription-private-access
-Specifies an access list for a subscription's private values.  @code{@@ACL}
-maps to the printer's requesting-user-name-allowed or
-requesting-user-name-denied values.  @code{@@OWNER} maps to the job's
-owner.  @code{@@SYSTEM} maps to the groups listed for the
address@hidden field of the @code{files-config} configuration, which is
-reified into the @code{cups-files.conf(5)} file.  Other possible elements of
-the access list include specific user names, and @code{@@@var{group}} to
-indicate members of a specific group.  The access list may also be simply
address@hidden or @code{default}.
-
-Defaults to @samp{"@@OWNER @@SYSTEM"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string subscription-private-values
-Specifies the list of job values to make private, or @code{all},
address@hidden, or @code{none}.
-
-Defaults to @samp{"notify-events notify-pull-method notify-recipient-uri
-notify-subscriber-user-name notify-user-data"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} operation-access-control-list 
access-controls
-Access control by IPP operation.
-
-Defaults to @samp{()}.
address@hidden deftypevr
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean-or-non-negative-integer 
preserve-job-files
-Specifies whether job files (documents) are preserved after a job is
-printed.  If a numeric value is specified, job files are preserved for the
-indicated number of seconds after printing.  Otherwise a boolean value
-applies indefinitely.
-
-Defaults to @samp{86400}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean-or-non-negative-integer 
preserve-job-history
-Specifies whether the job history is preserved after a job is printed.  If a
-numeric value is specified, the job history is preserved for the indicated
-number of seconds after printing.  If @code{#t}, the job history is
-preserved until the MaxJobs limit is reached.
-
-Defaults to @samp{#t}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer reload-timeout
-Specifies the amount of time to wait for job completion before restarting
-the scheduler.
-
-Defaults to @samp{30}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string rip-cache
-Specifies the maximum amount of memory to use when converting documents into
-bitmaps for a printer.
-
-Defaults to @samp{"128m"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string server-admin
-Specifies the email address of the server administrator.
-
-Defaults to @samp{"root@@localhost.localdomain"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} host-name-list-or-* server-alias
-The ServerAlias directive is used for HTTP Host header validation when
-clients connect to the scheduler from external interfaces.  Using the
-special name @code{*} can expose your system to known browser-based DNS
-rebinding attacks, even when accessing sites through a firewall.  If the
-auto-discovery of alternate names does not work, we recommend listing each
-alternate name with a ServerAlias directive instead of using @code{*}.
-
-Defaults to @samp{*}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string server-name
-Specifies the fully-qualified host name of the server.
-
-Defaults to @samp{"localhost"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} server-tokens server-tokens
-Specifies what information is included in the Server header of HTTP
-responses.  @code{None} disables the Server header.  @code{ProductOnly}
-reports @code{CUPS}.  @code{Major} reports @code{CUPS 2}.  @code{Minor}
-reports @code{CUPS 2.0}.  @code{Minimal} reports @code{CUPS 2.0.0}.
address@hidden reports @code{CUPS 2.0.0 (@var{uname})} where @var{uname} is the
-output of the @code{uname} command.  @code{Full} reports @code{CUPS 2.0.0
-(@var{uname}) IPP/2.0}.
-
-Defaults to @samp{Minimal}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string set-env
-Set the specified environment variable to be passed to child processes.
-
-Defaults to @samp{"variable value"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} multiline-string-list ssl-listen
-Listens on the specified interfaces for encrypted connections.  Valid values
-are of the form @var{address}:@var{port}, where @var{address} is either an
-IPv6 address enclosed in brackets, an IPv4 address, or @code{*} to indicate
-all addresses.
-
-Defaults to @samp{()}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} ssl-options ssl-options
-Sets encryption options.  By default, CUPS only supports encryption using
-TLS v1.0 or higher using known secure cipher suites.  The @code{AllowRC4}
-option enables the 128-bit RC4 cipher suites, which are required for some
-older clients that do not implement newer ones.  The @code{AllowSSL3} option
-enables SSL v3.0, which is required for some older clients that do not
-support TLS v1.0.
-
-Defaults to @samp{()}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean strict-conformance?
-Specifies whether the scheduler requires clients to strictly adhere to the
-IPP specifications.
-
-Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer timeout
-Specifies the HTTP request timeout, in seconds.
-
-Defaults to @samp{300}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean web-interface?
-Specifies whether the web interface is enabled.
-
-Defaults to @samp{#f}.
address@hidden deftypevr
-
-At this point you're probably thinking ``oh dear, Guix manual, I like you
-but you can stop already with the configuration options''.  Indeed.
-However, one more point: it could be that you have an existing
address@hidden that you want to use.  In that case, you can pass an
address@hidden as the configuration of a
address@hidden
-
-Available @code{opaque-cups-configuration} fields are:
-
address@hidden address@hidden parameter} package cups
-The CUPS package.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string cupsd.conf
-The contents of the @code{cupsd.conf}, as a string.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string cups-files.conf
-The contents of the @code{cups-files.conf} file, as a string.
address@hidden deftypevr
-
-For example, if your @code{cupsd.conf} and @code{cups-files.conf} are in
-strings of the same name, you could instantiate a CUPS service like this:
-
address@hidden
-(service cups-service-type
-         (opaque-cups-configuration
-           (cupsd.conf cupsd.conf)
-           (cups-files.conf cups-files.conf)))
address@hidden example
-
-
address@hidden Desktop-Dienste
address@hidden Desktop-Dienste
-
-The @code{(gnu services desktop)} module provides services that are usually
-useful in the context of a ``desktop'' setup---that is, on a machine running
-a graphical display server, possibly with graphical user interfaces, etc.
-It also defines services that provide specific desktop environments like
-GNOME, Xfce or MATE.
-
-To simplify things, the module defines a variable containing the set of
-services that users typically expect on a machine with a graphical
-environment and networking:
-
address@hidden {Scheme Variable} %desktop-services
-This is a list of services that builds upon @var{%base-services} and adds or
-adjusts services for a typical ``desktop'' setup.
-
-In particular, it adds a graphical login manager (@pxref{X Window,
address@hidden), screen lockers, a network management tool
-(@pxref{Netzwerkdienste, @code{network-manager-service-type}}), energy
-and color management services, the @code{elogind} login and seat manager,
-the Polkit privilege service, the GeoClue location service, the
-AccountsService daemon that allows authorized users change system passwords,
-an NTP client (@pxref{Netzwerkdienste}), the Avahi daemon, and has the
-name service switch service configured to be able to use @code{nss-mdns}
-(@pxref{Name Service Switch, mDNS}).
address@hidden defvr
-
-The @var{%desktop-services} variable can be used as the @code{services}
-field of an @code{operating-system} declaration 
(@pxref{»operating-system«-Referenz, @code{services}}).
-
-Additionally, the @code{gnome-desktop-service-type},
address@hidden, @code{mate-desktop-service-type} and
address@hidden procedures can add GNOME, Xfce,
-MATE and/or Enlightenment to a system.  To ``add GNOME'' means that
-system-level services like the backlight adjustment helpers and the power
-management utilities are added to the system, extending @code{polkit} and
address@hidden appropriately, allowing GNOME to operate with elevated
-privileges on a limited number of special-purpose system interfaces.
-Additionally, adding a service made by @code{gnome-desktop-service-type}
-adds the GNOME metapackage to the system profile.  Likewise, adding the Xfce
-service not only adds the @code{xfce} metapackage to the system profile, but
-it also gives the Thunar file manager the ability to open a ``root-mode''
-file management window, if the user authenticates using the administrator's
-password via the standard polkit graphical interface.  To ``add MATE'' means
-that @code{polkit} and @code{dbus} are extended appropriately, allowing MATE
-to operate with elevated privileges on a limited number of special-purpose
-system interfaces.  Additionally, adding a service of type
address@hidden adds the MATE metapackage to the system
-profile.  ``Adding Enlightenment'' means that @code{dbus} is extended
-appropriately, and several of Enlightenment's binaries are set as setuid,
-allowing Enlightenment's screen locker and other functionality to work as
-expetected.
-
-The desktop environments in Guix use the Xorg display server by default.  If
-you'd like to use the newer display server protocol called Wayland, you need
-to use the @code{sddm-service} instead of GDM as the graphical login
-manager.  You should then select the ``GNOME (Wayland)'' session in SDDM.
-Alternatively you can also try starting GNOME on Wayland manually from a TTY
-with the command ``XDG_SESSION_TYPE=wayland exec dbus-run-session
-gnome-session``.  Currently only GNOME has support for Wayland.
-
address@hidden {Scheme-Variable} gnome-desktop-service-type
-Dies ist der Typ des Dienstes, der die @uref{https://www.gnome.org,
-GNOME}-Arbeitsumgebung bereitstellt. Sein Wert ist ein
address@hidden (siehe unten).
-
-This service adds the @code{gnome} package to the system profile, and
-extends polkit with the actions from @code{gnome-settings-daemon}.
address@hidden defvr
-
address@hidden {Datentyp} gnome-desktop-configuration
-Configuration record for the GNOME desktop environment.
-
address@hidden @asis
address@hidden @code{gnome} (Vorgabe: @code{gnome})
-Welches GNOME-Paket benutzt werden soll.
address@hidden table
address@hidden deftp
-
address@hidden {Scheme-Variable} xfce-desktop-service-type
-Der Typ des Dienstes, um die @uref{Xfce, https://xfce.org/}-Arbeitsumgebung
-auszuführen. Sein Wert ist ein @code{xfce-desktop-configuration}-Objekt
-(siehe unten).
-
-This service that adds the @code{xfce} package to the system profile, and
-extends polkit with the ability for @code{thunar} to manipulate the file
-system as root from within a user session, after the user has authenticated
-with the administrator's password.
address@hidden defvr
-
address@hidden {Datentyp} xfce-desktop-configuration
-Verbundstyp für Einstellungen zur Xfce-Arbeitsumgebung.
-
address@hidden @asis
address@hidden @code{xfce} (Vorgabe: @code{xfce})
-Das Xfce-Paket, was benutzt werden soll.
address@hidden table
address@hidden deftp
-
address@hidden {Scheme-Variable} mate-desktop-service-type
-Dies ist der Typ des Dienstes, um die @uref{https://mate-desktop.org/,
-MATE-Arbeitsumgebung} auszuführen. Sein Wert ist ein
address@hidden (siehe unten).
-
-This service adds the @code{mate} package to the system profile, and extends
-polkit with the actions from @code{mate-settings-daemon}.
address@hidden deffn
-
address@hidden {Datentyp} mate-desktop-configuration
-Verbundstyp für die Einstellungen der MATE-Arbeitsumgebung.
-
address@hidden @asis
address@hidden @code{mate} (Vorgabe: @code{mate})
-Das MATE-Paket, was benutzt werden soll.
address@hidden table
address@hidden deftp
-
address@hidden {Scheme-Variable} enlightenment-desktop-service-type
-Return a service that adds the @code{enlightenment} package to the system
-profile, and extends dbus with actions from @code{efl}.
address@hidden deffn
-
address@hidden {Data Type} enlightenment-desktop-service-configuration
address@hidden @asis
address@hidden @code{enlightenment} (Vorgabe: @code{enlightenment})
-Das Enlightenment-Paket, was benutzt werden soll.
address@hidden table
address@hidden deftp
-
-Because the GNOME, Xfce and MATE desktop services pull in so many packages,
-the default @code{%desktop-services} variable doesn't include any of them by
-default.  To add GNOME, Xfce or MATE, just @code{cons} them onto
address@hidden in the @code{services} field of your
address@hidden:
-
address@hidden
-(use-modules (gnu))
-(use-service-modules desktop)
-(operating-system
-  ...
-  ;; cons* adds items to the list given as its last argument.
-  (services (cons* (service gnome-desktop-service-type)
-                   (service xfce-desktop-service)
-                   %desktop-services))
-  ...)
address@hidden example
-
-These desktop environments will then be available as options in the
-graphical login window.
-
-The actual service definitions included in @code{%desktop-services} and
-provided by @code{(gnu services dbus)} and @code{(gnu services desktop)} are
-described below.
-
address@hidden {Scheme Procedure} dbus-service [#:dbus @var{dbus}] [#:services 
'()]
-Return a service that runs the ``system bus'', using @var{dbus}, with
-support for @var{services}.
-
address@hidden://dbus.freedesktop.org/, D-Bus} is an inter-process communication
-facility.  Its system bus is used to allow system services to communicate
-and to be notified of system-wide events.
-
address@hidden must be a list of packages that provide an
address@hidden/dbus-1/system.d} directory containing additional D-Bus
-configuration and policy files.  For example, to allow avahi-daemon to use
-the system bus, @var{services} must be equal to @code{(list avahi)}.
address@hidden deffn
-
address@hidden {Scheme Procedure} elogind-service [#:config @var{config}]
-Return a service that runs the @code{elogind} login and seat management
-daemon.  @uref{https://github.com/elogind/elogind, Elogind} exposes a D-Bus
-interface that can be used to know which users are logged in, know what kind
-of sessions they have open, suspend the system, inhibit system suspend,
-reboot the system, and other tasks.
-
-Elogind handles most system-level power events for a computer, for example
-suspending the system when a lid is closed, or shutting it down when the
-power button is pressed.
-
-The @var{config} keyword argument specifies the configuration for elogind,
-and should be the result of an @code{(elogind-configuration (@var{parameter}
address@hidden)...)} invocation.  Available parameters and their default values
-are:
-
address@hidden @code
address@hidden kill-user-processes?
address@hidden
address@hidden kill-only-users
address@hidden()}
address@hidden kill-exclude-users
address@hidden("root")}
address@hidden inhibit-delay-max-seconds
address@hidden
address@hidden handle-power-key
address@hidden
address@hidden handle-suspend-key
address@hidden
address@hidden handle-hibernate-key
address@hidden
address@hidden handle-lid-switch
address@hidden
address@hidden handle-lid-switch-docked
address@hidden
address@hidden power-key-ignore-inhibited?
address@hidden
address@hidden suspend-key-ignore-inhibited?
address@hidden
address@hidden hibernate-key-ignore-inhibited?
address@hidden
address@hidden lid-switch-ignore-inhibited?
address@hidden
address@hidden holdoff-timeout-seconds
address@hidden
address@hidden idle-action
address@hidden
address@hidden idle-action-seconds
address@hidden(* 30 60)}
address@hidden runtime-directory-size-percent
address@hidden
address@hidden runtime-directory-size
address@hidden
address@hidden remove-ipc?
address@hidden
address@hidden suspend-state
address@hidden("mem" "standby" "freeze")}
address@hidden suspend-mode
address@hidden()}
address@hidden hibernate-state
address@hidden("disk")}
address@hidden hibernate-mode
address@hidden("platform" "shutdown")}
address@hidden hybrid-sleep-state
address@hidden("disk")}
address@hidden hybrid-sleep-mode
address@hidden("suspend" "platform" "shutdown")}
address@hidden table
address@hidden deffn
-
address@hidden {Scheme Procedure} accountsservice-service @
-       [#:accountsservice @var{accountsservice}] Return a service that runs
-AccountsService, a system service that can list available accounts, change
-their passwords, and so on.  AccountsService integrates with PolicyKit to
-enable unprivileged users to acquire the capability to modify their system
-configuration.
address@hidden://www.freedesktop.org/wiki/Software/AccountsService/, the
-accountsservice web site} for more information.
-
-The @var{accountsservice} keyword argument is the @code{accountsservice}
-package to expose as a service.
address@hidden deffn
-
address@hidden {Scheme Procedure} polkit-service @
-                         [#:polkit @var{polkit}] Return a service that runs the
address@hidden://www.freedesktop.org/wiki/Software/polkit/, Polkit privilege
-management service}, which allows system administrators to grant access to
-privileged operations in a structured way.  By querying the Polkit service,
-a privileged system component can know when it should grant additional
-capabilities to ordinary users.  For example, an ordinary user can be
-granted the capability to suspend the system if the user is logged in
-locally.
address@hidden deffn
-
address@hidden {Scheme-Variable} upower-service-type
-Service that runs @uref{http://upower.freedesktop.org/, @command{upowerd}},
-a system-wide monitor for power consumption and battery levels, with the
-given configuration settings.
-
-It implements the @code{org.freedesktop.UPower} D-Bus interface, and is
-notably used by GNOME.
address@hidden defvr
-
address@hidden {Datentyp} upower-configuration
-Repräsentiert die Konfiguration von UPower.
-
address@hidden @asis
-
address@hidden @code{upower} (Vorgabe: @var{upower})
-Package to use for @code{upower}.
-
address@hidden @code{watts-up-pro?} (Vorgabe: @code{#f})
-Enable the Watts Up Pro device.
-
address@hidden @code{poll-batteries?} (Vorgabe: @code{#t})
-Enable polling the kernel for battery level changes.
-
address@hidden @code{ignore-lid?} (Vorgabe: @code{#f})
-Ignore the lid state, this can be useful if it's incorrect on a device.
-
address@hidden @code{use-percentage-for-policy?} (Vorgabe: @code{#f})
-Whether battery percentage based policy should be used.  The default is to
-use the time left, change to @code{#t} to use the percentage.
-
address@hidden @code{percentage-low} (Vorgabe: @code{10})
-When @code{use-percentage-for-policy?} is @code{#t}, this sets the
-percentage at which the battery is considered low.
-
address@hidden @code{percentage-critical} (Vorgabe: @code{3})
-When @code{use-percentage-for-policy?} is @code{#t}, this sets the
-percentage at which the battery is considered critical.
-
address@hidden @code{percentage-action} (Vorgabe: @code{2})
-When @code{use-percentage-for-policy?} is @code{#t}, this sets the
-percentage at which action will be taken.
-
address@hidden @code{time-low} (Vorgabe: @code{1200})
-When @code{use-time-for-policy?} is @code{#f}, this sets the time remaining
-in seconds at which the battery is considered low.
-
address@hidden @code{time-critical} (Vorgabe: @code{300})
-When @code{use-time-for-policy?} is @code{#f}, this sets the time remaining
-in seconds at which the battery is considered critical.
-
address@hidden @code{time-action} (Vorgabe: @code{120})
-When @code{use-time-for-policy?} is @code{#f}, this sets the time remaining
-in seconds at which action will be taken.
-
address@hidden @code{critical-power-action} (Vorgabe: @code{'hybrid-sleep})
-The action taken when @code{percentage-action} or @code{time-action} is
-reached (depending on the configuration of
address@hidden).
-
-Possible values are:
-
address@hidden @bullet
address@hidden
address@hidden'power-off}
-
address@hidden
address@hidden'hibernate}
-
address@hidden
address@hidden'hybrid-sleep}.
address@hidden itemize
-
address@hidden table
address@hidden deftp
-
address@hidden {Scheme Procedure} udisks-service [#:udisks @var{udisks}]
-Return a service for @uref{http://udisks.freedesktop.org/docs/latest/,
-UDisks}, a @dfn{disk management} daemon that provides user interfaces with
-notifications and ways to mount/unmount disks.  Programs that talk to UDisks
-include the @command{udisksctl} command, part of UDisks, and GNOME Disks.
address@hidden deffn
-
address@hidden {Scheme Procedure} colord-service [#:colord @var{colord}]
-Return a service that runs @command{colord}, a system service with a D-Bus
-interface to manage the color profiles of input and output devices such as
-screens and scanners.  It is notably used by the GNOME Color Manager
-graphical tool.  See @uref{http://www.freedesktop.org/software/colord/, the
-colord web site} for more information.
address@hidden deffn
-
address@hidden {Scheme Procedure} geoclue-application name [#:allowed? #t] 
[#:system? #f] [#:users '()]
-Return a configuration allowing an application to access GeoClue location
-data.  @var{name} is the Desktop ID of the application, without the
address@hidden part.  If @var{allowed?} is true, the application will have
-access to location information by default.  The boolean @var{system?} value
-indicates whether an application is a system component or not.  Finally
address@hidden is a list of UIDs of all users for which this application is
-allowed location info access.  An empty users list means that all users are
-allowed.
address@hidden deffn
-
address@hidden {Scheme Variable} %standard-geoclue-applications
-The standard list of well-known GeoClue application configurations, granting
-authority to the GNOME date-and-time utility to ask for the current location
-in order to set the time zone, and allowing the IceCat and Epiphany web
-browsers to request location information.  IceCat and Epiphany both query
-the user before allowing a web page to know the user's location.
address@hidden defvr
-
address@hidden {Scheme Procedure} geoclue-service [#:colord @var{colord}] @
-                         [#:whitelist '()] @ [#:wifi-geolocation-url
-"https://location.services.mozilla.com/v1/geolocate?key=geoclue";] @
-[#:submit-data? #f] [#:wifi-submission-url
-"https://location.services.mozilla.com/v1/submit?key=geoclue";] @
-[#:submission-nick "geoclue"] @ [#:applications
-%standard-geoclue-applications] Return a service that runs the GeoClue
-location service.  This service provides a D-Bus interface to allow
-applications to request access to a user's physical location, and optionally
-to add information to online location databases.  See
address@hidden://wiki.freedesktop.org/www/Software/GeoClue/, the GeoClue web
-site} for more information.
address@hidden deffn
-
address@hidden {Scheme Procedure} bluetooth-service [#:bluez @var{bluez}] @
-       address@hidden:auto-enable? #f}] Return a service that runs the 
@command{bluetoothd}
-daemon, which manages all the Bluetooth devices and provides a number of
-D-Bus interfaces.  When AUTO-ENABLE? is true, the bluetooth controller is
-powered automatically at boot, which can be useful when using a bluetooth
-keyboard or mouse.
-
-Users need to be in the @code{lp} group to access the D-Bus service.
address@hidden deffn
-
address@hidden Tondienste
address@hidden Tondienste
-
address@hidden sound support
address@hidden ALSA
address@hidden PulseAudio, sound support
-
-The @code{(gnu services sound)} module provides a service to configure the
-Advanced Linux Sound Architecture (ALSA) system, which makes PulseAudio the
-preferred ALSA output driver.
-
address@hidden {Scheme Variable} alsa-service-type
-This is the type for the @uref{https://alsa-project.org/, Advanced Linux
-Sound Architecture} (ALSA) system, which generates the
address@hidden/etc/asound.conf} configuration file.  The value for this type is 
a
address@hidden record as in this example:
-
address@hidden
-(service alsa-service-type)
address@hidden example
-
-See below for details about @code{alsa-configuration}.
address@hidden deffn
-
address@hidden {Datentyp} alsa-configuration
-Repräsentiert die Konfiguration für den Dienst @code{alsa-service}.
-
address@hidden @asis
address@hidden @code{alsa-plugins} (Vorgabe: @var{alsa-plugins})
address@hidden, was benutzt werden soll.
-
address@hidden @code{pulseaudio?} (Vorgabe: @var{#t})
-Whether ALSA applications should transparently be made to use the
address@hidden://www.pulseaudio.org/, PulseAudio} sound server.
-
-Using PulseAudio allows you to run several sound-producing applications at
-the same time and to individual control them @i{via} @command{pavucontrol},
-among other things.
-
address@hidden @code{extra-options} (Vorgabe: @var{""})
-String to append to the @file{/etc/asound.conf} file.
-
address@hidden table
address@hidden deftp
-
-Individual users who want to override the system configuration of ALSA can
-do it with the @file{~/.asoundrc} file:
-
address@hidden
-# In guix, we have to specify the absolute path for plugins.
-pcm_type.jack @{
-  lib "/home/alice/.guix-profile/lib/alsa-lib/libasound_module_pcm_jack.so"
address@hidden
-
-# Routing ALSA to jack:
-# <http://jackaudio.org/faq/routing_alsa.html>.
-pcm.rawjack @{
-  type jack
-  playback_ports @{
-    0 system:playback_1
-    1 system:playback_2
-  @}
-
-  capture_ports @{
-    0 system:capture_1
-    1 system:capture_2
-  @}
address@hidden
-
-pcm.!default @{
-  type plug
-  slave @{
-    pcm "rawjack"
-  @}
address@hidden
address@hidden example
-
-See @uref{https://www.alsa-project.org/main/index.php/Asoundrc} for the
-details.
-
-
address@hidden Datenbankdienste
address@hidden Datenbankdienste
-
address@hidden Datenbank
address@hidden SQL
-The @code{(gnu services databases)} module provides the following services.
-
address@hidden {Scheme Procedure} postgresql-service [#:postgresql postgresql] @
-       [#:config-file] [#:data-directory ``/var/lib/postgresql/data''] @ 
[#:port
-5432] [#:locale ``en_US.utf8''] [#:extension-packages '()] Return a service
-that runs @var{postgresql}, the PostgreSQL database server.
-
-The PostgreSQL daemon loads its runtime configuration from
address@hidden, creates a database cluster with @var{locale} as the
-default locale, stored in @var{data-directory}.  It then listens on
address@hidden
-
address@hidden postgresql extension-packages
-Additional extensions are loaded from packages listed in
address@hidden  Extensions are available at runtime.  For
-instance, to create a geographic database using the @code{postgis}
-extension, a user can configure the postgresql-service as in this example:
-
address@hidden postgis
address@hidden
-(use-package-modules databases geo)
-
-(operating-system
-  …
-  ;; postgresql wird benötigt, um »psql« auszuführen, aber postgis ist
-  ;; für den Betrieb nicht unbedingt notwendig.
-  (packages (cons* postgresql %base-packages))
-  (services
-    (cons*
-      (postgresql-service #:extension-packages (list postgis))
-      %base-services)))
address@hidden example
-
-Then the extension becomes visible and you can initialise an empty
-geographic database in this way:
-
address@hidden
-psql -U postgres
-> create database postgistest;
-> \connect postgistest;
-> create extension postgis;
-> create extension postgis_topology;
address@hidden example
-
-There is no need to add this field for contrib extensions such as hstore or
-dblink as they are already loadable by postgresql.  This field is only
-required to add extensions provided by other packages.
address@hidden deffn
-
address@hidden {Scheme Procedure} mysql-service [#:config (mysql-configuration)]
-Return a service that runs @command{mysqld}, the MySQL or MariaDB database
-server.
-
-The optional @var{config} argument specifies the configuration for
address@hidden, which should be a @code{<mysql-configuration>} object.
address@hidden deffn
-
address@hidden {Data Type} mysql-configuration
-Data type representing the configuration of @var{mysql-service}.
-
address@hidden @asis
address@hidden @code{mysql} (default: @var{mariadb})
-Package object of the MySQL database server, can be either @var{mariadb} or
address@hidden
-
-For MySQL, a temporary root password will be displayed at activation time.
-For MariaDB, the root password is empty.
-
address@hidden @code{port} (default: @code{3306})
-TCP port on which the database server listens for incoming connections.
address@hidden table
address@hidden deftp
-
address@hidden {Scheme Variable} memcached-service-type
-This is the service type for the @uref{https://memcached.org/, Memcached}
-service, which provides a distributed in memory cache.  The value for the
-service type is a @code{memcached-configuration} object.
address@hidden defvr
-
address@hidden
-(service memcached-service-type)
address@hidden example
-
address@hidden {Data Type} memcached-configuration
-Data type representing the configuration of memcached.
-
address@hidden @asis
address@hidden @code{memcached} (default: @code{memcached})
-The Memcached package to use.
-
address@hidden @code{interfaces} (default: @code{'("0.0.0.0")})
-Network interfaces on which to listen.
-
address@hidden @code{tcp-port} (default: @code{11211})
-Port on which to accept connections on,
-
address@hidden @code{udp-port} (default: @code{11211})
-Port on which to accept UDP connections on, a value of 0 will disable
-listening on a UDP socket.
-
address@hidden @code{additional-options} (default: @code{'()})
-Additional command line options to pass to @code{memcached}.
address@hidden table
address@hidden deftp
-
address@hidden {Scheme Variable} mongodb-service-type
-This is the service type for @uref{https://www.mongodb.com/, MongoDB}.  The
-value for the service type is a @code{mongodb-configuration} object.
address@hidden defvr
-
address@hidden
-(service mongodb-service-type)
address@hidden example
-
address@hidden {Data Type} mongodb-configuration
-Data type representing the configuration of mongodb.
-
address@hidden @asis
address@hidden @code{mongodb} (default: @code{mongodb})
-The MongoDB package to use.
-
address@hidden @code{config-file} (default: 
@code{%default-mongodb-configuration-file})
-The configuration file for MongoDB.
-
address@hidden @code{data-directory} (default: @code{"/var/lib/mongodb"})
-This value is used to create the directory, so that it exists and is owned
-by the mongodb user.  It should match the data-directory which MongoDB is
-configured to use through the configuration file.
address@hidden table
address@hidden deftp
-
address@hidden {Scheme Variable} redis-service-type
-This is the service type for the @uref{https://redis.io/, Redis} key/value
-store, whose value is a @code{redis-configuration} object.
address@hidden defvr
-
address@hidden {Data Type} redis-configuration
-Data type representing the configuration of redis.
-
address@hidden @asis
address@hidden @code{redis} (default: @code{redis})
-The Redis package to use.
-
address@hidden @code{bind} (default: @code{"127.0.0.1"})
-Network interface on which to listen.
-
address@hidden @code{port} (default: @code{6379})
-Port on which to accept connections on, a value of 0 will disable listening
-on a TCP socket.
-
address@hidden @code{working-directory} (default: @code{"/var/lib/redis"})
-Directory in which to store the database and related files.
address@hidden table
address@hidden deftp
-
address@hidden Mail-Dienste
address@hidden Mail-Dienste
-
address@hidden mail
address@hidden email
-The @code{(gnu services mail)} module provides Guix service definitions for
-email services: IMAP, POP3, and LMTP servers, as well as mail transport
-agents (MTAs).  Lots of acronyms! These services are detailed in the
-subsections below.
-
address@hidden Dovecot Service
-
address@hidden {Scheme Procedure} dovecot-service [#:config 
(dovecot-configuration)]
-Return a service that runs the Dovecot IMAP/POP3/LMTP mail server.
address@hidden deffn
-
-By default, Dovecot does not need much configuration; the default
-configuration object created by @code{(dovecot-configuration)} will suffice
-if your mail is delivered to @code{~/Maildir}.  A self-signed certificate
-will be generated for TLS-protected connections, though Dovecot will also
-listen on cleartext ports by default.  There are a number of options,
-though, which mail administrators might need to change, and as is the case
-with other services, Guix allows the system administrator to specify these
-parameters via a uniform Scheme interface.
-
-For example, to specify that mail is located at @code{maildir~/.mail}, one
-would instantiate the Dovecot service like this:
-
address@hidden
-(dovecot-service #:config
-                 (dovecot-configuration
-                  (mail-location "maildir:~/.mail")))
address@hidden example
-
-The available configuration parameters follow.  Each parameter definition is
-preceded by its type; for example, @samp{string-list foo} indicates that the
address@hidden parameter should be specified as a list of strings.  There is
-also a way to specify the configuration as a string, if you have an old
address@hidden file that you want to port over from some other system;
-see the end for more details.
-
address@hidden The following documentation was initially generated by
address@hidden (generate-documentation) in (gnu services mail).  Manually 
maintained
address@hidden documentation is better, so we shouldn't hesitate to edit below 
as
address@hidden needed.  However if the change you want to make to this 
documentation
address@hidden can be done in an automated way, it's probably easier to change
address@hidden (generate-documentation) than to make it below and have to deal 
with
address@hidden the churn as dovecot updates.
-
-Available @code{dovecot-configuration} fields are:
-
address@hidden address@hidden parameter} package dovecot
-The dovecot package.
address@hidden deftypevr
-
address@hidden address@hidden parameter} comma-separated-string-list listen
-A list of IPs or hosts where to listen for connections.  @samp{*} listens on
-all IPv4 interfaces, @samp{::} listens on all IPv6 interfaces.  If you want
-to specify non-default ports or anything more complex, customize the address
-and port fields of the @samp{inet-listener} of the specific services you are
-interested in.
address@hidden deftypevr
-
address@hidden address@hidden parameter} protocol-configuration-list protocols
-List of protocols we want to serve.  Available protocols include
address@hidden, @samp{pop3}, and @samp{lmtp}.
-
-Available @code{protocol-configuration} fields are:
-
address@hidden address@hidden parameter} string name
-The name of the protocol.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string auth-socket-path
-UNIX socket path to the master authentication server to find users.  This is
-used by imap (for shared users) and lda.  It defaults to
address@hidden"/var/run/dovecot/auth-userdb"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} space-separated-string-list 
mail-plugins
-Space separated list of plugins to load.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer 
mail-max-userip-connections
-Maximum number of IMAP connections allowed for a user from each IP address.
-NOTE: The username is compared case-sensitively.  Defaults to @samp{10}.
address@hidden deftypevr
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} service-configuration-list services
-List of services to enable.  Available services include @samp{imap},
address@hidden, @samp{pop3}, @samp{pop3-login}, @samp{auth}, and
address@hidden
-
-Available @code{service-configuration} fields are:
-
address@hidden address@hidden parameter} string kind
-The service kind.  Valid values include @code{director}, @code{imap-login},
address@hidden, @code{lmtp}, @code{imap}, @code{pop3}, @code{auth},
address@hidden, @code{dict}, @code{tcpwrap}, @code{quota-warning}, or
-anything else.
address@hidden deftypevr
-
address@hidden address@hidden parameter} listener-configuration-list listeners
-Listeners for the service.  A listener is either a
address@hidden, a @code{fifo-listener-configuration}, or
-an @code{inet-listener-configuration}.  Defaults to @samp{()}.
-
-Available @code{unix-listener-configuration} fields are:
-
address@hidden address@hidden parameter} string path
-Path to the file, relative to @code{base-dir} field.  This is also used as
-the section name.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string mode
-The access mode for the socket.  Defaults to @samp{"0600"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string user
-The user to own the socket.  Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string group
-The group to own the socket.  Defaults to @samp{""}.
address@hidden deftypevr
-
-
-Available @code{fifo-listener-configuration} fields are:
-
address@hidden address@hidden parameter} string path
-Path to the file, relative to @code{base-dir} field.  This is also used as
-the section name.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string mode
-The access mode for the socket.  Defaults to @samp{"0600"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string user
-The user to own the socket.  Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string group
-The group to own the socket.  Defaults to @samp{""}.
address@hidden deftypevr
-
-
-Available @code{inet-listener-configuration} fields are:
-
address@hidden address@hidden parameter} string protocol
-The protocol to listen for.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string address
-The address on which to listen, or empty for all addresses.  Defaults to
address@hidden""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer port
-The port on which to listen.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean ssl?
-Whether to use SSL for this service; @samp{yes}, @samp{no}, or
address@hidden  Defaults to @samp{#t}.
address@hidden deftypevr
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer client-limit
-Maximum number of simultaneous client connections per process.  Once this
-number of connections is received, the next incoming connection will prompt
-Dovecot to spawn another process.  If set to 0, @code{default-client-limit}
-is used instead.
-
-Defaults to @samp{0}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer service-count
-Number of connections to handle before starting a new process.  Typically
-the only useful values are 0 (unlimited) or 1.  1 is more secure, but 0 is
-faster.  <doc/wiki/LoginProcess.txt>.  Defaults to @samp{1}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer process-limit
-Maximum number of processes that can exist for this service.  If set to 0,
address@hidden is used instead.
-
-Defaults to @samp{0}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer process-min-avail
-Number of processes to always keep waiting for more connections.  Defaults
-to @samp{0}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer vsz-limit
-If you set @samp{service-count 0}, you probably need to grow this.  Defaults
-to @samp{256000000}.
address@hidden deftypevr
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} dict-configuration dict
-Dict configuration, as created by the @code{dict-configuration} constructor.
-
-Available @code{dict-configuration} fields are:
-
address@hidden address@hidden parameter} free-form-fields entries
-A list of key-value pairs that this dict should hold.  Defaults to
address@hidden()}.
address@hidden deftypevr
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} passdb-configuration-list passdbs
-A list of passdb configurations, each one created by the
address@hidden constructor.
-
-Available @code{passdb-configuration} fields are:
-
address@hidden address@hidden parameter} string driver
-The driver that the passdb should use.  Valid values include @samp{pam},
address@hidden, @samp{shadow}, @samp{bsdauth}, and @samp{static}.  Defaults
-to @samp{"pam"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} space-separated-string-list args
-Space separated list of arguments to the passdb driver.  Defaults to
address@hidden""}.
address@hidden deftypevr
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} userdb-configuration-list userdbs
-List of userdb configurations, each one created by the
address@hidden constructor.
-
-Available @code{userdb-configuration} fields are:
-
address@hidden address@hidden parameter} string driver
-The driver that the userdb should use.  Valid values include @samp{passwd}
-and @samp{static}.  Defaults to @samp{"passwd"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} space-separated-string-list args
-Space separated list of arguments to the userdb driver.  Defaults to
address@hidden""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} free-form-args override-fields
-Override fields from passwd.  Defaults to @samp{()}.
address@hidden deftypevr
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} plugin-configuration 
plugin-configuration
-Plug-in configuration, created by the @code{plugin-configuration}
-constructor.
address@hidden deftypevr
-
address@hidden address@hidden parameter} list-of-namespace-configuration 
namespaces
-List of namespaces.  Each item in the list is created by the
address@hidden constructor.
-
-Available @code{namespace-configuration} fields are:
-
address@hidden address@hidden parameter} string name
-Name for this namespace.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string type
-Namespace type: @samp{private}, @samp{shared} or @samp{public}.  Defaults to
address@hidden"private"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string separator
-Hierarchy separator to use. You should use the same separator for all
-namespaces or some clients get confused.  @samp{/} is usually a good one.
-The default however depends on the underlying mail storage format.  Defaults
-to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string prefix
-Prefix required to access this namespace.  This needs to be different for
-all namespaces. For example @samp{Public/}.  Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string location
-Physical location of the mailbox. This is in the same format as
-mail_location, which is also the default for it.  Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean inbox?
-There can be only one INBOX, and this setting defines which namespace has
-it.  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean hidden?
-If namespace is hidden, it's not advertised to clients via NAMESPACE
-extension. You'll most likely also want to set @samp{list? #f}.  This is
-mostly useful when converting from another server with different namespaces
-which you want to deprecate but still keep working.  For example you can
-create hidden namespaces with prefixes @samp{~/mail/}, @samp{~%u/mail/} and
address@hidden/}.  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean list?
-Show the mailboxes under this namespace with the LIST command. This makes
-the namespace visible for clients that do not support the NAMESPACE
-extension.  The special @code{children} value lists child mailboxes, but
-hides the namespace prefix.  Defaults to @samp{#t}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean subscriptions?
-Namespace handles its own subscriptions.  If set to @code{#f}, the parent
-namespace handles them.  The empty prefix should always have this as
address@hidden).  Defaults to @samp{#t}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} mailbox-configuration-list mailboxes
-List of predefined mailboxes in this namespace.  Defaults to @samp{()}.
-
-Available @code{mailbox-configuration} fields are:
-
address@hidden address@hidden parameter} string name
-Name for this mailbox.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string auto
address@hidden will automatically create this mailbox.  @samp{subscribe} will
-both create and subscribe to the mailbox.  Defaults to @samp{"no"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} space-separated-string-list special-use
-List of IMAP @code{SPECIAL-USE} attributes as specified by RFC 6154.  Valid
-values are @code{\All}, @code{\Archive}, @code{\Drafts}, @code{\Flagged},
address@hidden, @code{\Sent}, and @code{\Trash}.  Defaults to @samp{()}.
address@hidden deftypevr
-
address@hidden deftypevr
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} file-name base-dir
-Base directory where to store runtime data.  Defaults to
address@hidden"/var/run/dovecot/"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string login-greeting
-Greeting message for clients.  Defaults to @samp{"Dovecot ready."}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} space-separated-string-list 
login-trusted-networks
-List of trusted network ranges.  Connections from these IPs are allowed to
-override their IP addresses and ports (for logging and for authentication
-checks).  @samp{disable-plaintext-auth} is also ignored for these networks.
-Typically you would specify your IMAP proxy servers here.  Defaults to
address@hidden()}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} space-separated-string-list 
login-access-sockets
-List of login access check sockets (e.g.@: tcpwrap).  Defaults to @samp{()}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean verbose-proctitle?
-Show more verbose process titles (in ps).  Currently shows user name and IP
-address.  Useful for seeing who is actually using the IMAP processes (e.g.@:
-shared mailboxes or if the same uid is used for multiple accounts).
-Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean shutdown-clients?
-Should all processes be killed when Dovecot master process shuts down.
-Setting this to @code{#f} means that Dovecot can be upgraded without forcing
-existing client connections to close (although that could also be a problem
-if the upgrade is e.g.@: due to a security fix).  Defaults to @samp{#t}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer 
doveadm-worker-count
-If non-zero, run mail commands via this many connections to doveadm server,
-instead of running them directly in the same process.  Defaults to @samp{0}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string doveadm-socket-path
-UNIX socket or host:port used for connecting to doveadm server.  Defaults to
address@hidden"doveadm-server"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} space-separated-string-list 
import-environment
-List of environment variables that are preserved on Dovecot startup and
-passed down to all of its child processes.  You can also give key=value
-pairs to always set specific settings.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean disable-plaintext-auth?
-Disable LOGIN command and all other plaintext authentications unless SSL/TLS
-is used (LOGINDISABLED capability).  Note that if the remote IP matches the
-local IP (i.e.@: you're connecting from the same computer), the connection
-is considered secure and plaintext authentication is allowed.  See also
-ssl=required setting.  Defaults to @samp{#t}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer auth-cache-size
-Authentication cache size (e.g.@: @samp{#e10e6}).  0 means it's disabled.
-Note that bsdauth, PAM and vpopmail require @samp{cache-key} to be set for
-caching to be used.  Defaults to @samp{0}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string auth-cache-ttl
-Time to live for cached data.  After TTL expires the cached record is no
-longer used, *except* if the main database lookup returns internal failure.
-We also try to handle password changes automatically: If user's previous
-authentication was successful, but this one wasn't, the cache isn't used.
-For now this works only with plaintext authentication.  Defaults to @samp{"1
-hour"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string auth-cache-negative-ttl
-TTL for negative hits (user not found, password mismatch).  0 disables
-caching them completely.  Defaults to @samp{"1 hour"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} space-separated-string-list auth-realms
-List of realms for SASL authentication mechanisms that need them.  You can
-leave it empty if you don't want to support multiple realms.  Many clients
-simply use the first one listed here, so keep the default realm first.
-Defaults to @samp{()}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string auth-default-realm
-Default realm/domain to use if none was specified.  This is used for both
-SASL realms and appending @@domain to username in plaintext logins.
-Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string auth-username-chars
-List of allowed characters in username.  If the user-given username contains
-a character not listed in here, the login automatically fails.  This is just
-an extra check to make sure user can't exploit any potential quote escaping
-vulnerabilities with SQL/LDAP databases.  If you want to allow all
-characters, set this value to empty.  Defaults to
address@hidden"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@@"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string auth-username-translation
-Username character translations before it's looked up from databases.  The
-value contains series of from -> to characters.  For example @samp{#@@/@@}
-means that @samp{#} and @samp{/} characters are translated to @samp{@@}.
-Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string auth-username-format
-Username formatting before it's looked up from databases.  You can use the
-standard variables here, e.g.@: %Lu would lowercase the username, %n would
-drop away the domain if it was given, or @samp{%n-AT-%d} would change the
address@hidden@@} into @samp{-AT-}.  This translation is done after
address@hidden changes.  Defaults to @samp{"%Lu"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string auth-master-user-separator
-If you want to allow master users to log in by specifying the master
-username within the normal username string (i.e.@: not using SASL
-mechanism's support for it), you can specify the separator character here.
-The format is then <username><separator><master username>.  UW-IMAP uses
address@hidden as the separator, so that could be a good choice.  Defaults to
address@hidden""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string auth-anonymous-username
-Username to use for users logging in with ANONYMOUS SASL mechanism.
-Defaults to @samp{"anonymous"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer 
auth-worker-max-count
-Maximum number of dovecot-auth worker processes.  They're used to execute
-blocking passdb and userdb queries (e.g.@: MySQL and PAM).  They're
-automatically created and destroyed as needed.  Defaults to @samp{30}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string auth-gssapi-hostname
-Host name to use in GSSAPI principal names.  The default is to use the name
-returned by gethostname().  Use @samp{$ALL} (with quotes) to allow all
-keytab entries.  Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string auth-krb5-keytab
-Kerberos keytab to use for the GSSAPI mechanism.  Will use the system
-default (usually @file{/etc/krb5.keytab}) if not specified.  You may need to
-change the auth service to run as root to be able to read this file.
-Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean auth-use-winbind?
-Do NTLM and GSS-SPNEGO authentication using Samba's winbind daemon and
address@hidden helper.  <doc/wiki/Authentication/Mechanisms/Winbind.txt>.
-Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} file-name auth-winbind-helper-path
-Path for Samba's @samp{ntlm-auth} helper binary.  Defaults to
address@hidden"/usr/bin/ntlm_auth"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string auth-failure-delay
-Time to delay before replying to failed authentications.  Defaults to
address@hidden"2 secs"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean auth-ssl-require-client-cert?
-Require a valid SSL client certificate or the authentication fails.
-Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean auth-ssl-username-from-cert?
-Take the username from client's SSL certificate, using
address@hidden()} which returns the subject's DN's
-CommonName.  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} space-separated-string-list 
auth-mechanisms
-List of wanted authentication mechanisms.  Supported mechanisms are:
address@hidden, @samp{login}, @samp{digest-md5}, @samp{cram-md5}, @samp{ntlm},
address@hidden, @samp{apop}, @samp{anonymous}, @samp{gssapi}, @samp{otp},
address@hidden, and @samp{gss-spnego}.  NOTE: See also
address@hidden setting.
address@hidden deftypevr
-
address@hidden address@hidden parameter} space-separated-string-list 
director-servers
-List of IPs or hostnames to all director servers, including ourself.  Ports
-can be specified as ip:port.  The default port is the same as what director
-service's @samp{inet-listener} is using.  Defaults to @samp{()}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} space-separated-string-list 
director-mail-servers
-List of IPs or hostnames to all backend mail servers.  Ranges are allowed
-too, like 10.0.0.10-10.0.0.30.  Defaults to @samp{()}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string director-user-expire
-How long to redirect users to a specific server after it no longer has any
-connections.  Defaults to @samp{"15 min"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string director-username-hash
-How the username is translated before being hashed.  Useful values include
-%Ln if user can log in with or without @@domain, %Ld if mailboxes are shared
-within domain.  Defaults to @samp{"%Lu"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string log-path
-Log file to use for error messages.  @samp{syslog} logs to syslog,
address@hidden/dev/stderr} logs to stderr.  Defaults to @samp{"syslog"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string info-log-path
-Log file to use for informational messages.  Defaults to @samp{log-path}.
-Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string debug-log-path
-Log file to use for debug messages.  Defaults to @samp{info-log-path}.
-Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string syslog-facility
-Syslog facility to use if you're logging to syslog.  Usually if you don't
-want to use @samp{mail}, you'll use local0..local7.  Also other standard
-facilities are supported.  Defaults to @samp{"mail"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean auth-verbose?
-Log unsuccessful authentication attempts and the reasons why they failed.
-Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean auth-verbose-passwords?
-In case of password mismatches, log the attempted password.  Valid values
-are no, plain and sha1.  sha1 can be useful for detecting brute force
-password attempts vs.  user simply trying the same password over and over
-again.  You can also truncate the value to n chars by appending ":n" (e.g.@:
-sha1:6).  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean auth-debug?
-Even more verbose logging for debugging purposes.  Shows for example SQL
-queries.  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean auth-debug-passwords?
-In case of password mismatches, log the passwords and used scheme so the
-problem can be debugged.  Enabling this also enables @samp{auth-debug}.
-Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean mail-debug?
-Enable mail process debugging.  This can help you figure out why Dovecot
-isn't finding your mails.  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean verbose-ssl?
-Show protocol level SSL errors.  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string log-timestamp
-Prefix for each line written to log file.  % codes are in strftime(3)
-format.  Defaults to @samp{"\"%b %d %H:%M:%S \""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} space-separated-string-list 
login-log-format-elements
-List of elements we want to log.  The elements which have a non-empty
-variable value are joined together to form a comma-separated string.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string login-log-format
-Login log format.  %s contains @samp{login-log-format-elements} string, %$
-contains the data we want to log.  Defaults to @samp{"%$: %s"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string mail-log-prefix
-Log prefix for mail processes.  See doc/wiki/Variables.txt for list of
-possible variables you can use.  Defaults to
address@hidden"\"%s(%u)<address@hidden@}><address@hidden@}>: \""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string deliver-log-format
-Format to use for logging mail deliveries.  You can use variables:
address@hidden @code
address@hidden %$
-Delivery status message (e.g.@: @samp{saved to INBOX})
address@hidden %m
-Message-ID
address@hidden %s
-Subject
address@hidden %f
-From address
address@hidden %p
-Physical size
address@hidden %w
-Virtual size.
address@hidden table
-Defaults to @samp{"msgid=%m: %$"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string mail-location
-Location for users' mailboxes.  The default is empty, which means that
-Dovecot tries to find the mailboxes automatically.  This won't work if the
-user doesn't yet have any mail, so you should explicitly tell Dovecot the
-full location.
-
-If you're using mbox, giving a path to the INBOX file (e.g.@: /var/mail/%u)
-isn't enough.  You'll also need to tell Dovecot where the other mailboxes
-are kept.  This is called the "root mail directory", and it must be the
-first path given in the @samp{mail-location} setting.
-
-There are a few special variables you can use, eg.:
-
address@hidden @samp
address@hidden %u
-username
address@hidden %n
-user part in user@@domain, same as %u if there's no domain
address@hidden %d
-domain part in user@@domain, empty if there's no domain
address@hidden %h
-home director
address@hidden table
-
-See doc/wiki/Variables.txt for full list.  Some examples:
address@hidden @samp
address@hidden maildir:~/Maildir
address@hidden mbox:~/mail:INBOX=/var/mail/%u
address@hidden mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%
address@hidden table
-Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string mail-uid
-System user and group used to access mails.  If you use multiple, userdb can
-override these by returning uid or gid fields.  You can use either numbers
-or names.  <doc/wiki/UserIds.txt>.  Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string mail-gid
-
-Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string mail-privileged-group
-Group to enable temporarily for privileged operations.  Currently this is
-used only with INBOX when either its initial creation or dotlocking fails.
-Typically this is set to "mail" to give access to /var/mail.  Defaults to
address@hidden""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string mail-access-groups
-Grant access to these supplementary groups for mail processes.  Typically
-these are used to set up access to shared mailboxes.  Note that it may be
-dangerous to set these if users can create symlinks (e.g.@: if "mail" group
-is set here, ln -s /var/mail ~/mail/var could allow a user to delete others'
-mailboxes, or ln -s /secret/shared/box ~/mail/mybox would allow reading
-it).  Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean mail-full-filesystem-access?
-Allow full file system access to clients.  There's no access checks other
-than what the operating system does for the active UID/GID.  It works with
-both maildir and mboxes, allowing you to prefix mailboxes names with e.g.@:
-/path/ or ~user/.  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean mmap-disable?
-Don't use mmap() at all.  This is required if you store indexes to shared
-file systems (NFS or clustered file system).  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean dotlock-use-excl?
-Rely on @samp{O_EXCL} to work when creating dotlock files.  NFS supports
address@hidden since version 3, so this should be safe to use nowadays by
-default.  Defaults to @samp{#t}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string mail-fsync
-When to use fsync() or fdatasync() calls:
address@hidden @code
address@hidden optimized
-Whenever necessary to avoid losing important data
address@hidden always
-Useful with e.g.@: NFS when write()s are delayed
address@hidden never
-Never use it (best performance, but crashes can lose data).
address@hidden table
-Defaults to @samp{"optimized"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean mail-nfs-storage?
-Mail storage exists in NFS.  Set this to yes to make Dovecot flush NFS
-caches whenever needed.  If you're using only a single mail server this
-isn't needed.  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean mail-nfs-index?
-Mail index files also exist in NFS.  Setting this to yes requires
address@hidden #t} and @samp{fsync-disable? #f}.  Defaults to
address@hidden
address@hidden deftypevr
-
address@hidden address@hidden parameter} string lock-method
-Locking method for index files.  Alternatives are fcntl, flock and dotlock.
-Dotlocking uses some tricks which may create more disk I/O than other
-locking methods.  NFS users: flock doesn't work, remember to change
address@hidden  Defaults to @samp{"fcntl"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} file-name mail-temp-dir
-Directory in which LDA/LMTP temporarily stores incoming mails >128 kB.
-Defaults to @samp{"/tmp"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer first-valid-uid
-Valid UID range for users.  This is mostly to make sure that users can't log
-in as daemons or other system users.  Note that denying root logins is
-hardcoded to dovecot binary and can't be done even if @samp{first-valid-uid}
-is set to 0.  Defaults to @samp{500}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer last-valid-uid
-
-Defaults to @samp{0}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer first-valid-gid
-Valid GID range for users.  Users having non-valid GID as primary group ID
-aren't allowed to log in.  If user belongs to supplementary groups with
-non-valid GIDs, those groups are not set.  Defaults to @samp{1}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer last-valid-gid
-
-Defaults to @samp{0}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer 
mail-max-keyword-length
-Maximum allowed length for mail keyword name.  It's only forced when trying
-to create new keywords.  Defaults to @samp{50}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} colon-separated-file-name-list 
valid-chroot-dirs
-List of directories under which chrooting is allowed for mail processes
-(i.e.@: /var/mail will allow chrooting to /var/mail/foo/bar too).  This
-setting doesn't affect @samp{login-chroot} @samp{mail-chroot} or auth chroot
-settings.  If this setting is empty, "/./" in home dirs are ignored.
-WARNING: Never add directories here which local users can modify, that may
-lead to root exploit.  Usually this should be done only if you don't allow
-shell access for users.  <doc/wiki/Chrooting.txt>.  Defaults to @samp{()}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string mail-chroot
-Default chroot directory for mail processes.  This can be overridden for
-specific users in user database by giving /./ in user's home directory
-(e.g.@: /home/./user chroots into /home).  Note that usually there is no
-real need to do chrooting, Dovecot doesn't allow users to access files
-outside their mail directory anyway.  If your home directories are prefixed
-with the chroot directory, append "/."@: to @samp{mail-chroot}.
-<doc/wiki/Chrooting.txt>.  Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} file-name auth-socket-path
-UNIX socket path to master authentication server to find users.  This is
-used by imap (for shared users) and lda.  Defaults to
address@hidden"/var/run/dovecot/auth-userdb"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} file-name mail-plugin-dir
-Directory where to look up mail plugins.  Defaults to
address@hidden"/usr/lib/dovecot"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} space-separated-string-list 
mail-plugins
-List of plugins to load for all services.  Plugins specific to IMAP, LDA,
-etc.@: are added to this list in their own .conf files.  Defaults to
address@hidden()}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer 
mail-cache-min-mail-count
-The minimum number of mails in a mailbox before updates are done to cache
-file.  This allows optimizing Dovecot's behavior to do less disk writes at
-the cost of more disk reads.  Defaults to @samp{0}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string mailbox-idle-check-interval
-When IDLE command is running, mailbox is checked once in a while to see if
-there are any new mails or other changes.  This setting defines the minimum
-time to wait between those checks.  Dovecot can also use dnotify, inotify
-and kqueue to find out immediately when changes occur.  Defaults to
address@hidden"30 secs"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean mail-save-crlf?
-Save mails with CR+LF instead of plain LF.  This makes sending those mails
-take less CPU, especially with sendfile() syscall with Linux and FreeBSD.
-But it also creates a bit more disk I/O which may just make it slower.  Also
-note that if other software reads the mboxes/maildirs, they may handle the
-extra CRs wrong and cause problems.  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean maildir-stat-dirs?
-By default LIST command returns all entries in maildir beginning with a
-dot.  Enabling this option makes Dovecot return only entries which are
-directories.  This is done by stat()ing each entry, so it causes more disk
-I/O.  (For systems setting struct @samp{dirent->d_type} this check is free
-and it's done always regardless of this setting).  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean maildir-copy-with-hardlinks?
-When copying a message, do it with hard links whenever possible.  This makes
-the performance much better, and it's unlikely to have any side effects.
-Defaults to @samp{#t}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean maildir-very-dirty-syncs?
-Assume Dovecot is the only MUA accessing Maildir: Scan cur/ directory only
-when its mtime changes unexpectedly or when we can't find the mail
-otherwise.  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} space-separated-string-list 
mbox-read-locks
-Which locking methods to use for locking mbox.  There are four available:
-
address@hidden @code
address@hidden dotlock
-Create <mailbox>.lock file.  This is the oldest and most NFS-safe solution.
-If you want to use /var/mail/ like directory, the users will need write
-access to that directory.
address@hidden dotlock-try
-Same as dotlock, but if it fails because of permissions or because there
-isn't enough disk space, just skip it.
address@hidden fcntl
-Use this if possible.  Works with NFS too if lockd is used.
address@hidden flock
-May not exist in all systems.  Doesn't work with NFS.
address@hidden lockf
-May not exist in all systems.  Doesn't work with NFS.
address@hidden table
-
-You can use multiple locking methods; if you do the order they're declared
-in is important to avoid deadlocks if other MTAs/MUAs are using multiple
-locking methods as well.  Some operating systems don't allow using some of
-them simultaneously.
address@hidden deftypevr
-
address@hidden address@hidden parameter} space-separated-string-list 
mbox-write-locks
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string mbox-lock-timeout
-Maximum time to wait for lock (all of them) before aborting.  Defaults to
address@hidden"5 mins"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string mbox-dotlock-change-timeout
-If dotlock exists but the mailbox isn't modified in any way, override the
-lock file after this much time.  Defaults to @samp{"2 mins"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean mbox-dirty-syncs?
-When mbox changes unexpectedly we have to fully read it to find out what
-changed.  If the mbox is large this can take a long time.  Since the change
-is usually just a newly appended mail, it'd be faster to simply read the new
-mails.  If this setting is enabled, Dovecot does this but still safely
-fallbacks to re-reading the whole mbox file whenever something in mbox isn't
-how it's expected to be.  The only real downside to this setting is that if
-some other MUA changes message flags, Dovecot doesn't notice it
-immediately.  Note that a full sync is done with SELECT, EXAMINE, EXPUNGE
-and CHECK commands.  Defaults to @samp{#t}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean mbox-very-dirty-syncs?
-Like @samp{mbox-dirty-syncs}, but don't do full syncs even with SELECT,
-EXAMINE, EXPUNGE or CHECK commands.  If this is set, @samp{mbox-dirty-syncs}
-is ignored.  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean mbox-lazy-writes?
-Delay writing mbox headers until doing a full write sync (EXPUNGE and CHECK
-commands and when closing the mailbox).  This is especially useful for POP3
-where clients often delete all mails.  The downside is that our changes
-aren't immediately visible to other MUAs.  Defaults to @samp{#t}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer 
mbox-min-index-size
-If mbox size is smaller than this (e.g.@: 100k), don't write index files.
-If an index file already exists it's still read, just not updated.  Defaults
-to @samp{0}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer mdbox-rotate-size
-Maximum dbox file size until it's rotated.  Defaults to @samp{10000000}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string mdbox-rotate-interval
-Maximum dbox file age until it's rotated.  Typically in days.  Day begins
-from midnight, so 1d = today, 2d = yesterday, etc.  0 = check disabled.
-Defaults to @samp{"1d"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean mdbox-preallocate-space?
-When creating new mdbox files, immediately preallocate their size to
address@hidden  This setting currently works only in Linux with
-some file systems (ext4, xfs).  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string mail-attachment-dir
-sdbox and mdbox support saving mail attachments to external files, which
-also allows single instance storage for them.  Other backends don't support
-this for now.
-
-WARNING: This feature hasn't been tested much yet.  Use at your own risk.
-
-Directory root where to store mail attachments.  Disabled, if empty.
-Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer 
mail-attachment-min-size
-Attachments smaller than this aren't saved externally.  It's also possible
-to write a plugin to disable saving specific attachments externally.
-Defaults to @samp{128000}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string mail-attachment-fs
-File system backend to use for saving attachments:
address@hidden @code
address@hidden posix
-No SiS done by Dovecot (but this might help FS's own deduplication)
address@hidden sis posix
-SiS with immediate byte-by-byte comparison during saving
address@hidden sis-queue posix
-SiS with delayed comparison and deduplication.
address@hidden table
-Defaults to @samp{"sis posix"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string mail-attachment-hash
-Hash format to use in attachment filenames.  You can add any text and
-variables: @address@hidden@}}, @address@hidden@}}, @address@hidden@}},
address@hidden@address@hidden, @address@hidden@}}, @address@hidden@}}.  
Variables can be
-truncated, e.g.@: @address@hidden:address@hidden returns only first 80 bits.
-Defaults to @samp{"address@hidden@}"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer 
default-process-limit
-
-Defaults to @samp{100}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer 
default-client-limit
-
-Defaults to @samp{1000}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer default-vsz-limit
-Default VSZ (virtual memory size) limit for service processes.  This is
-mainly intended to catch and kill processes that leak memory before they eat
-up everything.  Defaults to @samp{256000000}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string default-login-user
-Login user is internally used by login processes.  This is the most
-untrusted user in Dovecot system.  It shouldn't have access to anything at
-all.  Defaults to @samp{"dovenull"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string default-internal-user
-Internal user is used by unprivileged processes.  It should be separate from
-login user, so that login processes can't disturb other processes.  Defaults
-to @samp{"dovecot"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string ssl?
-SSL/TLS support: yes, no, required.  <doc/wiki/SSL.txt>.  Defaults to
address@hidden"required"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string ssl-cert
-PEM encoded X.509 SSL/TLS certificate (public key).  Defaults to
address@hidden"</etc/dovecot/default.pem"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string ssl-key
-PEM encoded SSL/TLS private key.  The key is opened before dropping root
-privileges, so keep the key file unreadable by anyone but root.  Defaults to
address@hidden"</etc/dovecot/private/default.pem"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string ssl-key-password
-If key file is password protected, give the password here.  Alternatively
-give it when starting dovecot with -p parameter.  Since this file is often
-world-readable, you may want to place this setting instead to a different.
-Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string ssl-ca
-PEM encoded trusted certificate authority.  Set this only if you intend to
-use @samp{ssl-verify-client-cert? #t}.  The file should contain the CA
-certificate(s) followed by the matching CRL(s).  (e.g.@: @samp{ssl-ca
-</etc/ssl/certs/ca.pem}).  Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean ssl-require-crl?
-Require that CRL check succeeds for client certificates.  Defaults to
address@hidden
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean ssl-verify-client-cert?
-Request client to send a certificate.  If you also want to require it, set
address@hidden #t} in auth section.  Defaults to
address@hidden
address@hidden deftypevr
-
address@hidden address@hidden parameter} string ssl-cert-username-field
-Which field from certificate to use for username.  commonName and
-x500UniqueIdentifier are the usual choices.  You'll also need to set
address@hidden #t}.  Defaults to @samp{"commonName"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string ssl-min-protocol
-Minimum SSL protocol version to accept.  Defaults to @samp{"TLSv1"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string ssl-cipher-list
-SSL ciphers to use.  Defaults to
address@hidden"ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@@STRENGTH"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string ssl-crypto-device
-SSL crypto device to use, for valid values run "openssl engine".  Defaults
-to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string postmaster-address
-Address to use when sending rejection mails.  %d expands to recipient
-domain.  Defaults to @samp{"postmaster@@%d"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string hostname
-Hostname to use in various parts of sent mails (e.g.@: in Message-Id)  and
-in LMTP replies.  Default is the system's real hostname@@domain.  Defaults
-to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean quota-full-tempfail?
-If user is over quota, return with temporary failure instead of bouncing the
-mail.  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} file-name sendmail-path
-Binary to use for sending mails.  Defaults to @samp{"/usr/sbin/sendmail"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string submission-host
-If non-empty, send mails via this SMTP host[:port] instead of sendmail.
-Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string rejection-subject
-Subject: header to use for rejection mails.  You can use the same variables
-as for @samp{rejection-reason} below.  Defaults to @samp{"Rejected: %s"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string rejection-reason
-Human readable error message for rejection mails.  You can use variables:
-
address@hidden @code
address@hidden %n
-CRLF
address@hidden %r
-reason
address@hidden %s
-original subject
address@hidden %t
-recipient
address@hidden table
-Defaults to @samp{"Your message to <%t> was automatically rejected:%n%r"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string recipient-delimiter
-Delimiter character between local-part and detail in email address.
-Defaults to @samp{"+"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string lda-original-recipient-header
-Header where the original recipient address (SMTP's RCPT TO: address) is
-taken from if not available elsewhere.  With dovecot-lda -a parameter
-overrides this.  A commonly used header for this is X-Original-To.  Defaults
-to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean lda-mailbox-autocreate?
-Should saving a mail to a nonexistent mailbox automatically create it?.
-Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean lda-mailbox-autosubscribe?
-Should automatically created mailboxes be also automatically subscribed?.
-Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer 
imap-max-line-length
-Maximum IMAP command line length.  Some clients generate very long command
-lines with huge mailboxes, so you may need to raise this if you get "Too
-long argument" or "IMAP command line too large" errors often.  Defaults to
address@hidden
address@hidden deftypevr
-
address@hidden address@hidden parameter} string imap-logout-format
-IMAP logout format string:
address@hidden @code
address@hidden %i
-total number of bytes read from client
address@hidden %o
-total number of bytes sent to client.
address@hidden table
-See @file{doc/wiki/Variables.txt} for a list of all the variables you can
-use.  Defaults to @samp{"in=%i out=%o address@hidden@}
address@hidden@} address@hidden@} address@hidden@}
address@hidden@} address@hidden@}
address@hidden@}"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string imap-capability
-Override the IMAP CAPABILITY response.  If the value begins with '+', add
-the given capabilities on top of the defaults (e.g.@: +XFOO XBAR).  Defaults
-to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string imap-idle-notify-interval
-How long to wait between "OK Still here" notifications when client is
-IDLEing.  Defaults to @samp{"2 mins"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string imap-id-send
-ID field names and values to send to clients.  Using * as the value makes
-Dovecot use the default value.  The following fields have default values
-currently: name, version, os, os-version, support-url, support-email.
-Defaults to @samp{""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string imap-id-log
-ID fields sent by client to log.  * means everything.  Defaults to
address@hidden""}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} space-separated-string-list 
imap-client-workarounds
-Workarounds for various client bugs:
-
address@hidden @code
address@hidden delay-newmail
-Send EXISTS/RECENT new mail notifications only when replying to NOOP and
-CHECK commands.  Some clients ignore them otherwise, for example OSX Mail
-(<v2.1).  Outlook Express breaks more badly though, without this it may show
-user "Message no longer in server" errors.  Note that OE6 still breaks even
-with this workaround if synchronization is set to "Headers Only".
-
address@hidden tb-extra-mailbox-sep
-Thunderbird gets somehow confused with LAYOUT=fs (mbox and dbox) and adds
-extra @samp{/} suffixes to mailbox names.  This option causes Dovecot to
-ignore the extra @samp{/} instead of treating it as invalid mailbox name.
-
address@hidden tb-lsub-flags
-Show \Noselect flags for LSUB replies with LAYOUT=fs (e.g.@: mbox).  This
-makes Thunderbird realize they aren't selectable and show them greyed out,
-instead of only later giving "not selectable" popup error.
address@hidden table
-Defaults to @samp{()}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string imap-urlauth-host
-Host allowed in URLAUTH URLs sent by client.  "*" allows all.  Defaults to
address@hidden""}.
address@hidden deftypevr
-
-
-Whew! Lots of configuration options.  The nice thing about it though is that
-Guix has a complete interface to Dovecot's configuration language.  This
-allows not only a nice way to declare configurations, but also offers
-reflective capabilities as well: users can write code to inspect and
-transform configurations from within Scheme.
-
-However, it could be that you just want to get a @code{dovecot.conf} up and
-running.  In that case, you can pass an @code{opaque-dovecot-configuration}
-as the @code{#:config} parameter to @code{dovecot-service}.  As its name
-indicates, an opaque configuration does not have easy reflective
-capabilities.
-
-Available @code{opaque-dovecot-configuration} fields are:
-
address@hidden address@hidden parameter} package dovecot
-The dovecot package.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string string
-The contents of the @code{dovecot.conf}, as a string.
address@hidden deftypevr
-
-For example, if your @code{dovecot.conf} is just the empty string, you could
-instantiate a dovecot service like this:
-
address@hidden
-(dovecot-service #:config
-                 (opaque-dovecot-configuration
-                  (string "")))
address@hidden example
-
address@hidden OpenSMTPD Service
-
address@hidden {Scheme Variable} opensmtpd-service-type
-This is the type of the @uref{https://www.opensmtpd.org, OpenSMTPD} service,
-whose value should be an @code{opensmtpd-configuration} object as in this
-example:
-
address@hidden
-(service opensmtpd-service-type
-         (opensmtpd-configuration
-           (config-file (local-file "./my-smtpd.conf"))))
address@hidden example
address@hidden deffn
-
address@hidden {Data Type} opensmtpd-configuration
-Data type representing the configuration of opensmtpd.
-
address@hidden @asis
address@hidden @code{package} (default: @var{opensmtpd})
-Package object of the OpenSMTPD SMTP server.
-
address@hidden @code{config-file} (default: @var{%default-opensmtpd-file})
-File-like object of the OpenSMTPD configuration file to use.  By default it
-listens on the loopback network interface, and allows for mail from users
-and daemons on the local machine, as well as permitting email to remote
-servers.  Run @command{man smtpd.conf} for more information.
-
address@hidden table
address@hidden deftp
-
address@hidden Exim Service
-
address@hidden mail transfer agent (MTA)
address@hidden MTA (mail transfer agent)
address@hidden SMTP
-
address@hidden {Scheme Variable} exim-service-type
-This is the type of the @uref{https://exim.org, Exim} mail transfer agent
-(MTA), whose value should be an @code{exim-configuration} object as in this
-example:
-
address@hidden
-(service exim-service-type
-         (exim-configuration
-           (config-file (local-file "./my-exim.conf"))))
address@hidden example
address@hidden deffn
-
-In order to use an @code{exim-service-type} service you must also have a
address@hidden service present in your
address@hidden (even if it has no aliases).
-
address@hidden {Data Type} exim-configuration
-Data type representing the configuration of exim.
-
address@hidden @asis
address@hidden @code{package} (default: @var{exim})
-Package object of the Exim server.
-
address@hidden @code{config-file} (default: @code{#f})
-File-like object of the Exim configuration file to use. If its value is
address@hidden then use the default configuration file from the package provided
-in @code{package}. The resulting configuration file is loaded after setting
-the @code{exim_user} and @code{exim_group} configuration variables.
-
address@hidden table
address@hidden deftp
-
address@hidden Mail Aliases Service
-
address@hidden email aliases
address@hidden aliases, for email addresses
-
address@hidden {Scheme Variable} mail-aliases-service-type
-This is the type of the service which provides @code{/etc/aliases},
-specifying how to deliver mail to users on this system.
-
address@hidden
-(service mail-aliases-service-type
-         '(("postmaster" "bob")
-           ("bob" "bob@@example.com" "bob@@example2.com")))
address@hidden example
address@hidden deffn
-
-The configuration for a @code{mail-aliases-service-type} service is an
-association list denoting how to deliver mail that comes to this
-system. Each entry is of the form @code{(alias addresses ...)}, with
address@hidden specifying the local alias and @code{addresses} specifying
-where to deliver this user's mail.
-
-The aliases aren't required to exist as users on the local system. In the
-above example, there doesn't need to be a @code{postmaster} entry in the
address@hidden's @code{user-accounts} in order to deliver the
address@hidden mail to @code{bob} (which subsequently would deliver mail
-to @code{bob@@example.com} and @code{bob@@example2.com}).
-
address@hidden GNU Mailutils IMAP4 Daemon
address@hidden GNU Mailutils IMAP4 Daemon
-
address@hidden {Scheme-Variable} imap4d-service-type
-This is the type of the GNU Mailutils IMAP4 Daemon (@pxref{imap4d,,,
-mailutils, GNU Mailutils Manual}), whose value should be an
address@hidden object as in this example:
-
address@hidden
-(service imap4d-service-type
-         (imap4d-configuration
-           (config-file (local-file "imap4d.conf"))))
address@hidden example
address@hidden deffn
-
address@hidden {Datentyp} imap4d-configuration
-Datentyp, der die Konfiguration von @command{imap4d} repräsentiert.
-
address@hidden @asis
address@hidden @code{package} (Vorgabe: @code{mailutils})
-The package that provides @command{imap4d}.
-
address@hidden @code{config-file} (Vorgabe: @code{%default-imap4d-config-file})
-File-like object of the configuration file to use, by default it will listen
-on TCP port 143 of @code{localhost}.  @xref{Conf-imap4d,,, mailutils, GNU
-Mailutils Manual}, for details.
-
address@hidden table
address@hidden deftp
-
address@hidden Kurznachrichtendienste
address@hidden Kurznachrichtendienste
-
address@hidden messaging
address@hidden jabber
address@hidden XMPP
-The @code{(gnu services messaging)} module provides Guix service definitions
-for messaging services: currently only Prosody is supported.
-
address@hidden Prosody Service
-
address@hidden {Scheme Variable} prosody-service-type
-This is the type for the @uref{https://prosody.im, Prosody XMPP
-communication server}.  Its value must be a @code{prosody-configuration}
-record as in this example:
-
address@hidden
-(service prosody-service-type
-         (prosody-configuration
-          (modules-enabled (cons "groups" "mam" %default-modules-enabled))
-          (int-components
-           (list
-            (int-component-configuration
-             (hostname "conference.example.net")
-             (plugin "muc")
-             (mod-muc (mod-muc-configuration)))))
-          (virtualhosts
-           (list
-            (virtualhost-configuration
-             (domain "example.net"))))))
address@hidden example
-
-See below for details about @code{prosody-configuration}.
-
address@hidden deffn
-
-By default, Prosody does not need much configuration.  Only one
address@hidden field is needed: it specifies the domain you wish
-Prosody to serve.
-
-You can perform various sanity checks on the generated configuration with
-the @code{prosodyctl check} command.
-
-Prosodyctl will also help you to import certificates from the
address@hidden directory so that the @code{prosody} user can access
-them.  See @url{https://prosody.im/doc/letsencrypt}.
-
address@hidden
-prosodyctl --root cert import /etc/letsencrypt/live
address@hidden example
-
-The available configuration parameters follow.  Each parameter definition is
-preceded by its type; for example, @samp{string-list foo} indicates that the
address@hidden parameter should be specified as a list of strings.  Types
-starting with @code{maybe-} denote parameters that won't show up in
address@hidden when their value is @code{'disabled}.
-
-There is also a way to specify the configuration as a string, if you have an
-old @code{prosody.cfg.lua} file that you want to port over from some other
-system; see the end for more details.
-
-The @code{file-object} type designates either a file-like object
-(@pxref{G-Ausdrücke, file-like objects}) or a file name.
-
address@hidden The following documentation was initially generated by
address@hidden (generate-documentation) in (gnu services messaging).  Manually 
maintained
address@hidden documentation is better, so we shouldn't hesitate to edit below 
as
address@hidden needed.  However if the change you want to make to this 
documentation
address@hidden can be done in an automated way, it's probably easier to change
address@hidden (generate-documentation) than to make it below and have to deal 
with
address@hidden the churn as Prosody updates.
-
-Available @code{prosody-configuration} fields are:
-
address@hidden address@hidden parameter} package prosody
-The Prosody package.
address@hidden deftypevr
-
address@hidden address@hidden parameter} file-name data-path
-Location of the Prosody data storage directory.  See
address@hidden://prosody.im/doc/configure}.  Defaults to
address@hidden"/var/lib/prosody"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} file-object-list plugin-paths
-Additional plugin directories.  They are searched in all the specified paths
-in order.  See @url{https://prosody.im/doc/plugins_directory}.  Defaults to
address@hidden()}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} file-name certificates
-Every virtual host and component needs a certificate so that clients and
-servers can securely verify its identity.  Prosody will automatically load
-certificates/keys from the directory specified here.  Defaults to
address@hidden"/etc/prosody/certs"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string-list admins
-This is a list of accounts that are admins for the server.  Note that you
-must create the accounts separately.  See
address@hidden://prosody.im/doc/admins} and
address@hidden://prosody.im/doc/creating_accounts}.  Example: @code{(admins
-'("user1@@example.com" "user2@@example.net"))} Defaults to @samp{()}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean use-libevent?
-Enable use of libevent for better performance under high load.  See
address@hidden://prosody.im/doc/libevent}.  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} module-list modules-enabled
-This is the list of modules Prosody will load on startup.  It looks for
address@hidden in the plugins folder, so make sure that exists
-too.  Documentation on modules can be found at:
address@hidden://prosody.im/doc/modules}.  Defaults to @samp{("roster"
-"saslauth" "tls" "dialback" "disco" "carbons" "private" "blocklist" "vcard"
-"version" "uptime" "time" "ping" "pep" "register" "admin_adhoc")}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string-list modules-disabled
address@hidden"offline"}, @samp{"c2s"} and @samp{"s2s"} are auto-loaded, but 
should
-you want to disable them then add them to this list.  Defaults to @samp{()}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} file-object groups-file
-Path to a text file where the shared groups are defined.  If this path is
-empty then @samp{mod_groups} does nothing.  See
address@hidden://prosody.im/doc/modules/mod_groups}.  Defaults to
address@hidden"/var/lib/prosody/sharedgroups.txt"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean allow-registration?
-Disable account creation by default, for security.  See
address@hidden://prosody.im/doc/creating_accounts}.  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-ssl-configuration ssl
-These are the SSL/TLS-related settings.  Most of them are disabled so to use
-Prosody's defaults.  If you do not completely understand these options, do
-not add them to your config, it is easy to lower the security of your server
-using them.  See @url{https://prosody.im/doc/advanced_ssl_config}.
-
-Available @code{ssl-configuration} fields are:
-
address@hidden address@hidden parameter} maybe-string protocol
-This determines what handshake to use.
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-file-name key
-Path to your private key file.
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-file-name certificate
-Path to your certificate file.
address@hidden deftypevr
-
address@hidden address@hidden parameter} file-object capath
-Path to directory containing root certificates that you wish Prosody to
-trust when verifying the certificates of remote servers.  Defaults to
address@hidden"/etc/ssl/certs"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-file-object cafile
-Path to a file containing root certificates that you wish Prosody to trust.
-Similar to @code{capath} but with all certificates concatenated together.
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string-list verify
-A list of verification options (these mostly map to OpenSSL's
address@hidden()} flags).
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string-list options
-A list of general options relating to SSL/TLS.  These map to OpenSSL's
address@hidden()}.  For a full list of options available in LuaSec, see
-the LuaSec source.
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-non-negative-integer depth
-How long a chain of certificate authorities to check when looking for a
-trusted root certificate.
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string ciphers
-An OpenSSL cipher string.  This selects what ciphers Prosody will offer to
-clients, and in what order.
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-file-name dhparam
-A path to a file containing parameters for Diffie-Hellman key exchange.  You
-can create such a file with: @code{openssl dhparam -out
-/etc/prosody/certs/dh-2048.pem 2048}
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string curve
-Curve for Elliptic curve Diffie-Hellman. Prosody's default is
address@hidden"secp384r1"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string-list verifyext
-A list of "extra" verification options.
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string password
-Password for encrypted private keys.
address@hidden deftypevr
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean c2s-require-encryption?
-Whether to force all client-to-server connections to be encrypted or not.
-See @url{https://prosody.im/doc/modules/mod_tls}.  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string-list disable-sasl-mechanisms
-Set of mechanisms that will never be offered.  See
address@hidden://prosody.im/doc/modules/mod_saslauth}.  Defaults to
address@hidden("DIGEST-MD5")}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean s2s-require-encryption?
-Whether to force all server-to-server connections to be encrypted or not.
-See @url{https://prosody.im/doc/modules/mod_tls}.  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} boolean s2s-secure-auth?
-Whether to require encryption and certificate authentication.  This provides
-ideal security, but requires servers you communicate with to support
-encryption AND present valid, trusted certificates.  See
address@hidden://prosody.im/doc/s2s#security}.  Defaults to @samp{#f}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string-list s2s-insecure-domains
-Many servers don't support encryption or have invalid or self-signed
-certificates.  You can list domains here that will not be required to
-authenticate using certificates.  They will be authenticated using DNS.  See
address@hidden://prosody.im/doc/s2s#security}.  Defaults to @samp{()}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string-list s2s-secure-domains
-Even if you leave @code{s2s-secure-auth?} disabled, you can still require
-valid certificates for some domains by specifying a list here.  See
address@hidden://prosody.im/doc/s2s#security}.  Defaults to @samp{()}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string authentication
-Select the authentication backend to use.  The default provider stores
-passwords in plaintext and uses Prosody's configured data storage to store
-the authentication data.  If you do not trust your server please see
address@hidden://prosody.im/doc/modules/mod_auth_internal_hashed} for
-information about using the hashed backend.  See also
address@hidden://prosody.im/doc/authentication} Defaults to
address@hidden"internal_plain"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string log
-Set logging options.  Advanced logging configuration is not yet supported by
-the Prosody service.  See @url{https://prosody.im/doc/logging}.  Defaults to
address@hidden"*syslog"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} file-name pidfile
-File to write pid in.  See @url{https://prosody.im/doc/modules/mod_posix}.
-Defaults to @samp{"/var/run/prosody/prosody.pid"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-non-negative-integer 
http-max-content-size
-Maximum allowed size of the HTTP body (in bytes).
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string http-external-url
-Some modules expose their own URL in various ways.  This URL is built from
-the protocol, host and port used.  If Prosody sits behind a proxy, the
-public URL will be @code{http-external-url} instead.  See
address@hidden://prosody.im/doc/http#external_url}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} virtualhost-configuration-list 
virtualhosts
-A host in Prosody is a domain on which user accounts can be created.  For
-example if you want your users to have addresses like
address@hidden"john.smith@@example.com"} then you need to add a host
address@hidden"example.com"}.  All options in this list will apply only to this
-host.
-
-Note: the name "virtual" host is used in configuration to avoid confusion
-with the actual physical host that Prosody is installed on.  A single
-Prosody instance can serve many domains, each one defined as a VirtualHost
-entry in Prosody's configuration.  Conversely a server that hosts a single
-domain would have just one VirtualHost entry.
-
-See @url{https://prosody.im/doc/configure#virtual_host_settings}.
-
-Available @code{virtualhost-configuration} fields are:
-
-all these @code{prosody-configuration} fields: @code{admins},
address@hidden, @code{modules-enabled}, @code{modules-disabled},
address@hidden, @code{allow-registration?}, @code{ssl},
address@hidden, @code{disable-sasl-mechanisms},
address@hidden, @code{s2s-secure-auth?},
address@hidden, @code{s2s-secure-domains},
address@hidden, @code{log}, @code{http-max-content-size},
address@hidden, @code{raw-content}, plus:
address@hidden address@hidden parameter} string domain
-Domain you wish Prosody to serve.
address@hidden deftypevr
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} int-component-configuration-list 
int-components
-Components are extra services on a server which are available to clients,
-usually on a subdomain of the main server (such as
address@hidden"mycomponent.example.com"}).  Example components might be chatroom
-servers, user directories, or gateways to other protocols.
-
-Internal components are implemented with Prosody-specific plugins.  To add
-an internal component, you simply fill the hostname field, and the plugin
-you wish to use for the component.
-
-See @url{https://prosody.im/doc/components}.  Defaults to @samp{()}.
-
-Available @code{int-component-configuration} fields are:
-
-all these @code{prosody-configuration} fields: @code{admins},
address@hidden, @code{modules-enabled}, @code{modules-disabled},
address@hidden, @code{allow-registration?}, @code{ssl},
address@hidden, @code{disable-sasl-mechanisms},
address@hidden, @code{s2s-secure-auth?},
address@hidden, @code{s2s-secure-domains},
address@hidden, @code{log}, @code{http-max-content-size},
address@hidden, @code{raw-content}, plus:
address@hidden address@hidden parameter} string hostname
-Hostname of the component.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string plugin
-Plugin you wish to use for the component.
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-mod-muc-configuration mod-muc
-Multi-user chat (MUC) is Prosody's module for allowing you to create hosted
-chatrooms/conferences for XMPP users.
-
-General information on setting up and using multi-user chatrooms can be
-found in the "Chatrooms" documentation
-(@url{https://prosody.im/doc/chatrooms}), which you should read if you are
-new to XMPP chatrooms.
-
-See also @url{https://prosody.im/doc/modules/mod_muc}.
-
-Available @code{mod-muc-configuration} fields are:
-
address@hidden address@hidden parameter} string name
-The name to return in service discovery responses.  Defaults to
address@hidden"Prosody Chatrooms"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string-or-boolean 
restrict-room-creation
-If @samp{#t}, this will only allow admins to create new chatrooms.
-Otherwise anyone can create a room.  The value @samp{"local"} restricts room
-creation to users on the service's parent domain.  E.g.@:
address@hidden@@example.com} can create rooms on @samp{rooms.example.com}.  The
-value @samp{"admin"} restricts to service administrators only.  Defaults to
address@hidden
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer 
max-history-messages
-Maximum number of history messages that will be sent to the member that has
-just joined the room.  Defaults to @samp{20}.
address@hidden deftypevr
-
address@hidden deftypevr
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} ext-component-configuration-list 
ext-components
-External components use XEP-0114, which most standalone components support.
-To add an external component, you simply fill the hostname field.  See
address@hidden://prosody.im/doc/components}.  Defaults to @samp{()}.
-
-Available @code{ext-component-configuration} fields are:
-
-all these @code{prosody-configuration} fields: @code{admins},
address@hidden, @code{modules-enabled}, @code{modules-disabled},
address@hidden, @code{allow-registration?}, @code{ssl},
address@hidden, @code{disable-sasl-mechanisms},
address@hidden, @code{s2s-secure-auth?},
address@hidden, @code{s2s-secure-domains},
address@hidden, @code{log}, @code{http-max-content-size},
address@hidden, @code{raw-content}, plus:
address@hidden address@hidden parameter} string component-secret
-Password which the component will use to log in.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string hostname
-Hostname of the component.
address@hidden deftypevr
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} non-negative-integer-list 
component-ports
-Port(s) Prosody listens on for component connections.  Defaults to
address@hidden(5347)}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string component-interface
-Interface Prosody listens on for component connections.  Defaults to
address@hidden"127.0.0.1"}.
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-raw-content raw-content
-Raw content that will be added to the configuration file.
address@hidden deftypevr
-
-It could be that you just want to get a @code{prosody.cfg.lua} up and
-running.  In that case, you can pass an @code{opaque-prosody-configuration}
-record as the value of @code{prosody-service-type}.  As its name indicates,
-an opaque configuration does not have easy reflective capabilities.
-Available @code{opaque-prosody-configuration} fields are:
-
address@hidden address@hidden parameter} package prosody
-The prosody package.
address@hidden deftypevr
-
address@hidden address@hidden parameter} string prosody.cfg.lua
-The contents of the @code{prosody.cfg.lua} to use.
address@hidden deftypevr
-
-For example, if your @code{prosody.cfg.lua} is just the empty string, you
-could instantiate a prosody service like this:
-
address@hidden
-(service prosody-service-type
-         (opaque-prosody-configuration
-          (prosody.cfg.lua "")))
address@hidden example
-
address@hidden end of Prosody auto-generated documentation
-
address@hidden BitlBee Service
-
address@hidden IRC (Internet Relay Chat)
address@hidden IRC gateway
address@hidden://bitlbee.org,BitlBee} is a gateway that provides an IRC 
interface
-to a variety of messaging protocols such as XMPP.
-
address@hidden {Scheme Variable} bitlbee-service-type
-This is the service type for the @url{http://bitlbee.org,BitlBee} IRC
-gateway daemon.  Its value is a @code{bitlbee-configuration} (see below).
-
-To have BitlBee listen on port 6667 on localhost, add this line to your
-services:
-
address@hidden
-(service bitlbee-service-type)
address@hidden example
address@hidden defvr
-
address@hidden {Data Type} bitlbee-configuration
-This is the configuration for BitlBee, with the following fields:
-
address@hidden @asis
address@hidden @code{interface} (default: @code{"127.0.0.1"})
address@hidden @code{port} (default: @code{6667})
-Listen on the network interface corresponding to the IP address specified in
address@hidden, on @var{port}.
-
-When @var{interface} is @code{127.0.0.1}, only local clients can connect;
-when it is @code{0.0.0.0}, connections can come from any networking
-interface.
-
address@hidden @code{package} (default: @code{bitlbee})
-The BitlBee package to use.
-
address@hidden @code{plugins} (Vorgabe: @code{'()})
-List of plugin packages to use---e.g., @code{bitlbee-discord}.
-
address@hidden @code{extra-settings} (default: @code{""})
-Configuration snippet added as-is to the BitlBee configuration file.
address@hidden table
address@hidden deftp
-
address@hidden Quassel-Dienst
-
address@hidden IRC (Internet Relay Chat)
address@hidden://quassel-irc.org/,Quassel} is a distributed IRC client, meaning
-that one or more clients can attach to and detach from the central core.
-
address@hidden {Scheme-Variable} quassel-service-type
-This is the service type for the @url{https://quassel-irc.org/,Quassel} IRC
-backend daemon.  Its value is a @code{quassel-configuration} (see below).
address@hidden defvr
-
address@hidden {Datentyp} quassel-configuration
-This is the configuration for Quassel, with the following fields:
-
address@hidden @asis
address@hidden @code{quassel} (Vorgabe: @code{quassel})
-Das zu verwendende Quassel-Paket.
-
address@hidden @code{interface} (Vorgabe: @code{"::,0.0.0.0"})
address@hidden @code{port} (Vorgabe: @code{4242})
-Listen on the network interface(s) corresponding to the IPv4 or IPv6
-interfaces specified in the comma delimited @var{interface}, on @var{port}.
-
address@hidden @code{loglevel} (Vorgabe: @code{"Info"})
-The level of logging desired.  Accepted values are Debug, Info, Warning and
-Error.
address@hidden table
address@hidden deftp
-
address@hidden Telefondienste
address@hidden Telefondienste
-
address@hidden Murmur (VoIP server)
address@hidden VoIP server
-This section describes how to set up and run a Murmur server.  Murmur is the
-server of the @uref{https://mumble.info, Mumble} voice-over-IP (VoIP) suite.
-
address@hidden {Data Type} murmur-configuration
-The service type for the Murmur server.  An example configuration can look
-like this:
-
address@hidden
-(service murmur-service-type
-         (murmur-configuration
-          (welcome-text
-            "Welcome to this Mumble server running on Guix!")
-          (cert-required? #t) ;disallow text password logins
-          (ssl-cert "/etc/letsencrypt/live/mumble.example.com/fullchain.pem")
-          (ssl-key "/etc/letsencrypt/live/mumble.example.com/privkey.pem")))
address@hidden example
-
-After reconfiguring your system, you can manually set the murmur
address@hidden password with the command that is printed during the
-activation phase.
-
-It is recommended to register a normal Mumble user account and grant it
-admin or moderator rights.  You can use the @code{mumble} client to login as
-new normal user, register yourself, and log out.  For the next step login
-with the name @code{SuperUser} use the @code{SuperUser} password that you
-set previously, and grant your newly registered mumble user administrator or
-moderator rights and create some channels.
-
-Available @code{murmur-configuration} fields are:
-
address@hidden @asis
address@hidden @code{package} (default: @code{mumble})
-Package that contains @code{bin/murmurd}.
-
address@hidden @code{user} (default: @code{"murmur"})
-User who will run the Murmur server.
-
address@hidden @code{group} (default: @code{"murmur"})
-Group of the user who will run the murmur server.
-
address@hidden @code{port} (default: @code{64738})
-Port on which the server will listen.
-
address@hidden @code{welcome-text} (default: @code{""})
-Welcome text sent to clients when they connect.
-
address@hidden @code{server-password} (default: @code{""})
-Password the clients have to enter in order to connect.
-
address@hidden @code{max-users} (default: @code{100})
-Maximum of users that can be connected to the server at once.
-
address@hidden @code{max-user-bandwidth} (default: @code{#f})
-Maximum voice traffic a user can send per second.
-
address@hidden @code{database-file} (default: 
@code{"/var/lib/murmur/db.sqlite"})
-File name of the sqlite database.  The service's user will become the owner
-of the directory.
-
address@hidden @code{log-file} (default: @code{"/var/log/murmur/murmur.log"})
-File name of the log file.  The service's user will become the owner of the
-directory.
-
address@hidden @code{autoban-attempts} (default: @code{10})
-Maximum number of logins a user can make in @code{autoban-timeframe} without
-getting auto banned for @code{autoban-time}.
-
address@hidden @code{autoban-timeframe} (default: @code{120})
-Timeframe for autoban in seconds.
-
address@hidden @code{autoban-time} (default: @code{300})
-Amount of time in seconds for which a client gets banned when violating the
-autoban limits.
-
address@hidden @code{opus-threshold} (default: @code{100})
-Percentage of clients that need to support opus before switching over to
-opus audio codec.
-
address@hidden @code{channel-nesting-limit} (default: @code{10})
-How deep channels can be nested at maximum.
-
address@hidden @code{channelname-regex} (default: @code{#f})
-A string in form of a Qt regular expression that channel names must conform
-to.
-
address@hidden @code{username-regex} (default: @code{#f})
-A string in form of a Qt regular expression that user names must conform to.
-
address@hidden @code{text-message-length} (default: @code{5000})
-Maximum size in bytes that a user can send in one text chat message.
-
address@hidden @code{image-message-length} (default: @code{(* 128 1024)})
-Maximum size in bytes that a user can send in one image message.
-
address@hidden @code{cert-required?} (default: @code{#f})
-If it is set to @code{#t} clients that use weak password authentification
-will not be accepted. Users must have completed the certificate wizard to
-join.
-
address@hidden @code{remember-channel?} (Vorgabe: @code{#f})
-Should murmur remember the last channel each user was in when they
-disconnected and put them into the remembered channel when they rejoin.
-
address@hidden @code{allow-html?} (default: @code{#f})
-Should html be allowed in text messages, user comments, and channel
-descriptions.
-
address@hidden @code{allow-ping?} (default: @code{#f})
-Setting to true exposes the current user count, the maximum user count, and
-the server's maximum bandwidth per client to unauthenticated users. In the
-Mumble client, this information is shown in the Connect dialog.
-
-Disabling this setting will prevent public listing of the server.
-
address@hidden @code{bonjour?} (default: @code{#f})
-Should the server advertise itself in the local network through the bonjour
-protocol.
-
address@hidden @code{send-version?} (default: @code{#f})
-Should the murmur server version be exposed in ping requests.
-
address@hidden @code{log-days} (default: @code{31})
-Murmur also stores logs in the database, which are accessible via RPC.  The
-default is 31 days of months, but you can set this setting to 0 to keep logs
-forever, or -1 to disable logging to the database.
-
address@hidden @code{obfuscate-ips?} (Vorgabe: @code{#t})
-Should logged ips be obfuscated to protect the privacy of users.
-
address@hidden @code{ssl-cert} (default: @code{#f})
-File name of the SSL/TLS certificate used for encrypted connections.
-
address@hidden
-(ssl-cert "/etc/letsencrypt/live/example.com/fullchain.pem")
address@hidden example
address@hidden @code{ssl-key} (default: @code{#f})
-Filepath to the ssl private key used for encrypted connections.
address@hidden
-(ssl-key "/etc/letsencrypt/live/example.com/privkey.pem")
address@hidden example
-
address@hidden @code{ssl-dh-params} (default: @code{#f})
-File name of a PEM-encoded file with Diffie-Hellman parameters for the
-SSL/TLS encryption.  Alternatively you set it to @code{"@@ffdhe2048"},
address@hidden"@@ffdhe3072"}, @code{"@@ffdhe4096"}, @code{"@@ffdhe6144"} or
address@hidden"@@ffdhe8192"} to use bundled parameters from RFC 7919.
-
address@hidden @code{ssl-ciphers} (default: @code{#f})
-The @code{ssl-ciphers} option chooses the cipher suites to make available
-for use in SSL/TLS.
-
-This option is specified using
address@hidden://www.openssl.org/docs/apps/ciphers.html#CIPHER-LIST-FORMAT,
-OpenSSL cipher list notation}.
-
-It is recommended that you try your cipher string using 'openssl ciphers
-<string>' before setting it here, to get a feel for which cipher suites you
-will get.  After setting this option, it is recommend that you inspect your
-Murmur log to ensure that Murmur is using the cipher suites that you
-expected it to.
-
-Note: Changing this option may impact the backwards compatibility of your
-Murmur server, and can remove the ability for older Mumble clients to be
-able to connect to it.
-
address@hidden @code{public-registration} (default: @code{#f})
-Must be a @code{<murmur-public-registration-configuration>} record or
address@hidden
-
-You can optionally register your server in the public server list that the
address@hidden client shows on startup.  You cannot register your server if
-you have set a @code{server-password}, or set @code{allow-ping} to
address@hidden
-
-It might take a few hours until it shows up in the public list.
-
address@hidden @code{file} (default: @code{#f})
-Optional alternative override for this configuration.
address@hidden table
address@hidden deftp
-
address@hidden {Data Type} murmur-public-registration-configuration
-Configuration for public registration of a murmur service.
-
address@hidden @asis
address@hidden @code{name}
-This is a display name for your server. Not to be confused with the
-hostname.
-
address@hidden @code{password}
-A password to identify your registration.  Subsequent updates will need the
-same password. Don't lose your password.
-
address@hidden @code{url}
-This should be a @code{http://} or @code{https://} link to your web site.
-
address@hidden @code{hostname} (default: @code{#f})
-By default your server will be listed by its IP address.  If it is set your
-server will be linked by this host name instead.
address@hidden table
address@hidden deftp
-
-
-
address@hidden Überwachungsdienste
address@hidden Überwachungsdienste
-
address@hidden Tailon Service
-
address@hidden://tailon.readthedocs.io/, Tailon} is a web application for
-viewing and searching log files.
-
-The following example will configure the service with default values.  By
-default, Tailon can be accessed on port 8080 (@code{http://localhost:8080}).
-
address@hidden
-(service tailon-service-type)
address@hidden example
-
-The following example customises more of the Tailon configuration, adding
address@hidden to the list of allowed commands.
-
address@hidden
-(service tailon-service-type
-         (tailon-configuration
-           (config-file
-             (tailon-configuration-file
-               (allowed-commands '("tail" "grep" "awk" "sed"))))))
address@hidden example
-
-
address@hidden {Data Type} tailon-configuration
-Data type representing the configuration of Tailon.  This type has the
-following parameters:
-
address@hidden @asis
address@hidden @code{config-file} (default: @code{(tailon-configuration-file)})
-The configuration file to use for Tailon. This can be set to a
address@hidden record value, or any gexp
-(@pxref{G-Ausdrücke}).
-
-For example, to instead use a local file, the @code{local-file} function can
-be used:
-
address@hidden
-(service tailon-service-type
-         (tailon-configuration
-           (config-file (local-file "./my-tailon.conf"))))
address@hidden example
-
address@hidden @code{package} (default: @code{tailon})
-The tailon package to use.
-
address@hidden table
address@hidden deftp
-
address@hidden {Data Type} tailon-configuration-file
-Data type representing the configuration options for Tailon.  This type has
-the following parameters:
-
address@hidden @asis
address@hidden @code{files} (default: @code{(list "/var/log")})
-List of files to display. The list can include strings for a single file or
-directory, or a list, where the first item is the name of a subsection, and
-the remaining items are the files or directories in that subsection.
-
address@hidden @code{bind} (default: @code{"localhost:8080"})
-Address and port to which Tailon should bind on.
-
address@hidden @code{relative-root} (default: @code{#f})
-URL path to use for Tailon, set to @code{#f} to not use a path.
-
address@hidden @code{allow-transfers?} (default: @code{#t})
-Allow downloading the log files in the web interface.
-
address@hidden @code{follow-names?} (default: @code{#t})
-Allow tailing of not-yet existent files.
-
address@hidden @code{tail-lines} (default: @code{200})
-Number of lines to read initially from each file.
-
address@hidden @code{allowed-commands} (default: @code{(list "tail" "grep" 
"awk")})
-Commands to allow running. By default, @code{sed} is disabled.
-
address@hidden @code{debug?} (default: @code{#f})
-Set @code{debug?} to @code{#t} to show debug messages.
-
address@hidden @code{wrap-lines} (default: @code{#t})
-Initial line wrapping state in the web interface. Set to @code{#t} to
-initially wrap lines (the default), or to @code{#f} to initially not wrap
-lines.
-
address@hidden @code{http-auth} (default: @code{#f})
-HTTP authentication type to use. Set to @code{#f} to disable authentication
-(the default). Supported values are @code{"digest"} or @code{"basic"}.
-
address@hidden @code{users} (default: @code{#f})
-If HTTP authentication is enabled (see @code{http-auth}), access will be
-restricted to the credentials provided here. To configure users, use a list
-of pairs, where the first element of the pair is the username, and the 2nd
-element of the pair is the password.
-
address@hidden
-(tailon-configuration-file
-  (http-auth "basic")
-  (users     '(("user1" . "password1")
-               ("user2" . "password2"))))
address@hidden example
-
address@hidden table
address@hidden deftp
-
-
address@hidden Darkstat Service
address@hidden darkstat
-Darkstat is a packet sniffer that captures network traffic, calculates
-statistics about usage, and serves reports over HTTP.
-
address@hidden {Scheme Variable} darkstat-service-type
-This is the service type for the @uref{https://unix4lyfe.org/darkstat/,
-darkstat} service, its value must be a @code{darkstat-configuration} record
-as in this example:
-
address@hidden
-(service darkstat-service-type
-         (darkstat-configuration
-           (interface "eno1")))
address@hidden example
address@hidden defvar
-
address@hidden {Data Type} darkstat-configuration
-Data type representing the configuration of @command{darkstat}.
-
address@hidden @asis
address@hidden @code{package} (default: @code{darkstat})
-The darkstat package to use.
-
address@hidden @code{interface}
-Capture traffic on the specified network interface.
-
address@hidden @code{port} (default: @code{"667"})
-Bind the web interface to the specified port.
-
address@hidden @code{bind-address} (default: @code{"127.0.0.1"})
-Bind the web interface to the specified address.
-
address@hidden @code{base} (default: @code{"/"})
-Specify the path of the base URL.  This can be useful if @command{darkstat}
-is accessed via a reverse proxy.
-
address@hidden table
address@hidden deftp
-
address@hidden Prometheus Node Exporter Service
-
address@hidden prometheus-node-exporter
-The Prometheus ``node exporter'' makes hardware and operating system
-statistics provided by the Linux kernel available for the Prometheus
-monitoring system.  This service should be deployed on all physical nodes
-and virtual machines, where monitoring these statistics is desirable.
-
address@hidden {Scheme variable} prometheus-node-exporter-service-type
-This is the service type for the
address@hidden://github.com/prometheus/node_exporter/,
-prometheus-node-exporter} service, its value must be a
address@hidden record as in this example:
-
address@hidden
-(service prometheus-node-exporter-service-type
-         (prometheus-node-exporter-configuration
-           (web-listen-address ":9100")))
address@hidden example
address@hidden defvar
-
address@hidden {Data Type} prometheus-node-exporter-configuration
-Repräsentiert die Konfiguration von @command{node_exporter}.
-
address@hidden @asis
address@hidden @code{package} (Vorgabe: 
@code{go-github-com-prometheus-node-exporter})
-Das Paket für den prometheus-node-exporter, was benutzt werden soll.
-
address@hidden @code{web-listen-address} (Vorgabe: @code{":9100"})
-Bind the web interface to the specified address.
-
address@hidden table
address@hidden deftp
-
address@hidden Zabbix-Server
address@hidden zabbix zabbix-server
-Zabbix provides monitoring metrics, among others network utilization, CPU
-load and disk space consumption:
-
address@hidden
address@hidden High performance, high capacity (able to monitor hundreds of 
thousands of devices).
address@hidden Auto-discovery of servers and network devices and interfaces.
address@hidden Low-level discovery, allows to automatically start monitoring 
new items, file systems or network interfaces among others.
address@hidden Distributed monitoring with centralized web administration.
address@hidden Native high performance agents.
address@hidden SLA, and ITIL KPI metrics on reporting.
address@hidden High-level (business) view of monitored resources through 
user-defined visual console screens and dashboards.
address@hidden Remote command execution through Zabbix proxies.
address@hidden itemize
-
address@hidden %start of fragment
-
-Available @code{zabbix-server-configuration} fields are:
-
address@hidden address@hidden parameter} package zabbix-server
-Das zabbix-server-Paket.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string user
-User who will run the Zabbix server.
-
-Defaults to @samp{"zabbix"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} group group
-Group who will run the Zabbix server.
-
-Defaults to @samp{"zabbix"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string db-host
-Rechnername der Datenbank.
-
-Defaults to @samp{"127.0.0.1"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string db-name
-Datenbankname.
-
-Defaults to @samp{"zabbix"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string db-user
-Benutzerkonto der Datenbank.
-
-Defaults to @samp{"zabbix"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string db-password
-Database password.  Please, use @code{include-files} with
address@hidden inside a specified file instead.
-
-Defaults to @samp{""}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} number db-port
-Datenbank-Portnummer.
-
-Defaults to @samp{5432}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string log-type
-Specifies where log messages are written to:
-
address@hidden @bullet
address@hidden
address@hidden - syslog.
-
address@hidden
address@hidden - file specified with @code{log-file} parameter.
-
address@hidden
address@hidden - standard output.
-
address@hidden itemize
-
-Defaults to @samp{""}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string log-file
-Log file name for @code{log-type} @code{file} parameter.
-
-Defaults to @samp{"/var/log/zabbix/server.log"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string pid-file
-Name der PID-Datei.
-
-Defaults to @samp{"/var/run/zabbix/zabbix_server.pid"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string ssl-ca-location
-The location of certificate authority (CA) files for SSL server certificate
-verification.
-
-Defaults to @samp{"/etc/ssl/certs/ca-certificates.crt"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string ssl-cert-location
-Location of SSL client certificates.
-
-Defaults to @samp{"/etc/ssl/certs"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string extra-options
-Extra options will be appended to Zabbix server configuration file.
-
-Defaults to @samp{""}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} include-files include-files
-You may include individual files or all files in a directory in the
-configuration file.
-
-Defaults to @samp{()}.
-
address@hidden deftypevr
-
address@hidden %end of fragment
-
address@hidden Zabbix agent
address@hidden zabbix zabbix-agent
-
-Zabbix agent gathers information for Zabbix server.
-
address@hidden %start of fragment
-
-Available @code{zabbix-agent-configuration} fields are:
-
address@hidden address@hidden parameter} package zabbix-agent
-Das zabbix-agent-Paket.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string user
-User who will run the Zabbix agent.
-
-Defaults to @samp{"zabbix"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} group group
-Group who will run the Zabbix agent.
-
-Defaults to @samp{"zabbix"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string hostname
-Unique, case sensitive hostname which is required for active checks and must
-match hostname as configured on the server.
-
-Defaults to @samp{"Zabbix server"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string log-type
-Specifies where log messages are written to:
-
address@hidden @bullet
address@hidden
address@hidden - syslog.
-
address@hidden
address@hidden - file specified with @code{log-file} parameter.
-
address@hidden
address@hidden - standard output.
-
address@hidden itemize
-
-Defaults to @samp{""}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string log-file
-Log file name for @code{log-type} @code{file} parameter.
-
-Defaults to @samp{"/var/log/zabbix/agent.log"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string pid-file
-Name der PID-Datei.
-
-Defaults to @samp{"/var/run/zabbix/zabbix_agent.pid"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} list server
-List of IP addresses, optionally in CIDR notation, or hostnames of Zabbix
-servers and Zabbix proxies.  Incoming connections will be accepted only from
-the hosts listed here.
-
-Defaults to @samp{("127.0.0.1")}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} list server-active
-List of IP:port (or hostname:port) pairs of Zabbix servers and Zabbix
-proxies for active checks.  If port is not specified, default port is used.
-If this parameter is not specified, active checks are disabled.
-
-Defaults to @samp{("127.0.0.1")}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string extra-options
-Extra options will be appended to Zabbix server configuration file.
-
-Defaults to @samp{""}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} include-files include-files
-You may include individual files or all files in a directory in the
-configuration file.
-
-Defaults to @samp{()}.
-
address@hidden deftypevr
-
address@hidden %end of fragment
-
address@hidden Zabbix front-end
address@hidden zabbix zabbix-front-end
-
-This service provides a WEB interface to Zabbix server.
-
address@hidden %start of fragment
-
-Available @code{zabbix-front-end-configuration} fields are:
-
address@hidden address@hidden parameter} nginx-server-configuration-list nginx
-NGINX configuration.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string db-host
-Rechnername der Datenbank.
-
-Defaults to @samp{"localhost"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} number db-port
-Datenbank-Portnummer.
-
-Defaults to @samp{5432}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string db-name
-Datenbankname.
-
-Defaults to @samp{"zabbix"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string db-user
-Benutzerkonto der Datenbank.
-
-Defaults to @samp{"zabbix"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string db-password
-Database password.  Please, use @code{db-secret-file} instead.
-
-Defaults to @samp{""}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string db-secret-file
-Secret file which will be appended to @file{zabbix.conf.php} file.  This
-file contains credentials for use by Zabbix front-end.  You are expected to
-create it manually.
-
-Defaults to @samp{""}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string zabbix-host
-Zabbix server hostname.
-
-Defaults to @samp{"localhost"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} number zabbix-port
-Zabbix server port.
-
-Defaults to @samp{10051}.
-
address@hidden deftypevr
-
-
address@hidden %end of fragment
-
address@hidden Kerberos-Dienste
address@hidden Kerberos-Dienste
address@hidden Kerberos
-
-The @code{(gnu services kerberos)} module provides services relating to the
-authentication protocol @dfn{Kerberos}.
-
address@hidden Krb5 Service
-
-Programs using a Kerberos client library normally expect a configuration
-file in @file{/etc/krb5.conf}.  This service generates such a file from a
-definition provided in the operating system declaration.  It does not cause
-any daemon to be started.
-
-No ``keytab'' files are provided by this service---you must explicitly
-create them.  This service is known to work with the MIT client library,
address@hidden  Other implementations have not been tested.
-
address@hidden {Scheme Variable} krb5-service-type
-A service type for Kerberos 5 clients.
address@hidden defvr
-
address@hidden
-Here is an example of its use:
address@hidden
-(service krb5-service-type
-         (krb5-configuration
-          (default-realm "EXAMPLE.COM")
-          (allow-weak-crypto? #t)
-          (realms (list
-                   (krb5-realm
-                    (name "EXAMPLE.COM")
-                    (admin-server "groucho.example.com")
-                    (kdc "karl.example.com"))
-                   (krb5-realm
-                    (name "ARGRX.EDU")
-                    (admin-server "kerb-admin.argrx.edu")
-                    (kdc "keys.argrx.edu"))))))
address@hidden lisp
-
address@hidden
-This example provides a address@hidden client configuration which:
address@hidden
address@hidden Recognizes two realms, @i{viz:} ``EXAMPLE.COM'' and 
``ARGRX.EDU'', both
-of which have distinct administration servers and key distribution centers;
address@hidden Will default to the realm ``EXAMPLE.COM'' if the realm is not 
explicitly
-specified by clients;
address@hidden Accepts services which only support encryption types known to be 
weak.
address@hidden itemize
-
-The @code{krb5-realm} and @code{krb5-configuration} types have many fields.
-Only the most commonly used ones are described here.  For a full list, and
-more detailed explanation of each, see the MIT
address@hidden://web.mit.edu/kerberos/krb5-devel/doc/admin/conf_files/krb5_conf.html,,krb5.conf}
-documentation.
-
-
address@hidden {Data Type} krb5-realm
address@hidden realm, kerberos
address@hidden @asis
address@hidden @code{name}
-This field is a string identifying the name of the realm.  A common
-convention is to use the fully qualified DNS name of your organization,
-converted to upper case.
-
address@hidden @code{admin-server}
-This field is a string identifying the host where the administration server
-is running.
-
address@hidden @code{kdc}
-This field is a string identifying the key distribution center for the
-realm.
address@hidden table
address@hidden deftp
-
address@hidden {Data Type} krb5-configuration
-
address@hidden @asis
address@hidden @code{allow-weak-crypto?} (default: @code{#f})
-If this flag is @code{#t} then services which only offer encryption
-algorithms known to be weak will be accepted.
-
address@hidden @code{default-realm} (default: @code{#f})
-This field should be a string identifying the default Kerberos realm for the
-client.  You should set this field to the name of your Kerberos realm.  If
-this value is @code{#f} then a realm must be specified with every Kerberos
-principal when invoking programs such as @command{kinit}.
-
address@hidden @code{realms}
-This should be a non-empty list of @code{krb5-realm} objects, which clients
-may access.  Normally, one of them will have a @code{name} field matching
-the @code{default-realm} field.
address@hidden table
address@hidden deftp
-
-
address@hidden PAM krb5 Service
address@hidden pam-krb5
-
-The @code{pam-krb5} service allows for login authentication and password
-management via Kerberos.  You will need this service if you want PAM enabled
-applications to authenticate users using Kerberos.
-
address@hidden {Scheme Variable} pam-krb5-service-type
-A service type for the Kerberos 5 PAM module.
address@hidden defvr
-
address@hidden {Data Type} pam-krb5-configuration
-Data type representing the configuration of the Kerberos 5 PAM module This
-type has the following parameters:
address@hidden @asis
address@hidden @code{pam-krb5} (default: @code{pam-krb5})
-The pam-krb5 package to use.
-
address@hidden @code{minimum-uid} (default: @code{1000})
-The smallest user ID for which Kerberos authentications should be
-attempted.  Local accounts with lower values will silently fail to
-authenticate.
address@hidden table
address@hidden deftp
-
-
address@hidden LDAP-Dienste
address@hidden LDAP-Dienste
address@hidden LDAP
address@hidden nslcd, LDAP service
-
-The @code{(gnu services authentication)} module provides the
address@hidden, which can be used to authenticate against an LDAP
-server.  In addition to configuring the service itself, you may want to add
address@hidden as a name service to the Name Service Switch. @xref{Name Service 
Switch} for detailed information.
-
-Here is a simple operating system declaration with a default configuration
-of the @code{nslcd-service-type} and a Name Service Switch configuration
-that consults the @code{ldap} name service last:
-
address@hidden
-(use-service-modules authentication)
-(use-modules (gnu system nss))
-...
-(operating-system
-  ...
-  (services
-    (cons*
-      (service nslcd-service-type)
-      (service dhcp-client-service-type)
-      %base-services))
-  (name-service-switch
-   (let ((services (list (name-service (name "db"))
-                         (name-service (name "files"))
-                         (name-service (name "ldap")))))
-     (name-service-switch
-      (inherit %mdns-host-lookup-nss)
-      (password services)
-      (shadow   services)
-      (group    services)
-      (netgroup services)
-      (gshadow  services)))))
address@hidden example
-
address@hidden %start of generated documentation for nslcd-configuration
-
-Available @code{nslcd-configuration} fields are:
-
address@hidden address@hidden parameter} package nss-pam-ldapd
-Das @code{nss-pam-ldapd}-Paket, was benutzt werden soll.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-number threads
-The number of threads to start that can handle requests and perform LDAP
-queries.  Each thread opens a separate connection to the LDAP server.  The
-default is to start 5 threads.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string uid
-This specifies the user id with which the daemon should be run.
-
-Defaults to @samp{"nslcd"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string gid
-This specifies the group id with which the daemon should be run.
-
-Defaults to @samp{"nslcd"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} log-option log
-This option controls the way logging is done via a list containing SCHEME
-and LEVEL.  The SCHEME argument may either be the symbols "none" or
-"syslog", or an absolute file name.  The LEVEL argument is optional and
-specifies the log level.  The log level may be one of the following symbols:
-"crit", "error", "warning", "notice", "info" or "debug".  All messages with
-the specified log level or higher are logged.
-
-Defaults to @samp{("/var/log/nslcd" info)}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} list uri
-The list of LDAP server URIs.  Normally, only the first server will be used
-with the following servers as fall-back.
-
-Defaults to @samp{("ldap://localhost:389/";)}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string ldap-version
-The version of the LDAP protocol to use.  The default is to use the maximum
-version supported by the LDAP library.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string binddn
-Specifies the distinguished name with which to bind to the directory server
-for lookups.  The default is to bind anonymously.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string bindpw
-Specifies the credentials with which to bind.  This option is only
-applicable when used with binddn.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string rootpwmoddn
-Specifies the distinguished name to use when the root user tries to modify a
-user's password using the PAM module.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string rootpwmodpw
-Specifies the credentials with which to bind if the root user tries to
-change a user's password.  This option is only applicable when used with
-rootpwmoddn
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string sasl-mech
-Specifies the SASL mechanism to be used when performing SASL authentication.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string sasl-realm
-Specifies the SASL realm to be used when performing SASL authentication.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string sasl-authcid
-Specifies the authentication identity to be used when performing SASL
-authentication.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string sasl-authzid
-Specifies the authorization identity to be used when performing SASL
-authentication.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-boolean sasl-canonicalize?
-Determines whether the LDAP server host name should be canonicalised.  If
-this is enabled the LDAP library will do a reverse host name lookup.  By
-default, it is left up to the LDAP library whether this check is performed
-or not.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string krb5-ccname
-Set the name for the GSS-API Kerberos credentials cache.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} string base
-Basis für die Verzeichnissuche.
-
-Vorgegeben ist @samp{"dc=example,dc=com"}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} scope-option scope
-Specifies the search scope (subtree, onelevel, base or children).  The
-default scope is subtree; base scope is almost never useful for name service
-lookups; children scope is not supported on all servers.
-
-Defaults to @samp{(subtree)}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-deref-option deref
-Specifies the policy for dereferencing aliases.  The default policy is to
-never dereference aliases.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-boolean referrals
-Specifies whether automatic referral chasing should be enabled.  The default
-behaviour is to chase referrals.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} list-of-map-entries maps
-This option allows for custom attributes to be looked up instead of the
-default RFC 2307 attributes.  It is a list of maps, each consisting of the
-name of a map, the RFC 2307 attribute to match and the query expression for
-the attribute as it is available in the directory.
-
-Defaults to @samp{()}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} list-of-filter-entries filters
-A list of filters consisting of the name of a map to which the filter
-applies and an LDAP search filter expression.
-
-Defaults to @samp{()}.
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-number bind-timelimit
-Specifies the time limit in seconds to use when connecting to the directory
-server.  The default value is 10 seconds.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-number timelimit
-Specifies the time limit (in seconds) to wait for a response from the LDAP
-server.  A value of zero, which is the default, is to wait indefinitely for
-searches to be completed.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-number idle-timelimit
-Specifies the period if inactivity (in seconds) after which the con‐ nection
-to the LDAP server will be closed.  The default is not to time out
-connections.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-number reconnect-sleeptime
-Specifies the number of seconds to sleep when connecting to all LDAP servers
-fails.  By default one second is waited between the first failure and the
-first retry.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-number reconnect-retrytime
-Specifies the time after which the LDAP server is considered to be
-permanently unavailable.  Once this time is reached retries will be done
-only once per this time period.  The default value is 10 seconds.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-ssl-option ssl
-Specifies whether to use SSL/TLS or not (the default is not to).  If
-'start-tls is specified then StartTLS is used rather than raw LDAP over SSL.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-tls-reqcert-option tls-reqcert
-Specifies what checks to perform on a server-supplied certificate.  The
-meaning of the values is described in the ldap.conf(5) manual page.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string tls-cacertdir
-Specifies the directory containing X.509 certificates for peer authen‐
-tication.  This parameter is ignored when using GnuTLS.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string tls-cacertfile
-Specifies the path to the X.509 certificate for peer authentication.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string tls-randfile
-Specifies the path to an entropy source.  This parameter is ignored when
-using GnuTLS.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string tls-ciphers
-Specifies the ciphers to use for TLS as a string.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string tls-cert
-Specifies the path to the file containing the local certificate for client
-TLS authentication.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string tls-key
-Specifies the path to the file containing the private key for client TLS
-authentication.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-number pagesize
-Set this to a number greater than 0 to request paged results from the LDAP
-server in accordance with RFC2696.  The default (0) is to not request paged
-results.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-ignore-users-option 
nss-initgroups-ignoreusers
-This option prevents group membership lookups through LDAP for the specified
-users.  Alternatively, the value 'all-local may be used.  With that value
-nslcd builds a full list of non-LDAP users on startup.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-number nss-min-uid
-This option ensures that LDAP users with a numeric user id lower than the
-specified value are ignored.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-number nss-uid-offset
-This option specifies an offset that is added to all LDAP numeric user ids.
-This can be used to avoid user id collisions with local users.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-number nss-gid-offset
-This option specifies an offset that is added to all LDAP numeric group
-ids.  This can be used to avoid user id collisions with local groups.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-boolean nss-nested-groups
-If this option is set, the member attribute of a group may point to another
-group.  Members of nested groups are also returned in the higher level group
-and parent groups are returned when finding groups for a specific user.  The
-default is not to perform extra searches for nested groups.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-boolean nss-getgrent-skipmembers
-If this option is set, the group member list is not retrieved when looking
-up groups.  Lookups for finding which groups a user belongs to will remain
-functional so the user will likely still get the correct groups assigned on
-login.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-boolean nss-disable-enumeration
-If this option is set, functions which cause all user/group entries to be
-loaded from the directory will not succeed in doing so.  This can
-dramatically reduce LDAP server load in situations where there are a great
-number of users and/or groups.  This option is not recommended for most
-configurations.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string validnames
-This option can be used to specify how user and group names are verified
-within the system.  This pattern is used to check all user and group names
-that are requested and returned from LDAP.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-boolean ignorecase
-This specifies whether or not to perform searches using case-insensitive
-matching.  Enabling this could open up the system to authorization bypass
-vulnerabilities and introduce nscd cache poisoning vulnerabilities which
-allow denial of service.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-boolean pam-authc-ppolicy
-This option specifies whether password policy controls are requested and
-handled from the LDAP server when performing user authentication.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string pam-authc-search
-By default nslcd performs an LDAP search with the user's credentials after
-BIND (authentication) to ensure that the BIND operation was successful.  The
-default search is a simple check to see if the user's DN exists.  A search
-filter can be specified that will be used instead.  It should return at
-least one entry.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string pam-authz-search
-This option allows flexible fine tuning of the authorisation check that
-should be performed.  The search filter specified is executed and if any
-entries match, access is granted, otherwise access is denied.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} maybe-string 
pam-password-prohibit-message
-If this option is set password modification using pam_ldap will be denied
-and the specified message will be presented to the user instead.  The
-message can be used to direct the user to an alternative means of changing
-their password.
-
-Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert).
-
address@hidden deftypevr
-
address@hidden address@hidden parameter} list pam-services
-List of pam service names for which LDAP authentication should suffice.
-
-Defaults to @samp{()}.
-
address@hidden deftypevr
-
address@hidden %end of generated documentation for nslcd-configuration
-
-
address@hidden Web-Dienste
address@hidden Web-Dienste
-
address@hidden Web
address@hidden WWW
address@hidden HTTP
-Das Modul @code{(gnu services web)} stellt den Apache-HTTP-Server, den
-nginx-Webserver und auch einen fastcgi-Wrapperdienst bereit.
-
address@hidden Apache-HTTP-Server
-
address@hidden {Scheme-Variable} httpd-service-type
-Diensttyp für den @uref{https://httpd.apache.org/,Apache-HTTP-Server}
-(@dfn{httpd}). Der Wert dieses Diensttyps ist ein
address@hidden
-
-Es folgt ein einfaches Beispiel der Konfiguration.
-
address@hidden
-(service httpd-service-type
-         (httpd-configuration
-           (config
-             (httpd-config-file
-               (server-name "www.example.com")
-               (document-root "/srv/http/www.example.com")))))
address@hidden example
-
-Andere Dienste können den @code{httpd-service-type} auch erweitern, um etwas
-zur Konfiguration hinzuzufügen.
-
address@hidden
-(simple-service 'my-extra-server httpd-service-type
-                (list
-                  (httpd-virtualhost
-                    "*:80"
-                    (list (string-append
-                           "ServerName "www.example.com
-                            DocumentRoot \"/srv/http/www.example.com\"")))))
address@hidden example
address@hidden deffn
-
-Nun folgt eine Beschreibung der Verbundstypen @code{httpd-configuration},
address@hidden, @code{httpd-config-file} und @code{httpd-virtualhost}.
-
address@hidden {Datentyp} httpd-configuration
-Dieser Datentyp repräsentiert die Konfiguration des httpd-Dienstes.
-
address@hidden @asis
address@hidden @code{package} (Vorgabe: @code{httpd})
-Das zu benutzende httpd-Paket.
-
address@hidden @code{pid-file} (Vorgabe: @code{"/var/run/httpd"})
-Die vom Shepherd-Dienst benutzte PID-Datei.
-
address@hidden @code{config} (Vorgabe: @code{(httpd-config-file)})
-Die vom httpd-Dienst zu benutzende Konfigurationsdatei. Vorgegeben ist ein
address@hidden, aber als Wert kann auch ein anderer
-G-Ausdruck benutzt werden, der eine Datei erzeugt, zum Beispiel ein
address@hidden Es kann auch eine Datei außerhalb des Stores mit einer
-Zeichenkette angegeben werden.
-
address@hidden table
address@hidden deffn
-
address@hidden {Datentyp} httpd-module
-Dieser Datentyp steht für ein Modul des httpd-Dienstes.
-
address@hidden @asis
address@hidden @code{name}
-Der Name des Moduls.
-
address@hidden @code{file}
-Die Datei, in der das Modul steht. Sie kann relativ zum benutzten
-httpd-Paket oder als absoluter Pfad einer Datei oder als ein G-Ausdruck für
-eine Datei im Store angegeben werden, zum Beispiel @code{(file-append
-mod-wsgi "/modules/mod_wsgi.so")}.
-
address@hidden table
address@hidden deffn
-
address@hidden {Scheme-Variable} %default-httpd-modules
-Eine vorgegebene Liste von @code{httpd-module}-Objekten.
address@hidden defvr
-
address@hidden {Datentyp} httpd-config-file
-Dieser Datentyp repräsentiert eine Konfigurationsdatei für den httpd-Dienst.
-
address@hidden @asis
address@hidden @code{modules} (Vorgabe: @code{%default-httpd-modules})
-Welche Module geladen werden sollen. Zusätzliche Module können hier
-eingetragen werden oder durch eine zusätzliche Konfigurationsangabe geladen
-werden.
-
-Um zum Beispiel Anfragen nach PHP-Dateien zu behandeln, können Sie das Modul
address@hidden von Apache zusammen mit @code{php-fpm-service-type}
-benutzen:
-
address@hidden
-(service httpd-service-type
-         (httpd-configuration
-          (config
-           (httpd-config-file
-            (modules (cons*
-                      (httpd-module
-                       (name "proxy_module")
-                       (file "modules/mod_proxy.so"))
-                      (httpd-module
-                       (name "proxy_fcgi_module")
-                       (file "modules/mod_proxy_fcgi.so"))
-                      %default-httpd-modules))
-            (extra-config (list "\
-<FilesMatch \\.php$>
-    SetHandler \"proxy:unix:/var/run/php-fpm.sock|fcgi://localhost/\"
-</FilesMatch>"))))))
-(service php-fpm-service-type
-         (php-fpm-configuration
-          (socket "/var/run/php-fpm.sock")
-          (socket-group "httpd")))
address@hidden example
-
address@hidden @code{server-root} (Vorgabe: @code{httpd})
-Die @code{ServerRoot} in der Konfigurationsdatei, vorgegeben ist das
-httpd-Paket. Direktiven wie @code{Include} und @code{LoadModule} werden
-relativ zur ServerRoot interpretiert.
-
address@hidden @code{server-name} (Vorgabe: @code{#f})
-Der @code{ServerName} in der Konfigurationsdatei, mit dem das Anfrageschema
-(Request Scheme), der Rechnername (Hostname) und Port angegeben wird, mit
-denen sich der Server identifiziert.
-
-Es muss nicht als Teil der Server-Konfiguration festgelegt werden, sondern
-kann auch in virtuellen Rechnern (Virtual Hosts) festgelegt
-werden. Vorgegeben ist @code{#f}, wodurch kein @code{ServerName} festgelegt
-wird.
-
address@hidden @code{document-root} (Vorgabe: @code{"/srv/http"})
-Das @code{DocumentRoot}-Verzeichnis, in dem sich die Dateien befinden, die
-man vom Server abrufen kann.
-
address@hidden @code{listen} (Vorgabe: @code{'("80")})
-Die Liste der Werte für die @code{Listen}-Direktive in der
-Konfigurationsdatei. Als Wert sollte eine Liste von Zeichenketten angegeben
-werden, die jeweils die Portnummer, auf der gelauscht wird, und optional
-auch die zu benutzende IP-Adresse und das Protokoll angeben.
-
address@hidden @code{pid-file} (Vorgabe: @code{"/var/run/httpd"})
-Hiermit wird die PID-Datei als @code{PidFile}-Direktive angegeben. Der Wert
-sollte mit der @code{pid-file}-Datei in der @code{httpd-configuration}
-übereinstimmen, damit der Shepherd-Dienst richtig konfiguriert ist.
-
address@hidden @code{error-log} (Vorgabe: @code{"/var/log/httpd/error_log"})
-Der Ort, an den der Server mit der @code{ErrorLog}-Direktive
-Fehlerprotokolle schreibt.
-
address@hidden @code{user} (Vorgabe: @code{"httpd"})
-Der Benutzer, als der der Server durch die @code{User}-Direktive Anfragen
-beantwortet.
-
address@hidden @code{group} (Vorgabe: @code{"httpd"})
-Die Gruppe, mit der der Server durch die @code{Group}-Direktive Anfragen
-beantwortet.
-
address@hidden @code{extra-config} (Vorgabe: @code{(list "TypesConfig 
etc/httpd/mime.types")})
-Eine flache Liste von Zeichenketten und G-Ausdrücken, die am Ende der
-Konfigurationsdatei hinzugefügt werden.
-
-Alle Werte, mit denen dieser Dienst erweitert wird, werden an die Liste
-angehängt.
-
address@hidden table
address@hidden deffn
-
address@hidden {Datentyp} httpd-virtualhost
-Dieser Datentyp repräsentiert einen Konfigurationsblock für einen virtuellen
-Rechner (Virtual Host) des httpd-Dienstes.
-
-Sie sollten zur zusätzlichen Konfigura