diff options
author | Ludovic Courtès <ludo@gnu.org> | 2018-12-02 23:08:47 +0100 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2018-12-02 23:08:47 +0100 |
commit | 793dcd8c679cd53e2792cf26d539505fac396d3d (patch) | |
tree | 0d538e608ef947216dc1af06d85ca514551a2078 /doc | |
parent | 2d337760501662f9a380a117312934e489bd5f1d (diff) | |
download | gnu-guix-793dcd8c679cd53e2792cf26d539505fac396d3d.tar gnu-guix-793dcd8c679cd53e2792cf26d539505fac396d3d.tar.gz |
nls: Update 'de' translation of the manual.
Diffstat (limited to 'doc')
-rw-r--r-- | doc/contributing.de.texi | 61 | ||||
-rw-r--r-- | doc/guix.de.texi | 687 |
2 files changed, 461 insertions, 287 deletions
diff --git a/doc/contributing.de.texi b/doc/contributing.de.texi index 6c302ad70d..9997092a9e 100644 --- a/doc/contributing.de.texi +++ b/doc/contributing.de.texi @@ -5,8 +5,8 @@ Dieses Projekt basiert auf Kooperation, daher benötigen wir Ihre Hilfe, um es wachsen zu lassen! Bitte kontaktieren Sie uns auf @email{guix-devel@@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 ist. Besonders willkommen ist Hilfe bei der Erstellung von -Paketen (@pxref{Paketrichtlinien}). +für das Projekt sein könnte. Besonders willkommen ist Hilfe bei der +Erstellung von Paketen (@pxref{Paketrichtlinien}). @cindex Verhaltensregeln, für Mitwirkende @cindex Verhaltenskodex für Mitwirkende @@ -103,13 +103,13 @@ Dann führen Sie wie gewohnt @command{./configure} aus. Achten Sie darauf, Zum Schluss müssen Sie @code{make check} aufrufen, um die Tests auszuführen (@pxref{Die Testsuite laufen lassen}). Falls etwas fehlschlägt, werfen Sie einen Blick auf die Installationsanweisungen (@pxref{Installation}) oder senden -Sie eine E-Mail an @email{guix-devel@@gnu.org, Mailingliste}. +Sie eine E-Mail an die @email{guix-devel@@gnu.org, Mailingliste}. @node Guix vor der Installation ausführen @section Guix vor der Installation ausführen -Um eine gesunde Arbeitsumgebung zu behalten, ist es hilfreich, die im +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. @@ -118,10 +118,11 @@ To that end, all the command-line tools can be used even if you have not run @code{make install}. To do that, you first need to have an environment with all the dependencies available (@pxref{Erstellung aus dem Git}), and then simply prefix each command with @command{./pre-inst-env} (the @file{pre-inst-env} -script lives in the top build tree of Guix), as in@footnote{The @option{-E} -flag to @command{sudo} guarantees that @code{GUILE_LOAD_PATH} is correctly -set such that @command{guix-daemon} and the tools it uses can find the Guile -modules they need.}: +script lives in the top build tree of Guix; it is generated by +@command{./configure}), as in@footnote{The @option{-E} flag to +@command{sudo} guarantees that @code{GUILE_LOAD_PATH} is correctly set such +that @command{guix-daemon} and the tools it uses can find the Guile modules +they need.}: @example $ sudo -E ./pre-inst-env guix-daemon --build-users-group=guixbuild @@ -163,11 +164,10 @@ Das @command{pre-inst-env}-Skript richtet alle Umgebungsvariablen ein, die nötig sind, um dies zu ermöglichen, einschließlich @env{PATH} und @env{GUILE_LOAD_PATH}. -Beachten Sie, dass @command{./pre-inst-env guix pull} den lokalen Quellbaum -@emph{nicht} aktualisiert; es aktualisiert lediglich die symbolische -Verknüpfung @file{~/.config/guix/current} (@pxref{Aufruf von guix pull}). Um -Ihren lokalen Quellbaum zu aktualisieren, müssen Sie stattdessen -@command{git pull} benutzen. +Note that @command{./pre-inst-env guix pull} does @emph{not} upgrade the +local source tree; it simply updates the @file{~/.config/guix/current} +symlink (@pxref{Aufruf von guix pull}). Run @command{git pull} instead if you +want to upgrade your local source tree. @node Perfekt eingerichtet @@ -260,7 +260,7 @@ grundlegende Konzepte implementieren, wie zum Beispiel die Prozedur Guile-Module, die beim Erstellen nutzbar sein sollen, müssen im Namensraum @code{(guix build @dots{})} leben. Sie dürfen auf keine anderen Guix- oder -GNU-Modules Bezug nehmen. Jedoch ist es in Ordnung, wenn ein »wirtsseitiges« +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 @@ -323,7 +323,7 @@ lassen Sie das zweite Argument weg: @end example @cindex Vim, zum Editieren von Scheme-Code -Wenn Sie mit Code mit Vim bearbeiten, empfehlen wir, dass Sie @code{:set +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 @uref{https://www.vim.org/scripts/script.php?script_id=3998, @@ -359,7 +359,7 @@ 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: +verändert, gehen Sie bitte diese Prüfliste durch: @enumerate @item @@ -389,14 +389,14 @@ 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 für solche Pakete die schon in der Distribution +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 das gesamte System betreffen — gebündelt mitgelieferte -Kopien würden dies verhindern. +einzuspielen, die aber das gesamte System betreffen — gebündelt +mitgelieferte Kopien würden dies verhindern. @item Schauen Sie sich das von @command{guix size} ausgegebene Profil an @@ -438,20 +438,17 @@ beeinträchtigende Änderungen umfassen). Dieser Branch wird planmäßig in @code{master} alle 2,5 Monate oder so gemerget. @end table -All diese Branches werden kontinuierlich -@uref{https://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. +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. @c TODO: It would be good with badges on the website that tracks these @c 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 -@code{-next}-Branch existiert. Bitte fragen Sie auf der Mailing-Liste oder -IRC, wenn Sie sich nicht sicher sind, wo ein Patch eingespielt werden -sollte. +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. @item @cindex Determinismus, von Erstellungsprozessen @@ -512,7 +509,7 @@ changes, the URL will probably be wrong. @end 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 +an die Mailing-Liste schicken. Sie können dazu Ihr E-Mail-Programm oder den Befehl @command{git send-email} benutzen (@pxref{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 @@ -520,7 +517,7 @@ 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 @email{@var{NNN}-done@@debbugs.gnu.org} senden. +Sie eine E-Mail an @email{@var{NNN}-done@@debbugs.gnu.org} senden. @unnumberedsubsec Senden einer Patch-Reihe @anchor{Senden einer Patch-Reihe} diff --git a/doc/guix.de.texi b/doc/guix.de.texi index e2138db864..ef04eed346 100644 --- a/doc/guix.de.texi +++ b/doc/guix.de.texi @@ -18,6 +18,7 @@ @c Identifier of the OpenPGP key used to sign tarballs and such. @set OPENPGP-SIGNING-KEY-ID 3CE464558A84FDC69DB40CFB090B11993D9AEBB5 +@set KEY-SERVER pool.sks-keyservers.net @copying Copyright @copyright{} 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic @@ -33,7 +34,7 @@ Efraim Flashner@* Copyright @copyright{} 2016 John Darrington@* Copyright @copyright{} 2016, 2017 Nils Gillmann@* Copyright @copyright{} 2016, 2017, 2018 Jan Nieuwenhuizen@* Copyright @copyright{} 2016 Julien Lepiller@* Copyright @copyright{} 2016 Alex ter Weele@* Copyright @copyright{} 2017, -2018 Clément Lassieur@* Copyright @copyright{} 2017 Mathieu Othacehe@* +2018 Clément Lassieur@* Copyright @copyright{} 2017, 2018 Mathieu Othacehe@* Copyright @copyright{} 2017 Federico Beffa@* Copyright @copyright{} 2017, 2018 Carlo Zancanaro@* Copyright @copyright{} 2017 Thomas Danckaert@* Copyright @copyright{} 2017 humanitiesNerd@* Copyright @copyright{} 2017 @@ -46,7 +47,8 @@ Andy Wingo@* Copyright @copyright{} 2017, 2018 Arun Isaac@* Copyright Copyright @copyright{} 2018 Oleg Pykhalov@* Copyright @copyright{} 2018 Mike Gerwitz@* Copyright @copyright{} 2018 Pierre-Antoine Rouby@* Copyright @copyright{} 2018 Gábor Boskovits@* Copyright @copyright{} 2018 Florian -Pelz@* +Pelz@* Copyright @copyright{} 2018 Laura Lazzati@* Copyright @copyright{} +2018 Alex Vong@* Es ist Ihnen gestattet, dieses Dokument zu vervielfältigen, weiterzugeben und/oder zu verändern, unter den Bedingungen der GNU Free Documentation @@ -109,8 +111,9 @@ wurde. @c how to join your own translation team and how to report issues with the @c translation. This manual is also available in French (@pxref{Top,,, guix.fr, Manuel de -référence de GNU Guix}). If you would like to translate it in your native -language, consider joining the +référence de GNU Guix}) and German (@pxref{Top,,, guix.de, Referenzhandbuch +zu GNU Guix}). If you would like to translate it in your native language, +consider joining the @uref{https://translationproject.org/domain/guix-manual.html, Translation Project}. @@ -274,22 +277,20 @@ Systemkonfiguration -* Das Konfigurationssystems nutzen:: Ihr GNU-System anpassen +* Das Konfigurationssystem nutzen:: Ihr GNU-System anpassen. * „operating-system“-Referenz:: Details der Betriebssystem-Deklarationen. * Dateisysteme:: Die Dateisystemeinbindungen konfigurieren. -* Abgebildete Geräte:: Zusatzverarbeitungsschritte für blockbasierte - Geräte. +* Abgebildete Geräte:: Näheres zu blockorientierten Speichermedien. * Benutzerkonten:: Benutzerkonten festlegen. -* Locales:: Sprach- und kulturelle - Konventionseinstellungen. +* Locales:: Sprache und kulturelle Konventionen. * Dienste:: Systemdienste festlegen. -* Setuid-Programme:: Programme mit Administratorrechten ausführen +* 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:: Instanzierung einer Systemkonfiguration +* Aufruf von guix system:: Instanzierung einer Systemkonfiguration. * GuixSD in einer VM starten:: Wie man GuixSD in einer virtuellen Maschine startet. * Dienste definieren:: Neue Dienstdefinitionen hinzufügen. @@ -298,7 +299,7 @@ Dienste -* Basisdienste:: Essenzielle Systemdienste +* Basisdienste:: Essenzielle Systemdienste. * Geplante Auftragsausführung:: Der mcron-Dienst. * Log-Rotation:: Der rottlog-Dienst. * Netzwerkdienste:: Netzwerkeinrichtung, SSH-Daemon etc. @@ -306,7 +307,7 @@ Dienste * Druckdienste:: Unterstützung für lokale und entfernte Drucker. * Desktop-Dienste:: D-Bus- und Desktop-Dienste. -* Tondienste:: Dienste für ALSA und Pulseaudio. +* Sound Services:: ALSA and Pulseaudio services. * Datenbankdienste:: SQL-Datenbanken, Schlüssel-Wert-Speicher etc. * Mail-Dienste:: IMAP, POP3, SMTP und so weiter. * Kurznachrichtendienste:: Dienste für Kurznachrichten. @@ -318,7 +319,7 @@ Dienste * DNS-Dienste:: DNS-Daemons. * VPN-Dienste:: VPN-Daemons. * Network File System:: Dienste mit Bezug zum Netzwerkdateisystem. -* Kontinuierliche Integration:: Der Cuirass-Dienst +* Kontinuierliche Integration:: Der Cuirass-Dienst. * Power Management Services:: Extending battery life. * Audio-Dienste:: Der MPD. * Virtualisierungsdienste:: Dienste für virtuelle Maschinen. @@ -332,7 +333,7 @@ Dienste definieren * Dienstkompositionen:: Wie Dienste zusammengestellt werden. * Diensttypen und Dienste:: Typen und Dienste. -* Service-Referenz:: Referenz zur Programmierschnittstelle +* Service-Referenz:: Referenz zur Programmierschnittstelle. * Shepherd-Dienste:: Eine spezielle Art von Dienst. Paketrichtlinien @@ -386,7 +387,7 @@ Pakete aus ihrem Quellcode heraus zu erstellen und hilft allgemein bei der Schöpfung und Wartung von Software-Umgebungen. @cindex Benutzeroberflächen -Guix bietet eine kommandozeilenbasierte Paketverwaltungsschnittstelle +Guix bietet eine befehlszeilenbasierte Paketverwaltungsschnittstelle (@pxref{Aufruf von guix package}), einen Satz Befehlszeilenwerkzeuge (@pxref{Zubehör}) sowie Schnittstellen zur Programmierung in Scheme (@pxref{Programmierschnittstelle}). @@ -414,10 +415,11 @@ es die bereits verfügbaren Werkzeuge ergänzt, ohne zu stören @dfn{Guix System Distribution}, kurz GuixSD (@pxref{GNU-Distribution}), verwenden. Mit GNU@tie{}GuixSD @emph{deklarieren} Sie alle Aspekte der Betriebssystemkonfiguration und Guix kümmert sich darum, die Konfiguration -oft transaktionsbasierte, reproduzierbare und zustandslose Weise zu +auf transaktionsbasierte, reproduzierbare und zustandslose Weise zu instanzieren (@pxref{Systemkonfiguration}). @cindex funktionale Paketverwaltung +@cindex isolation Intern implementiert Guix die Disziplin der @dfn{funktionalen Paketverwaltung}, zu der Nix schon die Pionierarbeit geleistet hat (@pxref{Danksagungen}). In Guix wird der Prozess, ein Paket zu erstellen @@ -454,6 +456,7 @@ Garbage Collection für Pakete (@pxref{Funktionalitäten}). @chapter Installation @cindex Guix installieren +@cindex official website GNU Guix kann von seiner Webseite unter @url{http://www.gnu.org/software/guix/} heruntergeladen werden. Dieser Abschnitt beschreibt die Software-Voraussetzungen von Guix und wie man es @@ -466,6 +469,8 @@ GNU-Betriebssystem installieren möchten, werfen Sie einen Blick in den Abschnitt @pxref{Systeminstallation}. @cindex Fremddistribution +@cindex directories related to foreign distro + Wenn es auf ein bestehendes GNU/Linux-System installiert wird — im Folgenden als @dfn{Fremddistribution} bezeichnet —, ergänzt GNU@tie{}Guix die verfügbaren Werkzeuge, ohne dass sie sich gegenseitig stören. Guix’ Daten @@ -491,12 +496,13 @@ aktualisiert werden (@pxref{Aufruf von guix pull}). @section Aus Binärdatei installieren @cindex Guix aus Binärdateien installieren +@cindex installer script 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 im -nächsten Abschnitt beschrieben wird. Vorausgesetzt wird hier lediglich, dass -GNU@tie{}tar und Xz verfügbar sind. +Regel schneller, als Guix aus seinen Quelldateien zu installieren, was in +den nächsten Abschnitten beschrieben wird. Vorausgesetzt wird hier +lediglich, dass GNU@tie{}tar und Xz verfügbar sind. Wir bieten ein @uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh, @@ -528,7 +534,8 @@ Falls dieser Befehl fehlschlägt, weil Sie nicht über den nötigen importieren: @example -$ gpg --keyserver pgp.mit.edu --recv-keys @value{OPENPGP-SIGNING-KEY-ID} +$ gpg --keyserver @value{KEY-SERVER} \ + --recv-keys @value{OPENPGP-SIGNING-KEY-ID} @end example @noindent @@ -548,8 +555,8 @@ ausführen. Danach führen Sie als @code{root}-Nutzer aus: @end example Dadurch wird @file{/gnu/store} (@pxref{Der Store}) und @file{/var/guix} -erzeugt. Letzteres enthält ein Profil, welches bereit zur Nutzung durch -@code{root} ist (wie im nächsten Schritt beschrieben). +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. @@ -557,25 +564,26 @@ Guix-System, denn es würde seine eigenen essenziellen Dateien überschreiben. Die Befehlszeilenoption @code{--warning=no-timestamp} stellt sicher, dass GNU@tie{}tar nicht vor »unplausibel alten Zeitstempeln« warnt (solche Warnungen traten bei GNU@tie{}tar 1.26 und älter auf, neue Versionen machen -keine Probleme). Sie kommen daher, dass alle Dateien im Archiv als +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. @item -Machen Sie das Profil von @code{root} verfügbar als -@file{~root/.guix-profile}: +Make the profile available under @file{~root/.config/guix/current}, which is +where @command{guix pull} will install updates (@pxref{Aufruf von guix pull}): @example -# ln -sf /var/guix/profiles/per-user/root/guix-profile \ - ~root/.guix-profile +# mkdir -p ~root/.config/guix +# ln -sf /var/guix/profiles/per-user/root/current-guix \ + ~root/.config/guix/current @end example »Sourcen« Sie @file{etc/profile}, um @code{PATH} und andere relevante Umgebungsvariable zu ergänzen: @example -# GUIX_PROFILE="`echo ~root`/.guix-profile" ; \ +# GUIX_PROFILE="`echo ~root`/.config/guix/current" ; \ source $GUIX_PROFILE/etc/profile @end example @@ -598,8 +606,8 @@ das mit folgenden Befehlen veranlassen: @c http://lists.gnu.org/archive/html/guix-devel/2017-01/msg01199.html @example -# cp ~root/.guix-profile/lib/systemd/system/guix-daemon.service \ - /etc/systemd/system/ +# cp ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \ + /etc/systemd/system/ # systemctl start guix-daemon && systemctl enable guix-daemon @end example @@ -607,14 +615,16 @@ Wenn Ihre Wirts-Distribution als »init«-System Upstart verwendet: @example # initctl reload-configuration -# cp ~root/.guix-profile/lib/upstart/system/guix-daemon.conf /etc/init/ +# cp ~root/.config/guix/current/lib/upstart/system/guix-daemon.conf \ + /etc/init/ # start guix-daemon @end example Andernfalls können Sie den Daemon immer noch manuell starten, mit: @example -# ~root/.guix-profile/bin/guix-daemon --build-users-group=guixbuild +# ~root/.config/guix/current/bin/guix-daemon \ + --build-users-group=guixbuild @end example @item @@ -624,7 +634,7 @@ zur Verfügung, zum Beispiel so: @example # mkdir -p /usr/local/bin # cd /usr/local/bin -# ln -s /var/guix/profiles/per-user/root/guix-profile/bin/guix +# ln -s /var/guix/profiles/per-user/root/current-guix/bin/guix @end example Es ist auch eine gute Idee, die Info-Version dieses Handbuchs ebenso @@ -633,7 +643,7 @@ verfügbar zu machen: @example # mkdir -p /usr/local/share/info # cd /usr/local/share/info -# for i in /var/guix/profiles/per-user/root/guix-profile/share/info/* ; +# for i in /var/guix/profiles/per-user/root/current-guix/share/info/* ; do ln -s $i ; done @end example @@ -649,7 +659,8 @@ Um Substitute von @code{hydra.gnu.org} oder einem Spiegelserver davon zu benutzen (@pxref{Substitute}), müssen sie erst autorisiert werden: @example -# guix archive --authorize < ~root/.guix-profile/share/guix/hydra.gnu.org.pub +# guix archive --authorize < \ + ~root/.config/guix/current/share/guix/hydra.gnu.org.pub @end example @item @@ -657,7 +668,7 @@ Alle Nutzer müssen womöglich ein paar zusätzliche Schritte ausführen, damit ihre Guix-Umgebung genutzt werden kann, siehe @pxref{Anwendungen einrichten}. @end enumerate -Voilà, die installation ist fertig! +Voilà, die Installation ist fertig! Sie können nachprüfen, dass Guix funktioniert, indem Sie ein Beispielpaket in das root-Profil installieren: @@ -681,10 +692,11 @@ make guix-binary.@var{system}.tar.xz @end example @noindent -…was wiederum dies ausführt: +...@: which, in turn, runs: @example -guix pack -s @var{system} --localstatedir guix +guix pack -s @var{system} --localstatedir \ + --profile-name=current-guix guix @end example Siehe @xref{Aufruf von guix pack} für weitere Informationen zu diesem @@ -711,8 +723,8 @@ neuer, einschließlich 2.2.x, (@pxref{Guile Preparations, how to install the GnuTLS bindings for Guile,, gnutls-guile, GnuTLS-Guile}), @item -@uref{https://notabug.org/civodul/guile-sqlite3, Guile-SQLite3}, version -0.1.0 or later; +@uref{https://notabug.org/guile-sqlite3/guile-sqlite3, Guile-SQLite3}, +version 0.1.0 or later; @item @c FIXME: Specify a version number once a release has been made. @uref{https://gitlab.com/guile-git/guile-git, Guile-Git}, vom August 2017 @@ -765,7 +777,7 @@ Ihren Store verfälschen (@pxref{Der Store}). Wenn eine funktionierende Installation of @url{http://nixos.org/nix/, the Nix package manager} verfügbar ist, können Sie Guix stattdessen mit @code{--disable-daemon} konfigurieren. In diesem Fall ersetzt Nix die drei -obengenannten Abhängigkeiten. +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 @@ -816,10 +828,11 @@ jedes einzelnen Testfalls zu sehen, können Sie wie in diesem Beispiel die make check TESTS="tests/base64.scm" SCM_LOG_DRIVER_FLAGS="--brief=no" @end example -Kommt es zum Fehlschlag, senden Sie bitte eine E-mail an +Kommt es zum Fehlschlag, senden Sie bitte eine E-Mail an @email{bug-guix@@gnu.org} und fügen Sie die Datei @file{test-suite.log} als -Anhang bei. Bitte geben Sie dabei in Ihrer Nachricht die benutze Version von -Guix an sowie die Versionsnummern der Abhängigkeiten (@pxref{Voraussetzungen}). +Anhang bei. Bitte geben Sie dabei in Ihrer Nachricht die benutzte Version +von Guix an sowie die Versionsnummern der Abhängigkeiten +(@pxref{Voraussetzungen}). Guix wird auch mit einem Testkatalog für das ganze System ausgeliefert, der vollständige Instanzen des GuixSD-Betriebssystems testet. Er kann nur auf @@ -855,12 +868,12 @@ Auch hier gilt: Falls Testfehler auftreten, senden Sie bitte alle Details an @cindex 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 (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 @command{guix package} und -@command{guix build} mit dem Daemon (mittels entfernter Prozeduraufrufe), um -ihm Anweisungen zu geben, was er tun soll. +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 +@command{guix 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 @@ -923,7 +936,7 @@ erzeugt werden (mit Bash-Syntax und den Befehlen von @code{shadow}): @noindent Die Anzahl der Erstellungsbenutzer entscheidet, wieviele Erstellungsaufträge parallel ausgeführt werden können, wie es mit der Befehlszeilenoption -@option{--max-jobs} vorgeben werden kann (@pxref{Aufruf des guix-daemon, +@option{--max-jobs} vorgegeben werden kann (@pxref{Aufruf des guix-daemon, @option{--max-jobs}}). Um @command{guix system vm} und ähnliche Befehle nutzen zu können, müssen Sie die Erstellungsbenutzer unter Umständen zur @code{kvm}-Benutzergruppe hinzufügen, damit sie Zugriff auf @file{/dev/kvm} @@ -999,7 +1012,7 @@ dennoch möglich, @command{guix-daemon} auszuführen, sofern Sie 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, die als @emph{reine} +Verfügung stehen — was es deutlich schwerer macht, sie als @emph{reine} Funktionen aufzufassen. @@ -1072,9 +1085,9 @@ Der Systemtyp der entfernten Maschine — z.B. @code{"x86_64-linux"}. @item user Das Benutzerkonto, mit dem eine Verbindung zur entfernten Maschine über SSH -aufgebaut werden soll. Beachten Sie, dass das SSH-Schlüsselpaart -@emph{nicht} durch eine Passphrase geschützt sein darf, damit -nicht-interaktive Anmeldungen möglich sind. +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. @item host-key Dies muss der @dfn{öffentliche SSH-Host-Schlüssel} der Maschine im @@ -1268,7 +1281,7 @@ notwendigen Operationen gestattet. @cindex SELinux, Einschränkungen Diese Richtlinie ist nicht perfekt. Im Folgenden finden Sie eine Liste von -Einschränkungen oder merkwürdiger Verhaltensweisen, die bedacht werden +Einschränkungen oder merkwürdigen Verhaltensweisen, die bedacht werden sollten, wenn man die mitgelieferte SELinux-Richtlinie für den Guix-Daemon einspielt. @@ -1301,8 +1314,8 @@ weil SELinux Netzwerk-Sockets anders behandelt als Dateien. @item Derzeit wird allen Dateien mit einem Namen, der zum regulären Ausdruck @code{/gnu/store/.+-(guix-.+|profile)/bin/guix-daemon} passt, die -Kennzeichnung @code{guix_daemon_exec_t} zugewiesen, wodurch @emph{jedee -beliebigee} Datei mit diesem Namen in irgendeinem Profil gestatttet wäre, in +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 @@ -1356,12 +1369,9 @@ reproduzierbare Erstellungen zu garantieren (@pxref{Funktionalitäten}). When the daemon performs a build on behalf of the user, it creates a build directory under @file{/tmp} or under the directory specified by its -@code{TMPDIR} environment variable; this directory is shared with the -container for the duration of the build. Be aware that using a directory -other than @file{/tmp} can affect build results---for example, with a longer -directory name, a build process that uses Unix-domain sockets might hit the -name length limitation for @code{sun_path}, which it would otherwise not -hit. +@code{TMPDIR} environment variable. This directory is shared with the +container for the duration of the build, though within the container, the +build tree is always called @file{/tmp/guix-build-@var{name}.drv-0}. Nach Abschluss der Erstellung wird das Erstellungsverzeichnis automatisch entfernt, außer wenn die Erstellung fehlgeschlagen ist und der Client @@ -1487,7 +1497,7 @@ 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 besser verwenden, besser +nicht empfohlen, dass Sie diese Befehlszeilenoption verwenden, besser sollten Sie dafür sorgen, dass jede Ableitung alle von ihr benötigten Eingabgen deklariert. @@ -1677,7 +1687,7 @@ stärkstens}, dass Sie den @dfn{Name Service Cache Daemon} der GNU-C-Bibliothek, @command{nscd}, laufen lassen, welcher auf dem Socket @file{/var/run/nscd/socket} lauschen sollte. Wenn Sie das nicht tun, könnten mit Guix installierte Anwendungen Probleme beim Auflösen von Hostnamen oder -Benutzerkonten haben, oder sogar abstürzen. Die nächsten Absätze erklären, +Benutzerkonten haben, oder sogar abstürzen. Die nächsten Absätze erklären warum. @cindex @file{nsswitch.conf} @@ -1803,7 +1813,7 @@ benutzen. Das Emacs-Paketsystem organisiert die Dateistruktur ähnlich (@pxref{Package 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 +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 @code{--no-site-file} starten (@pxref{Init File,,, emacs, The GNU Emacs @@ -1888,7 +1898,7 @@ Nutzers gespeichert als @code{$HOME/.guix-profile}. Zum Beispiel installiert @code{alice} GCC 4.7.2. Dadurch zeigt dann @file{/home/alice/.guix-profile/bin/gcc} auf @file{/gnu/store/@dots{}-gcc-4.7.2/bin/gcc}. Auf demselben Rechner hat -@code{bob} bbereits GCC 4.8.0 installiert. Das Profil von @code{bob} zeigt +@code{bob} 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. @@ -1908,12 +1918,12 @@ Stromausfall während der Transaktion kommt, dann bleibt der alte, nutzbare Zustands des Nutzerprofils erhalten. Zudem kann jede Pakettransaktion @emph{zurückgesetzt} werden -(Rollback). Wenn also zum Beispiel durch eine Aktualisierung eine neue +(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 auf GuixSD auch die globale Systemkonfiguration transaktionellen -Aktualisierungen und Rücksetzungen (@pxref{Das Konfigurationssystems nutzen}). +Aktualisierungen und Rücksetzungen (@pxref{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 @@ -2171,7 +2181,7 @@ auflösen, zum Beispiel so: @cindex rücksetzen @cindex Zurücksetzen von Transaktionen @cindex Transaktionen, zurücksetzen -Wechselt zur vorherigen @dfn{Generation} des Profils zurück — d.h. mache die +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 @@ -2278,7 +2288,7 @@ Verfügbarkeit von Paketen nachzulesen: @item --search=@var{Regexp} @itemx -s @var{Regexp} @cindex Suche nach Paketen -Führt alle verfügbaren Pakete aus, deren Name, Zusammenfassung oder +Führt alle verfügbaren Pakete auf, deren Name, Zusammenfassung oder Beschreibung zum regulären Ausdruck @var{Regexp} passt, sortiert nach ihrer Relevanz. Alle Metadaten passender Pakete werden im @code{recutils}-Format geliefert (@pxref{Top, GNU recutils databases,, recutils, GNU recutils @@ -2510,7 +2520,7 @@ 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 (@pxref{GNU-Distribution}). Auf +Sie die Guix-System-Distribution verwenden (@pxref{GNU-Distribution}). Auf Fremddistributionen sind sie allerdings standardmäßig ausgeschaltet, solange Sie sie nicht ausdrücklich in einem der empfohlenen Installationsschritte erlaubt haben (@pxref{Installation}). Die folgenden Absätze beschreiben, wie @@ -2561,7 +2571,7 @@ Sobald es eingerichtet wurde, sollte sich die Ausgabe eines Befehls wie @example $ guix build emacs --dry-run -The following derivations would be built: +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 @@ -2574,7 +2584,7 @@ in so etwas verwandeln: @example $ guix build emacs --dry-run -112.3 MB would be downloaded: +112.3 MB würden heruntergeladen: /gnu/store/pk3n22lbq6ydamyymqkkz7i69wiwjiwi-emacs-24.3 /gnu/store/2ygn4ncnhrpr61rssa6z0d9x22si0va3-libjpeg-8d /gnu/store/71yz6lgx4dazma9dwn2mcjxaah9w77jq-cairo-1.12.16 @@ -2584,7 +2594,7 @@ $ guix build emacs --dry-run @noindent Das zeigt an, dass Substitute von @code{hydra.gnu.org} nutzbar sind und für -zukünftige Erstellungen heruntergeladen, wann immer es möglich ist. +zukünftige Erstellungen heruntergeladen werden, wann immer es möglich ist. @cindex Substitute, wie man sie ausschaltet Der Substitutsmechanismus kann global ausgeschaltet werden, indem Sie dem @@ -2603,10 +2613,10 @@ 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 -authorisierten Server sind, können sie auch vom unautorisierten Server -heruntergeladen werden. Zum Beispiel, angenommen wir haben zwei -Substitutserver mit dieser Befehlszeilenoption ausgewählt: +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: @example --substitute-urls="https://a.example.org https://b.example.org" @@ -2673,9 +2683,9 @@ einem Server verfügbaren Substitute steht. @cindex Vertrauen, gegenüber vorerstellten Binärdateien Derzeit hängt die Kontrolle jedes Individuums über seine Rechner von -Institutionen, Unternehmen undsolchen 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 +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 @code{hydra.gnu.org} zu benutzen, ermuntern wir Nutzer, auch selbst Erstellungen durchzuführen oder gar ihre eigene Build-Farm zu betreiben, damit @code{hydra.gnu.org} ein weniger interessantes Ziel wird. Eine Art, @@ -2689,14 +2699,15 @@ 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 Entwicklern zu ermöglichen, -nichtdeterministische Paketerstellungen zu finden (@pxref{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 (@pxref{build-check, -@command{guix build --check}}). - -In Zukunft wollen wir, dass Guix Binärdateien an und von Nutzern in einem -Peer-to-Peer veröffentlichen kann. Wenn Sie mit uns dieses Projekt +ermöglichen, Substitutserver zu beurteilen, und Entwickler dabei zu +unterstützen, nichtdeterministische Paketerstellungen zu finden +(@pxref{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 (@pxref{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 diskuttieren möchten, kommen Sie auf unsere Mailing-Liste @email{guix-devel@@gnu.org}. @@ -2775,7 +2786,7 @@ Store irreparabel beschädigen! Der Müllsammler kennt eine Reihe von @dfn{Wurzeln}: Jede Datei in @file{/gnu/store}, die von einer Wurzel aus erreichbar ist, gilt als @dfn{lebendig} und kann nicht entfernt werden; jede andere Datei gilt als -@dfn{tot} und ist ein Kandidat, gelöscht zu werden. Die Reihe der +@dfn{tot} 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 @@ -2789,7 +2800,7 @@ dazu @code{guix package --delete-generations} aus (@pxref{Aufruf von guix packag 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 5@tie{}GB are auf Ihrer Platte zur +sicherzustellen, dass Sie mindestens 5@tie{}GB auf Ihrer Platte zur Verfügung haben, benutzen Sie einfach: @example @@ -2802,7 +2813,7 @@ Erklärung, wie man das in GuixSD 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 wiedeer +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, @@ -2886,7 +2897,7 @@ Liste ist der @dfn{transitive Abschluss} dieser Store-Dateien. Der Abschnitt @xref{Aufruf von guix size} erklärt ein Werkzeug, um den Speicherbedarf des Abschlusses eines Elements zu ermitteln. Siehe -@xref{Aufruf von guix graph} für ein Werkzeug, um den Referenzgraph zu +@xref{Aufruf von guix graph} für ein Werkzeug, um den Referenzgraphen zu veranschaulichen. @item --derivers @@ -2978,27 +2989,23 @@ 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 -@command{guix 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. +Any user can update their Guix copy using @command{guix pull}, and the +effect is limited to the user who run @command{guix pull}. For instance, +when user @code{root} runs @command{guix pull}, this has no effect on the +version of Guix that user @code{alice} sees, and vice versa. -Das Ergebnis von @command{guix pull} ist ein als -@file{~/.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 -(@pxref{Dokumentation}): +The result of running @command{guix pull} is a @dfn{profile} available under +@file{~/.config/guix/current} containing the latest Guix. Thus, make sure +to add it to the beginning of your search path so that you use the latest +version, and similarly for the Info manual (@pxref{Dokumentation}): @example export PATH="$HOME/.config/guix/current/bin:$PATH" export INFOPATH="$HOME/.config/guix/current/share/info:$INFOPATH" @end 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. +The @code{--list-generations} or @code{-l} option lists past generations +produced by @command{guix pull}, along with details about their provenance: @example $ guix pull -l @@ -3030,10 +3037,10 @@ Generation 3 Jun 13 2018 23:31:07 (current) @ref{Invoking guix describe, @command{guix describe}}, for other ways to describe the current status of Guix. -Das Profil @code{~/.config/guix/current} verhält sich genau wie jedes andere -Profil, das von @command{guix package} erzeugt wurde (@pxref{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: +This @code{~/.config/guix/current} profile works like any other profile +created by @command{guix package} (@pxref{Aufruf von guix package}). That is, +you can list generations, roll back to the previous generation---i.e., the +previous Guix---and so on: @example $ guix package -p ~/.config/guix/current --roll-back @@ -3046,10 +3053,6 @@ Der Befehl @command{guix pull} wird in der Regel ohne Befehlszeilenargumente aufgerufen, aber er versteht auch folgende Befehlszeilenoptionen: @table @code -@item --verbose -Ausführliche Informationen ausgeben und Erstellungsprotokolle auf der -Standardfehlerausgabe ausgeben. - @item --url=@var{URL} @itemx --commit=@var{Commit} @itemx --branch=@var{Branch} @@ -3083,6 +3086,15 @@ current generation only. @itemx -p @var{Profil} Use @var{profile} instead of @file{~/.config/guix/current}. +@item --dry-run +@itemx -n +Show which channel commit(s) would be used and what would be built or +substituted but do not actually do it. + +@item --verbose +Ausführliche Informationen ausgeben und Erstellungsprotokolle auf der +Standardfehlerausgabe ausgeben. + @item --bootstrap Use the bootstrap Guile to build the latest Guix. This option is only useful to Guix developers. @@ -3201,8 +3213,8 @@ channel(s): @end lisp @noindent -Note that the snippet above is (as always!) Scheme code; we use @code{cons} -to add a channel the list of channels that the variable +Note that the snippet above is (as always!)@: Scheme code; we use +@code{cons} to add a channel the list of channels that the variable @code{%default-channels} is bound to (@pxref{Pairs, @code{cons} and lists,, guile, GNU Guile Reference Manual}). With this file in place, @command{guix pull} builds not only Guix but also the package modules from your own @@ -3466,8 +3478,17 @@ Produce output in the specified @var{format}, one of: produce human-readable output; @item channels produce a list of channel specifications that can be passed to @command{guix -pull -C} or installed as @file{~/.config/guix/channels.scm} (@pxref{Aufruf von guix pull}). +pull -C} or installed as @file{~/.config/guix/channels.scm} (@pxref{Aufruf von guix pull}); +@item json +@cindex JSON +produce a list of channel specifications in JSON format; +@item recutils +produce a list of channel specifications in Recutils format. @end table + +@item --profile=@var{Profil} +@itemx -p @var{Profil} +Display information about @var{profile}. @end table @node Aufruf von guix pack @@ -3599,8 +3620,8 @@ guix pack -R -S /mybin=bin bash @end example @noindent -... you can copy that pack to a machine that lacks Guix, and from your home -directory as a normal user, run: +...@: you can copy that pack to a machine that lacks Guix, and from your +home directory as a normal user, run: @example tar xf pack.tar.gz @@ -3668,8 +3689,11 @@ For instance, @code{-S /opt/gnu/bin=bin} creates a @file{/opt/gnu/bin} symlink pointing to the @file{bin} sub-directory of the profile. @item --localstatedir +@itemx --profile-name=@var{name} Include the ``local state directory'', @file{/var/guix}, in the resulting -pack. +pack, and notably the @file{/var/guix/profiles/per-user/root/@var{name}} +profile---by default @var{name} is @code{guix-profile}, which corresponds to +@file{~root/.guix-profile}. @file{/var/guix} contains the store database (@pxref{Der Store}) as well as garbage-collector roots (@pxref{Aufruf von guix gc}). Providing it in the @@ -4559,6 +4583,65 @@ The @code{install} phase installs the binaries, and it also installs the source code and @file{Cargo.toml} file. @end defvr +@cindex Clojure (programming language) +@cindex simple Clojure build system +@defvr {Scheme Variable} clojure-build-system +This variable is exported by @code{(guix build-system clojure)}. It +implements a simple build procedure for @uref{https://clojure.org/, Clojure} +packages using plain old @code{compile} in Clojure. Cross-compilation is +not supported yet. + +It adds @code{clojure}, @code{icedtea} and @code{zip} to the set of inputs. +Different packages can be specified with the @code{#:clojure}, @code{#:jdk} +and @code{#:zip} parameters, respectively. + +A list of source directories, test directories and jar names can be +specified with the @code{#:source-dirs}, @code{#:test-dirs} and +@code{#:jar-names} parameters, respectively. Compile directory and main +class can be specified with the @code{#:compile-dir} and @code{#:main-class} +parameters, respectively. Other parameters are documented below. + +This build system is an extension of @var{ant-build-system}, but with the +following phases changed: + +@table @code + +@item build +This phase calls @code{compile} in Clojure to compile source files and runs +@command{jar} to create jars from both source files and compiled files +according to the include list and exclude list specified in +@code{#:aot-include} and @code{#:aot-exclude}, respectively. The exclude +list has priority over the include list. These lists consist of symbols +representing Clojure libraries or the special keyword @code{#:all} +representing all Clojure libraries found under the source directories. The +parameter @code{#:omit-source?} decides if source should be included into +the jars. + +@item check +This phase runs tests according to the include list and exclude list +specified in @code{#:test-include} and @code{#:test-exclude}, respectively. +Their meanings are analogous to that of @code{#:aot-include} and +@code{#:aot-exclude}, except that the special keyword @code{#:all} now +stands for all Clojure libraries found under the test directories. The +parameter @code{#:tests?} decides if tests should be run. + +@item install +This phase installs all jars built previously. +@end table + +Apart from the above, this build system also contains an additional phase: + +@table @code + +@item install-doc +This phase installs all top-level files with base name matching +@var{%doc-regex}. A different regex can be specified with the +@code{#:doc-regex} parameter. All files (recursively) inside the +documentation directories specified in @code{#:doc-dirs} are installed as +well. +@end table +@end defvr + @defvr {Scheme Variable} cmake-build-system This variable is exported by @code{(guix build-system cmake)}. It implements the build procedure for packages using the @@ -4861,7 +4944,7 @@ its own directory under @file{share/emacs/site-lisp/guix.d}. @defvr {Scheme Variable} font-build-system This variable is exported by @code{(guix build-system font)}. It implements an installation procedure for font packages where upstream provides -pre-compiled TrueType, OpenType, etc. font files that merely need to be +pre-compiled TrueType, OpenType, etc.@: font files that merely need to be copied into place. It copies font files to standard locations in the output directory. @end defvr @@ -5137,8 +5220,8 @@ is the @code{derivation} procedure: #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] Build a derivation with the given arguments, and -return the resulting @code{<derivation>} object. +[#:substitutable? #t] [#:properties '()] Build a derivation with the given +arguments, and return the resulting @code{<derivation>} object. When @var{hash} and @var{hash-algo} are given, a @dfn{fixed-output derivation} is created---i.e., one whose result is known in advance, such as @@ -5171,6 +5254,9 @@ When @var{substitutable?} is false, declare that substitutes of the derivation's output should not be used (@pxref{Substitute}). This is useful, for instance, when building packages that capture details of the host CPU instruction set. + +@var{properties} must be an association list describing ``properties'' of +the derivation. It is kept as-is, uninterpreted, in the derivation. @end deffn @noindent @@ -5843,11 +5929,12 @@ monads.) [#: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] [#:guile-for-build #f] Return a -derivation @var{name} that runs @var{exp} (a gexp) with -@var{guile-for-build} (a derivation) on @var{system}; @var{exp} is stored in -a file called @var{script-name}. When @var{target} is true, it is used as -the cross-compilation target triplet for packages referred to by @var{exp}. +[#:local-build? #f] [#:substitutable? #t] @ [#:properties '()] +[#:guile-for-build #f] Return a derivation @var{name} that runs @var{exp} (a +gexp) with @var{guile-for-build} (a derivation) on @var{system}; @var{exp} +is stored in a file called @var{script-name}. When @var{target} is true, it +is used as the cross-compilation target triplet for packages referred to by +@var{exp}. @var{modules} is deprecated in favor of @code{with-imported-modules}. Its meaning is to make @var{modules} available in the evaluation context of @@ -6279,6 +6366,10 @@ end of the build log. This is useful when debugging build issues. @xref{Fehlschläge beim Erstellen untersuchen}, for tips and tricks on how to debug build issues. +This option has no effect when connecting to a remote daemon with a +@code{guix://} URI (@pxref{Der Store, the @code{GUIX_DAEMON_SOCKET} +variable}). + @item --keep-going @itemx -k Keep going when some of the derivations fail to build; return only once all @@ -6487,6 +6578,38 @@ library, the application binary interface (ABI) of those libraries must be compatible. If @var{replacement} is somehow incompatible with @var{package}, then the resulting package may be unusable. Use with care! +@item --with-branch=@var{package}=@var{branch} +@cindex Git, using the latest commit +@cindex latest commit, building +Build @var{package} from the latest commit of @var{branch}. The +@code{source} field of @var{package} must be 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}. + +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: + +@example +guix build --with-branch=guile-sqlite3=master cuirass +@end example + +@cindex 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. + +@item --with-commit=@var{package}=@var{commit} +This is similar to @code{--with-branch}, except that it builds from +@var{commit} rather than the tip of a branch. @var{commit} must be a valid +Git commit SHA1 identifier. @end table @node Zusätzliche Erstellungsoptionen @@ -6568,7 +6691,7 @@ The following derivations will be built: @item transitive Build the source derivations of all packages, as well of all transitive -inputs to the packages. This can be used e.g. to prefetch package source +inputs to the packages. This can be used e.g.@: to prefetch package source for later offline building. @example @@ -7565,7 +7688,7 @@ Use @var{host} as the OpenPGP key server when importing a public key. @end table The @code{github} updater uses the @uref{https://developer.github.com/v3/, -GitHub API} to query for new releases. When used repeatedly e.g. when +GitHub API} to query for new releases. When used repeatedly e.g.@: when refreshing all packages, GitHub will eventually refuse to answer any further API requests. By default 60 API requests per hour are allowed, and a full refresh on all GitHub packages in Guix requires more than this. @@ -7601,7 +7724,7 @@ Identify inputs that should most likely be native inputs. @itemx source-file-name Probe @code{home-page} and @code{source} URLs and report those that are invalid. Suggest a @code{mirror://} URL when applicable. Check that the -source file name is meaningful, e.g. is not just a version number or +source file name is meaningful, e.g.@: is not just a version number or ``git-checkout'', without a declared @code{file-name} (@pxref{„origin“-Referenz}). @item cve @@ -7858,7 +7981,7 @@ This shows the @emph{reverse} DAG of packages. For example: guix graph --type=reverse-package ocaml @end example -... yields the graph of packages that depend on OCaml. +...@: yields the graph of packages that depend on OCaml. Note that for core packages this can yield huge graphs. If all you want is to know the number of packages that depend on a given package, use @@ -7874,7 +7997,7 @@ For instance, the following command: guix graph --type=bag-emerged coreutils | dot -Tpdf > dag.pdf @end example -... yields this bigger graph: +...@: yields this bigger graph: @image{images/coreutils-bag-graph,,5in,Detailed dependency graph of the GNU Coreutils} @@ -8044,7 +8167,7 @@ fi @end example @noindent -... or to browse the profile: +...@: or to browse the profile: @example $ ls "$GUIX_ENVIRONMENT/bin" @@ -9112,7 +9235,8 @@ Falls dieser Befehl fehlschlägt, weil Sie nicht über den nötigen importieren: @example -$ gpg --keyserver pgp.mit.edu --recv-keys @value{OPENPGP-SIGNING-KEY-ID} +$ gpg --keyserver @value{KEY-SERVER} \ + --recv-keys @value{OPENPGP-SIGNING-KEY-ID} @end example @noindent @@ -9455,7 +9579,7 @@ target root file system, say, as @file{/mnt/etc/config.scm}. Failing to do that, you will have lost your configuration file once you have rebooted into the newly-installed system. -@xref{Das Konfigurationssystems nutzen}, for an overview of the configuration +@xref{Das Konfigurationssystem nutzen}, for an overview of the configuration file. The example configurations discussed in that section are available under @file{/etc/configuration} in the installation image. Thus, to get started with a system configuration providing a graphical display server (a @@ -9632,29 +9756,27 @@ instantiated. Then we show how this mechanism can be extended, for instance to support new system services. @menu -* Das Konfigurationssystems nutzen:: Ihr GNU-System anpassen +* Das Konfigurationssystem nutzen:: Ihr GNU-System anpassen. * „operating-system“-Referenz:: Details der Betriebssystem-Deklarationen. * Dateisysteme:: Die Dateisystemeinbindungen konfigurieren. -* Abgebildete Geräte:: Zusatzverarbeitungsschritte für blockbasierte - Geräte. +* Abgebildete Geräte:: Näheres zu blockorientierten Speichermedien. * Benutzerkonten:: Benutzerkonten festlegen. -* Locales:: Sprach- und kulturelle - Konventionseinstellungen. +* Locales:: Sprache und kulturelle Konventionen. * Dienste:: Systemdienste festlegen. -* Setuid-Programme:: Programme mit Administratorrechten ausführen +* 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:: Instanzierung einer Systemkonfiguration +* Aufruf von guix system:: Instanzierung einer Systemkonfiguration. * GuixSD in einer VM starten:: Wie man GuixSD in einer virtuellen Maschine startet. * Dienste definieren:: Neue Dienstdefinitionen hinzufügen. @end menu -@node Das Konfigurationssystems nutzen -@subsection Das Konfigurationssystems nutzen +@node Das Konfigurationssystem nutzen +@subsection Das Konfigurationssystem nutzen The operating system is configured by providing an @code{operating-system} declaration in a file that can then be passed to the @command{guix system} @@ -9708,10 +9830,9 @@ environment variable---in addition to the per-user profiles (@pxref{Aufruf von g one would expect for basic user and administrator tasks---including the GNU Core Utilities, the GNU Networking Utilities, the GNU Zile lightweight text editor, @command{find}, @command{grep}, etc. The example above adds -GNU@tie{}Screen and OpenSSH to those, taken from the @code{(gnu packages -screen)} and @code{(gnu packages ssh)} modules (@pxref{Paketmodule}). -The @code{(list package output)} syntax can be used to add a specific output -of a package: +GNU@tie{}Screen to those, taken from the @code{(gnu packages screen)} module +(@pxref{Paketmodule}). The @code{(list package output)} syntax can be +used to add a specific output of a package: @lisp (use-modules (gnu packages)) @@ -9885,12 +10006,12 @@ GuixSD. Make sure to visit it! @subsection @code{operating-system} Reference This section summarizes all the options available in @code{operating-system} -declarations (@pxref{Das Konfigurationssystems nutzen}). +declarations (@pxref{Das Konfigurationssystem nutzen}). @deftp {Data Type} operating-system This is the data type representing an operating system configuration. By that, we mean all the global system configuration, not per-user -configuration (@pxref{Das Konfigurationssystems nutzen}). +configuration (@pxref{Das Konfigurationssystem nutzen}). @table @asis @item @code{kernel} (default: @var{linux-libre}) @@ -9912,9 +10033,9 @@ The list of Linux kernel modules that need to be available in the initial RAM disk. @xref{Initiale RAM-Disk}. @item @code{initrd} (default: @code{base-initrd}) -A monadic procedure that returns an initial RAM disk for the Linux kernel. -This field is provided to support low-level customization and should rarely -be needed for casual use. @xref{Initiale RAM-Disk}. +A procedure that returns an initial RAM disk for the Linux kernel. This +field is provided to support low-level customization and should rarely be +needed for casual use. @xref{Initiale RAM-Disk}. @item @code{firmware} (default: @var{%base-firmware}) @cindex firmware @@ -10035,7 +10156,7 @@ that only @code{root} and members of the @code{wheel} group may use @subsection Dateisysteme The list of file systems to be mounted is specified in the -@code{file-systems} field of the operating system declaration (@pxref{Das Konfigurationssystems nutzen}). Each file system is declared using the +@code{file-systems} field of the operating system declaration (@pxref{Das Konfigurationssystem nutzen}). Each file system is declared using the @code{file-system} form, like this: @example @@ -10577,7 +10698,7 @@ libc 2.21 and the current version of libc in @cindex system services An important part of preparing an @code{operating-system} declaration is -listing @dfn{system services} and their configuration (@pxref{Das Konfigurationssystems nutzen}). System services are typically daemons launched when +listing @dfn{system services} and their configuration (@pxref{Das Konfigurationssystem nutzen}). System services are typically daemons launched when the system boots, or other actions needed at that time---e.g., configuring network access. @@ -10593,11 +10714,14 @@ Manual}). For example: The above command, run as @code{root}, lists the currently defined services. The @command{herd doc} command shows a synopsis of the given -service: +service and its associated actions: @example # 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. @end example The @command{start}, @command{stop}, and @command{restart} sub-commands have @@ -10616,7 +10740,7 @@ The following sections document the available services, starting with the core services, that may be used in an @code{operating-system} declaration. @menu -* Basisdienste:: Essenzielle Systemdienste +* Basisdienste:: Essenzielle Systemdienste. * Geplante Auftragsausführung:: Der mcron-Dienst. * Log-Rotation:: Der rottlog-Dienst. * Netzwerkdienste:: Netzwerkeinrichtung, SSH-Daemon etc. @@ -10624,7 +10748,7 @@ core services, that may be used in an @code{operating-system} declaration. * Druckdienste:: Unterstützung für lokale und entfernte Drucker. * Desktop-Dienste:: D-Bus- und Desktop-Dienste. -* Tondienste:: Dienste für ALSA und Pulseaudio. +* Sound Services:: ALSA and Pulseaudio services. * Datenbankdienste:: SQL-Datenbanken, Schlüssel-Wert-Speicher etc. * Mail-Dienste:: IMAP, POP3, SMTP und so weiter. * Kurznachrichtendienste:: Dienste für Kurznachrichten. @@ -10636,7 +10760,7 @@ core services, that may be used in an @code{operating-system} declaration. * DNS-Dienste:: DNS-Daemons. * VPN-Dienste:: VPN-Daemons. * Network File System:: Dienste mit Bezug zum Netzwerkdateisystem. -* Kontinuierliche Integration:: Der Cuirass-Dienst +* Kontinuierliche Integration:: Der Cuirass-Dienst. * Power Management Services:: Extending battery life. * Audio-Dienste:: Der MPD. * Virtualisierungsdienste:: Dienste für virtuelle Maschinen. @@ -10795,7 +10919,7 @@ the Linux command line, agetty will extract the device name of the serial port from it and use that. In both cases, agetty will leave the other serial device settings (baud rate -etc.) alone---in the hope that Linux pinned them to the correct values. +etc.)@: alone---in the hope that Linux pinned them to the correct values. @item @code{baud-rate} (default: @code{#f}) A string containing a comma-separated list of one or more baud rates, in @@ -10964,6 +11088,10 @@ is @command{login} from the Shadow tool suite. @item @code{login-arguments} (default: @code{'("-p")}) A list of arguments to pass to @command{login}. +@item @code{auto-login} (default: @code{#f}) +When passed a login name, as a string, the specified user will be logged in +automatically without prompting for their login name or password. + @item @code{hardware-acceleration?} (default: #f) Whether to use hardware acceleration. @@ -10979,6 +11107,28 @@ The Kmscon package to use. [#:name-services '()] Return a service that runs the libc name service cache daemon (nscd) with the given @var{config}---an @code{<nscd-configuration>} object. @xref{Name Service Switch}, for an example. + +For convenience, the Shepherd service for nscd provides the following +actions: + +@table @code +@item invalidate +@cindex cache invalidation, nscd +@cindex nscd, cache invalidation +This invalidate the given cache. For instance, running: + +@example +herd invalidate nscd hosts +@end example + +@noindent +invalidates the host name lookup cache of nscd. + +@item statistics +Running @command{herd statistics nscd} displays information about nscd usage +and caches. +@end table + @end deffn @defvr {Scheme Variable} %nscd-default-configuration @@ -11808,7 +11958,7 @@ Data Type representing the configuration of connman. The connman package to use. @item @code{disable-vpn?} (default: @code{#f}) -When true, enable connman's vpn plugin. +When true, disable connman's vpn plugin. @end table @end deftp @@ -11848,7 +11998,7 @@ List of additional command-line arguments to pass to the daemon. @cindex iptables @defvr {Scheme Variable} iptables-service-type -This is the service type to set up an iptables configuration. iptables is a +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 @@ -11897,7 +12047,7 @@ objects}). @cindex NTP (Network Time Protocol), service @cindex real time clock @defvr {Scheme Variable} ntp-service-type -This is the type of the service running the the @uref{http://www.ntp.org, +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. @@ -12057,14 +12207,14 @@ to new service requests. @item @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 +separated by a colon or period, i.e.@: @code{"user"}, @code{"user:group"} or @code{"user.group"}. @item @code{program} (default: @code{"internal"}) The server program which will serve the requests, or @code{"internal"} if @command{inetd} should use a built-in service. @item @code{arguments} (default: @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 +arguments, starting with the zeroth argument, i.e.@: the name of the program itself. For @command{inetd}'s internal services, this entry must be @code{'()} or @code{'("internal")}. @end table @@ -12325,7 +12475,7 @@ Whether to allow TCP forwarding. Whether to allow gateway ports. @item @code{challenge-response-authentication?} (default: @code{#f}) -Specifies whether challenge response authentication is allowed (e.g. via +Specifies whether challenge response authentication is allowed (e.g.@: via PAM). @item @code{use-pam?} (default: @code{#t}) @@ -12345,7 +12495,7 @@ Specifies whether @command{sshd} should print the date and time of the last user login when a user logs in interactively. @item @code{subsystems} (default: @code{'(("sftp" "internal-sftp"))}) -Configures external subsystems (e.g. file transfer daemon). +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 @@ -13928,15 +14078,15 @@ keyboard or mouse. Users need to be in the @code{lp} group to access the D-Bus service. @end deffn -@node Tondienste -@subsubsection Tondienste +@node Sound Services +@subsubsection Sound Services @cindex sound support @cindex ALSA @cindex PulseAudio, sound support The @code{(gnu services sound)} module provides a service to configure the -Advanced Linux Sound Architecture (ALSA) system, which making PulseAudio the +Advanced Linux Sound Architecture (ALSA) system, which makes PulseAudio the preferred ALSA output driver. @deffn {Scheme Variable} alsa-service-type @@ -14304,10 +14454,29 @@ Whether to use SSL for this service; @samp{yes}, @samp{no}, or @end deftypevr +@deftypevr {@code{service-configuration} 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}. + +@end deftypevr + @deftypevr {@code{service-configuration} 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}. + +@end deftypevr + +@deftypevr {@code{service-configuration} parameter} non-negative-integer process-limit +Maximum number of processes that can exist for this service. If set to 0, +@code{default-process-limit} is used instead. + +Defaults to @samp{0}. + @end deftypevr @deftypevr {@code{service-configuration} parameter} non-negative-integer process-min-avail @@ -14481,13 +14650,13 @@ Typically you would specify your IMAP proxy servers here. Defaults to @end deftypevr @deftypevr {@code{dovecot-configuration} parameter} space-separated-string-list login-access-sockets -List of login access check sockets (e.g. tcpwrap). Defaults to @samp{()}. +List of login access check sockets (e.g.@: tcpwrap). Defaults to @samp{()}. @end deftypevr @deftypevr {@code{dovecot-configuration} 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). +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}. @end deftypevr @@ -14495,7 +14664,7 @@ Defaults to @samp{#f}. 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}. +if the upgrade is e.g.@: due to a security fix). Defaults to @samp{#t}. @end deftypevr @deftypevr {@code{dovecot-configuration} parameter} non-negative-integer doveadm-worker-count @@ -14517,13 +14686,13 @@ pairs to always set specific settings. @deftypevr {@code{dovecot-configuration} 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 +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}. @end deftypevr @deftypevr {@code{dovecot-configuration} parameter} non-negative-integer auth-cache-size -Authentication cache size (e.g. @samp{#e10e6}). 0 means it's disabled. +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}. @end deftypevr @@ -14573,7 +14742,7 @@ Defaults to @samp{""}. @deftypevr {@code{dovecot-configuration} 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 +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 @samp{@@} into @samp{-AT-}. This translation is done after @samp{auth-username-translation} changes. Defaults to @samp{"%Lu"}. @@ -14581,10 +14750,11 @@ drop away the domain if it was given, or @samp{%n-AT-%d} would change the @deftypevr {@code{dovecot-configuration} 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 @samp{*} as -the separator, so that could be a good choice. Defaults to @samp{""}. +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 +@samp{*} as the separator, so that could be a good choice. Defaults to +@samp{""}. @end deftypevr @deftypevr {@code{dovecot-configuration} parameter} string auth-anonymous-username @@ -14594,7 +14764,7 @@ Defaults to @samp{"anonymous"}. @deftypevr {@code{dovecot-configuration} 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 +blocking passdb and userdb queries (e.g.@: MySQL and PAM). They're automatically created and destroyed as needed. Defaults to @samp{30}. @end deftypevr @@ -14698,8 +14868,8 @@ Defaults to @samp{#f}. 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}. +again. You can also truncate the value to n chars by appending ":n" (e.g.@: +sha1:6). Defaults to @samp{#f}. @end deftypevr @deftypevr {@code{dovecot-configuration} parameter} boolean auth-debug? @@ -14747,7 +14917,7 @@ possible variables you can use. Defaults to Format to use for logging mail deliveries. You can use variables: @table @code @item %$ -Delivery status message (e.g. @samp{saved to INBOX}) +Delivery status message (e.g.@: @samp{saved to INBOX}) @item %m Message-ID @item %s @@ -14768,7 +14938,7 @@ 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) +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. @@ -14816,8 +14986,8 @@ Typically this is set to "mail" to give access to /var/mail. Defaults to @deftypevr {@code{dovecot-configuration} 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' +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{""}. @end deftypevr @@ -14825,8 +14995,8 @@ it). Defaults to @samp{""}. @deftypevr {@code{dovecot-configuration} 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}. +both maildir and mboxes, allowing you to prefix mailboxes names with e.g.@: +/path/ or ~user/. Defaults to @samp{#f}. @end deftypevr @deftypevr {@code{dovecot-configuration} parameter} boolean mmap-disable? @@ -14846,7 +15016,7 @@ When to use fsync() or fdatasync() calls: @item optimized Whenever necessary to avoid losing important data @item always -Useful with e.g. NFS when write()s are delayed +Useful with e.g.@: NFS when write()s are delayed @item never Never use it (best performance, but crashes can lose data). @end table @@ -14907,7 +15077,7 @@ to create new keywords. Defaults to @samp{50}. @deftypevr {@code{dovecot-configuration} 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 +(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 @@ -14918,10 +15088,10 @@ shell access for users. <doc/wiki/Chrooting.txt>. Defaults to @samp{()}. @deftypevr {@code{dovecot-configuration} 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}. +(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{""}. @end deftypevr @@ -14938,7 +15108,7 @@ Directory where to look up mail plugins. Defaults to @deftypevr {@code{dovecot-configuration} 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 +etc.@: are added to this list in their own .conf files. Defaults to @samp{()}. @end deftypevr @@ -15049,9 +15219,9 @@ aren't immediately visible to other MUAs. Defaults to @samp{#t}. @end deftypevr @deftypevr {@code{dovecot-configuration} 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}. +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}. @end deftypevr @deftypevr {@code{dovecot-configuration} parameter} non-negative-integer mdbox-rotate-size @@ -15104,8 +15274,8 @@ Defaults to @samp{"sis posix"}. Hash format to use in attachment filenames. You can add any text and variables: @code{%@{md4@}}, @code{%@{md5@}}, @code{%@{sha1@}}, @code{%@{sha256@}}, @code{%@{sha512@}}, @code{%@{size@}}. Variables can be -truncated, e.g. @code{%@{sha256:80@}} returns only first 80 bits. Defaults -to @samp{"%@{sha1@}"}. +truncated, e.g.@: @code{%@{sha256:80@}} returns only first 80 bits. +Defaults to @samp{"%@{sha1@}"}. @end deftypevr @deftypevr {@code{dovecot-configuration} parameter} non-negative-integer default-process-limit @@ -15162,7 +15332,7 @@ Defaults to @samp{""}. @deftypevr {@code{dovecot-configuration} 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 +certificate(s) followed by the matching CRL(s). (e.g.@: @samp{ssl-ca </etc/ssl/certs/ca.pem}). Defaults to @samp{""}. @end deftypevr @@ -15203,9 +15373,9 @@ domain. Defaults to @samp{"postmaster@@%d"}. @end deftypevr @deftypevr {@code{dovecot-configuration} 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{""}. +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{""}. @end deftypevr @deftypevr {@code{dovecot-configuration} parameter} boolean quota-full-tempfail? @@ -15289,7 +15459,7 @@ body_bytes=%@{fetch_body_bytes@}"}. @deftypevr {@code{dovecot-configuration} 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 +the given capabilities on top of the defaults (e.g.@: +XFOO XBAR). Defaults to @samp{""}. @end deftypevr @@ -15327,7 +15497,7 @@ extra @samp{/} suffixes to mailbox names. This option causes Dovecot to ignore the extra @samp{/} instead of treating it as invalid mailbox name. @item tb-lsub-flags -Show \Noselect flags for LSUB replies with LAYOUT=fs (e.g. mbox). This +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. @end table @@ -15826,10 +15996,10 @@ The name to return in service discovery responses. Defaults to @deftypevr {@code{mod-muc-configuration} 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. @samp{user@@example.com} can create rooms on @samp{rooms.example.com}. -The value @samp{"admin"} restricts to service administrators only. Defaults -to @samp{#f}. +creation to users on the service's parent domain. E.g.@: +@samp{user@@example.com} can create rooms on @samp{rooms.example.com}. The +value @samp{"admin"} restricts to service administrators only. Defaults to +@samp{#f}. @end deftypevr @deftypevr {@code{mod-muc-configuration} parameter} non-negative-integer max-history-messages @@ -16036,11 +16206,11 @@ opus audio codec. How deep channels can be nested at maximum. @item @code{channelname-regex} (default: @code{#f}) -A string in from of a Qt regular expression that channel names must conform +A string in form of a Qt regular expression that channel names must conform to. @item @code{username-regex} (default: @code{#f}) -A string in from of a Qt regular expression that user names must conform to. +A string in form of a Qt regular expression that user names must conform to. @item @code{text-message-length} (default: @code{5000}) Maximum size in bytes that a user can send in one text chat message. @@ -16053,7 +16223,7 @@ 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. -@item @code{remember-channel?} (defualt @code{#f}) +@item @code{remember-channel?} (default: @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. @@ -16080,7 +16250,7 @@ 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. -@item @code{obfuscate-ips?} (default @code{#t}) +@item @code{obfuscate-ips?} (default: @code{#t}) Should logged ips be obfuscated to protect the privacy of users. @item @code{ssl-cert} (default: @code{#f}) @@ -16477,7 +16647,7 @@ nginx web server, and also a fastcgi wrapper daemon. @deffn {Scheme Variable} httpd-service-type Service type for the @uref{https://httpd.apache.org/,Apache HTTP} server (@dfn{httpd}). The value for this service type is a -@code{https-configuration} record. +@code{httpd-configuration} record. A simple example configuration is given below. @@ -16836,10 +17006,10 @@ Name for this group of servers. @item @code{servers} Specify the addresses of the servers in the group. The address can be -specified as a IP address (e.g. @samp{127.0.0.1}), domain name -(e.g. @samp{backend1.example.com}) or a path to a UNIX socket using the -prefix @samp{unix:}. For addresses using an IP address or domain name, the -default port is 80, and a different port can be specified explicitly. +specified as a IP address (e.g.@: @samp{127.0.0.1}), domain name (e.g.@: +@samp{backend1.example.com}) or a path to a UNIX socket using the prefix +@samp{unix:}. For addresses using an IP address or domain name, the default +port is 80, and a different port can be specified explicitly. @end table @end deftp @@ -16907,7 +17077,7 @@ name starts with a forward slash, it is interpreted as an absolute directory name. Pass the @code{-n} argument to other Varnish programs to connect to the -named instance, e.g. @command{varnishncsa -n default}. +named instance, e.g.@: @command{varnishncsa -n default}. @item @code{backend} (default: @code{"localhost:8080"}) The backend to use. This option has no effect if @code{vcl} is set. @@ -17028,7 +17198,7 @@ and different php.ini (replaces safe_mode) a special function to finish request & flush all data while continuing to do something time-consuming (video converting, stats processing, etc.) @end itemize -... and much more. +...@: and much more. @defvr {Scheme Variable} php-fpm-service-type A Service type for @code{php-fpm}. @@ -17274,7 +17444,8 @@ The certbot service automates this process: the initial key generation, the initial certification request to the Let's Encrypt service, the web server challenge/response integration, writing the certificate to disk, the automated periodic renewals, and the deployment tasks associated with the -renewal (e.g. reloading services, copying keys with different permissions). +renewal (e.g.@: reloading services, copying keys with different +permissions). Certbot is run twice a day, at a random minute within the hour. It won't do anything until your certificates are due for renewal or revoked, but running @@ -18507,6 +18678,11 @@ Cuirass jobs. Location of sqlite database which contains the build results and previously added specifications. +@item @code{ttl} (default: @code{(* 30 24 3600)}) +Specifies the time-to-live (TTL) in seconds of garbage collector roots that +are registered for build results. This means that build results are +protected from garbage collection for at least @var{ttl} seconds. + @item @code{port} (default: @code{8081}) Port number used by the HTTP server. @@ -20348,8 +20524,8 @@ Defaults to @samp{"/favicon.ico"}. @deftypevr {@code{cgit-configuration} parameter} string footer The content of the file specified with this option will be included verbatim -at the bottom of all pages (i.e. it replaces the standard "generated by..." -message). +at the bottom of all pages (i.e.@: it replaces the standard "generated +by..."@: message). Defaults to @samp{""}. @@ -21336,7 +21512,7 @@ be setuid root. The @code{setuid-programs} field of an @code{operating-system} declaration contains a list of G-expressions denoting the names of programs to be -setuid-root (@pxref{Das Konfigurationssystems nutzen}). For instance, the +setuid-root (@pxref{Das Konfigurationssystem nutzen}). For instance, the @command{passwd} program, which is part of the Shadow package, can be designated by this G-expression (@pxref{G-Ausdrücke}): @@ -21660,11 +21836,11 @@ customize it further. @cindex initrd @cindex initial RAM disk -@deffn {Monadic Procedure} raw-initrd @var{file-systems} @ +@deffn {Scheme Procedure} raw-initrd @var{file-systems} @ [#:linux-modules '()] [#:mapped-devices '()] @ [#:helper-packages '()] -[#:qemu-networking? #f] [#:volatile-root? #f] Return a monadic derivation -that builds a raw initrd. @var{file-systems} is a list of file systems to -be mounted by the initrd, possibly in addition to the root file system +[#:qemu-networking? #f] [#:volatile-root? #f] Return a derivation that +builds a raw initrd. @var{file-systems} is a list of file systems to be +mounted by the initrd, possibly in addition to the root file system specified on the kernel command line via @code{--root}. @var{linux-modules} is a list of kernel modules to be loaded at boot time. @var{mapped-devices} is a list of device mappings to realize before @var{file-systems} are @@ -21681,14 +21857,14 @@ When @var{volatile-root?} is true, the root file system is writable but any changes to it are lost. @end deffn -@deffn {Monadic Procedure} base-initrd @var{file-systems} @ +@deffn {Scheme Procedure} base-initrd @var{file-systems} @ [#:mapped-devices '()] [#:qemu-networking? #f] [#:volatile-root? #f]@ -[#:linux-modules '()] Return a monadic derivation that builds a generic -initrd, with kernel modules taken from @var{linux}. @var{file-systems} is a -list of file-systems to be mounted by the initrd, possibly in addition to -the root file system specified on the kernel command line via -@code{--root}. @var{mapped-devices} is a list of device mappings to realize -before @var{file-systems} are mounted. +[#:linux-modules '()] Return as a file-like object a generic initrd, with +kernel modules taken from @var{linux}. @var{file-systems} is a list of +file-systems to be mounted by the initrd, possibly in addition to the root +file system specified on the kernel command line via @code{--root}. +@var{mapped-devices} is a list of device mappings to realize before +@var{file-systems} are mounted. @var{qemu-networking?} and @var{volatile-root?} behaves as in @code{raw-initrd}. @@ -21704,11 +21880,12 @@ Guile, and the initialization program is a Guile program. That gives a lot of flexibility. The @code{expression->initrd} procedure builds such an initrd, given the program to run in that initrd. -@deffn {Monadic Procedure} expression->initrd @var{exp} @ - [#:guile %guile-static-stripped] [#:name "guile-initrd"] Return a derivation -that builds a Linux initrd (a gzipped cpio archive) containing @var{guile} -and that evaluates @var{exp}, a G-expression, upon booting. All the -derivations referenced by @var{exp} are automatically copied to the initrd. +@deffn {Scheme Procedure} expression->initrd @var{exp} @ + [#:guile %guile-static-stripped] [#:name "guile-initrd"] Return as a +file-like object a Linux initrd (a gzipped cpio archive) containing +@var{guile} and that evaluates @var{exp}, a G-expression, upon booting. All +the derivations referenced by @var{exp} are automatically copied to the +initrd. @end deffn @node Bootloader-Konfiguration @@ -21951,7 +22128,7 @@ This effects all the configuration specified in @var{file}: user accounts, system services, global package list, setuid programs, etc. The command starts system services specified in @var{file} that are not currently running; if a service is currently running this command will arrange for it -to be upgraded the next time it is stopped (eg. by @code{herd stop X} or +to be upgraded the next time it is stopped (e.g.@: by @code{herd stop X} or @code{herd restart X}). This command creates a new generation whose number is one greater than the @@ -22416,7 +22593,7 @@ in the first place? And what is a service anyway? @menu * Dienstkompositionen:: Wie Dienste zusammengestellt werden. * Diensttypen und Dienste:: Typen und Dienste. -* Service-Referenz:: Referenz zur Programmierschnittstelle +* Service-Referenz:: Referenz zur Programmierschnittstelle. * Shepherd-Dienste:: Eine spezielle Art von Dienst. @end menu @@ -22702,7 +22879,7 @@ created using @code{define-record-type*}, you can write a succinct @var{body} that evaluates to the new service parameters by using the @code{inherit} feature that @code{define-record-type*} provides. -@xref{Das Konfigurationssystems nutzen}, for example usage. +@xref{Das Konfigurationssystem nutzen}, for example usage. @end deffn @@ -22842,7 +23019,7 @@ as PID@tie{}1 (@pxref{Einführung,,, shepherd, The GNU Shepherd Manual}). Services in the Shepherd can depend on each other. For instance, the SSH daemon may need to be started after the syslog daemon has been started, which in turn can only happen once all the file systems have been mounted. -The simple operating system defined earlier (@pxref{Das Konfigurationssystems nutzen}) results in a service graph like this: +The simple operating system defined earlier (@pxref{Das Konfigurationssystem nutzen}) results in a service graph like this: @image{images/shepherd-graph,,5in,Typical shepherd service graph.} @@ -23585,7 +23762,7 @@ 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 @code{python-dateutil} and @code{python2-dateutil}. If the project name -starts with @code{py} (e.g. @code{pytz}), we keep it and prefix it as +starts with @code{py} (e.g.@: @code{pytz}), we keep it and prefix it as described above. @subsubsection Specifying Dependencies @@ -23918,7 +24095,7 @@ updated to refer to these binaries on the target platform. That is, the hashes and URLs of the bootstrap tarballs for the new platform must be added alongside those of the currently supported platforms. The bootstrap Guile tarball is treated specially: it is expected to be available locally, and -@file{gnu/local.mk} has rules do download it for the supported +@file{gnu/local.mk} has rules to download it for the supported architectures; a rule for the new platform must be added as well. In practice, there may be some complications. First, it may be that the |