diff options
author | Ludovic Courtès <ludo@gnu.org> | 2019-04-17 14:06:30 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2019-04-17 14:06:30 +0200 |
commit | c04052e4dfeb8cd6abd84d7c9009bae81f4b8686 (patch) | |
tree | fb1b9d90e9e7976705d3645bdcdb561c8c54eba0 /doc | |
parent | 72f749dcb83dbda9f98e28fa3622cc1d3db6275a (diff) | |
download | guix-c04052e4dfeb8cd6abd84d7c9009bae81f4b8686.tar guix-c04052e4dfeb8cd6abd84d7c9009bae81f4b8686.tar.gz |
nls: Update 'de' translation of the manual.
Diffstat (limited to 'doc')
-rw-r--r-- | doc/contributing.de.texi | 757 | ||||
-rw-r--r-- | doc/guix.de.texi | 8180 |
2 files changed, 5197 insertions, 3740 deletions
diff --git a/doc/contributing.de.texi b/doc/contributing.de.texi index 259523aa6f..6a999baece 100644 --- a/doc/contributing.de.texi +++ b/doc/contributing.de.texi @@ -6,7 +6,7 @@ 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 sein könnte. Besonders willkommen ist Hilfe bei der -Erstellung von Paketen (@pxref{Paketrichtlinien}). +Erstellung von Paketen (siehe @ref{Paketrichtlinien}). @cindex Verhaltensregeln, für Mitwirkende @cindex Verhaltenskodex für Mitwirkende @@ -43,8 +43,8 @@ git clone https://git.savannah.gnu.org/git/guix.git @end example Wenn Sie Guix aus einem Checkout erstellen, sind außer den bereits in den -Installationsanweisungen genannten Paketen weitere nötig -(@pxref{Voraussetzungen}). +Installationsanweisungen genannten Paketen weitere nötig (siehe +@ref{Voraussetzungen}). @itemize @item @url{http://gnu.org/software/autoconf/, GNU Autoconf}; @@ -64,7 +64,7 @@ an Guix zu arbeiten: guix environment guix @end example -In @xref{Aufruf von guix environment} finden Sie weitere Informationen zu +In @ref{Aufruf von guix environment} finden Sie weitere Informationen zu diesem Befehl. Zusätzliche Abhängigkeiten können mit @option{--ad-hoc} hinzugefügt werden: @@ -73,7 +73,7 @@ guix environment guix --ad-hoc help2man git strace @end example Führen Sie @command{./bootstrap} aus, um die Infrastruktur des -Erstellungssystems mit Autoconf und Automake zu erstellen. Möglicherweise +Erstellungssystems mit Autoconf und Automake zu erzeugen. Möglicherweise erhalten Sie eine Fehlermeldung wie diese: @example @@ -93,18 +93,18 @@ Befehl aufrufen: export ACLOCAL_PATH=/usr/share/aclocal @end example -In @xref{Macro Search Path,,, automake, The GNU Automake Manual} finden Sie +In @ref{Macro Search Path,,, automake, The GNU Automake Manual} finden Sie weitere Informationen. Dann führen Sie wie gewohnt @command{./configure} aus. Achten Sie darauf, @code{--localstatedir=@var{Verzeichnis}} zu übergeben, wobei @var{Verzeichnis} der von Ihrer aktuellen Installation verwendete -@code{localstatedir}-Wert ist (weitere Informationen auf @pxref{Der Store}). +@code{localstatedir}-Wert ist (weitere Informationen siehe @ref{Der Store}). 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 die @email{guix-devel@@gnu.org, Mailingliste}. +(siehe @ref{Den Testkatalog laufen lassen}). Falls etwas fehlschlägt, werfen Sie +einen Blick auf die Installationsanweisungen (siehe @ref{Installation}) oder +senden Sie eine E-Mail an die @email{guix-devel@@gnu.org, Mailingliste}. @node Guix vor der Installation ausführen @@ -118,7 +118,7 @@ Endnutzer-»Straßenanzug« und Ihrem »Faschingskostüm« unterscheiden. Zu diesem Zweck können alle Befehlszeilenwerkzeuge auch schon benutzt werden, ohne dass Sie @code{make install} laufen lassen. Dazu müssen Sie sich in einer Umgebung befinden, in der alle Abhängigkeiten von Guix -verfügbar sind (@pxref{Erstellung aus dem Git}) und darin einfach vor jeden +verfügbar sind (siehe @ref{Erstellung aus dem Git}) und darin einfach vor jeden Befehl @command{./pre-inst-env} schreiben (das Skript @file{pre-inst-env} befindet sich auf oberster Ebene im Verzeichnis, wo Guix erstellt wird, wo es durch @command{./configure} erzeugt wird), zum Beispiel so@footnote{Die @@ -144,8 +144,8 @@ $ ./pre-inst-env guile -c '(use-modules (guix utils)) (pk (%current-system))' @noindent @cindex REPL @cindex Lese-Auswerten-Schreiben-Schleife -@dots{} und auf einer REPL (@pxref{Using Guile Interactively,,, guile, Guile -Reference Manual}): +@dots{} und auf einer REPL (siehe @ref{Using Guile Interactively,,, guile, +Guile Reference Manual}): @example $ ./pre-inst-env guile @@ -169,19 +169,20 @@ nötig sind, um dies zu ermöglichen, einschließlich @env{PATH} und 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 +Verknüpfung @file{~/.config/guix/current} (siehe @ref{Aufruf von guix pull}). Um Ihren lokalen Quellbaum zu aktualisieren, müssen Sie stattdessen @command{git pull} benutzen. @node Perfekt eingerichtet @section Perfekt eingerichtet -The Perfect Setup to hack on Guix is basically the perfect setup used for -Guile hacking (@pxref{Using Guile in Emacs,,, guile, Guile Reference -Manual}). First, you need more than an editor, you need -@url{http://www.gnu.org/software/emacs, Emacs}, empowered by the wonderful -@url{http://nongnu.org/geiser/, Geiser}. To set that up, run: +Um perfekt für das Hacken an Guix eingerichtet zu sein, brauchen Sie an sich +dasselbe wie um perfekt für das Hacken mit Guile (siehe @ref{Using Guile in +Emacs,,, guile, Guile Reference Manual}). Zunächst brauchen Sie mehr als ein +Textverarbeitungsprogramm, Sie brauchen +@url{http://www.gnu.org/software/emacs, Emacs} zusammen mit den vom +wunderbaren @url{http://nongnu.org/geiser/, Geiser} verliehenen Kräften. Um +diese zu installieren, können Sie Folgendes ausführen: @example guix package -i emacs guile emacs-geiser @@ -191,8 +192,8 @@ Geiser ermöglicht interaktive und inkrementelle Entwicklung aus Emacs heraus: Code kann in Puffern kompiliert und ausgewertet werden. Zugang zu Online-Dokumentation (Docstrings) steht ebenso zur Verfügung wie kontextabhängige Vervollständigung, @kbd{M-.} um zu einer Objektdefinition -zu springen, eine REPL, um Ihren Code auszuprobieren, und mehr -(@pxref{Einführung,,, geiser, Geiser User Manual}). Zur bequemen +zu springen, eine REPL, um Ihren Code auszuprobieren, und mehr (siehe +@ref{Einführung,,, geiser, Geiser User Manual}). Zur bequemen Guix-Entwicklung sollten Sie Guiles Ladepfad so ergänzen, dass die Quelldateien in Ihrem Checkout gefunden werden. @@ -245,63 +246,69 @@ wieder weiter umgeschrieben werden kann. @node Paketrichtlinien @section Paketrichtlinien -@cindex packages, creating -The GNU distribution is nascent and may well lack some of your favorite -packages. This section describes how you can help make the distribution -grow. - -Free software packages are usually distributed in the form of @dfn{source -code tarballs}---typically @file{tar.gz} files that contain all the source -files. Adding a package to the distribution means essentially two things: -adding a @dfn{recipe} that describes how to build the package, including a -list of other packages required to build it, and adding @dfn{package -metadata} along with that recipe, such as a description and licensing -information. - -In Guix all this information is embodied in @dfn{package definitions}. -Package definitions provide a high-level view of the package. They are -written using the syntax of the Scheme programming language; in fact, for -each package we define a variable bound to the package definition, and -export that variable from a module (@pxref{Paketmodule}). However, -in-depth Scheme knowledge is @emph{not} a prerequisite for creating -packages. For more information on package definitions, @pxref{Pakete definieren}. - -Once a package definition is in place, stored in a file in the Guix source -tree, it can be tested using the @command{guix build} command -(@pxref{Aufruf von guix build}). For example, assuming the new package is -called @code{gnew}, you may run this command from the Guix build tree -(@pxref{Guix vor der Installation ausführen}): +@cindex Pakete definieren +Die GNU-Distribution ist noch sehr jung und einige Ihrer Lieblingspakete +könnten noch fehlen. Dieser Abschnitt beschreibt, wie Sie dabei helfen +können, die Distribution wachsen zu lassen. + +Pakete mit freier Software werden normalerweise in Form von @dfn{Tarballs +mit dem Quellcode} angeboten — typischerweise in +@file{tar.gz}-Archivdateien, in denen alle Quelldateien enthalten sind. Ein +Paket zur Distribution hinzuzufügen, bedeutet also zweierlei Dinge: Zum +einen fügt man ein @dfn{Rezept} ein, das beschreibt, wie das Paket erstellt +werden kann, einschließlich einer Liste von anderen Paketen, die für diese +Erstellung gebraucht werden, zum anderen fügt man @dfn{Paketmetadaten} zum +Rezept hinzu, wie zum Beispiel eine Beschreibung und Lizenzinformationen. + +In Guix sind all diese Informationen ein Teil der +@dfn{Paketdefinitionen}. In Paketdefinitionen hat man eine abstrahierte, +hochsprachliche Sicht auf das Paket. Sie werden in der Syntax der +Scheme-Programmiersprache verfasst; tatsächlich definieren wir für jedes +Paket eine Variable und binden diese an dessen Definition, um die Variable +anschließend aus einem Modul heraus zu exportieren (siehe @ref{Paketmodule}). Allerdings ist @emph{kein} tiefgehendes Wissen über Scheme +erforderlich, um Pakete zu erstellen. Mehr Informationen über +Paketdefinitionen finden Sie im Abschnitt @ref{Pakete definieren}. + +Eine fertige Paketdefinition kann, nachdem sie in eine Datei im +Quell-Verzeichnisbaum von Guix eingesetzt wurde, mit Hilfe des Befehls +@command{guix build} getestet werden (siehe @ref{Aufruf von guix build}). Wenn +das Paket zum Beispiel den Namen @code{gnew} trägt, können Sie folgenden +Befehl aus dem Erstellungs-Verzeichnisbaum von Guix heraus ausführen (siehe +@ref{Guix vor der Installation ausführen}): @example ./pre-inst-env guix build gnew --keep-failed @end example -Using @code{--keep-failed} makes it easier to debug build failures since it -provides access to the failed build tree. Another useful command-line -option when debugging is @code{--log-file}, to access the build log. +Wenn Sie @code{--keep-failed} benutzen, ist es leichter, fehlgeschlagene +Erstellungen zu untersuchen, weil dann der Verzeichnisbaum der +fehlgeschlagenen Erstellung zugänglich bleibt. Eine andere nützliche +Befehlszeilenoption bei der Fehlersuche ist @code{--log-file}, womit das +Erstellungsprotokoll eingesehen werden kann. -If the package is unknown to the @command{guix} command, it may be that the -source file contains a syntax error, or lacks a @code{define-public} clause -to export the package variable. To figure it out, you may load the module -from Guile to get more information about the actual error: +Wenn der @command{guix}-Befehl das Paket nicht erkennt, kann es daran +liegen, dass die Quelldatei einen Syntaxfehler hat oder ihr eine +@code{define-public}-Klausel fehlt, die die Paketvariable exportiert. Um das +herauszufinden, können Sie das Modul aus Guile heraus laden, um mehr +Informationen über den tatsächlichen Fehler zu bekommen: @example ./pre-inst-env guile -c '(use-modules (gnu packages gnew))' @end example -Once your package builds correctly, please send us a patch -(@pxref{Einreichen von Patches}). Well, if you need help, we will be happy to -help you too. Once the patch is committed in the Guix repository, the new -package automatically gets built on the supported platforms by -@url{http://hydra.gnu.org/jobset/gnu/master, our continuous integration -system}. +Sobald Ihr Paket erfolgreich erstellt werden kann, schicken Sie uns bitte +einen Patch (siehe @ref{Einreichen von Patches}). Wenn Sie dabei Hilfe brauchen +sollten, helfen wir gerne. Ab dem Zeitpunkt, zu dem der Patch als Commit ins +Guix-Repository eingepflegt wurde, wird das neue Paket automatisch durch +@url{http://hydra.gnu.org/jobset/gnu/master, unser System zur +Kontinuierlichen Integration} auf allen unterstützten Plattformen erstellt. -@cindex substituter -Users can obtain the new package definition simply by running @command{guix -pull} (@pxref{Aufruf von guix pull}). When @code{@value{SUBSTITUTE-SERVER}} -is done building the package, installing the package automatically downloads -binaries from there (@pxref{Substitute}). The only place where human -intervention is needed is to review and apply the patch. +@cindex Substituierer +Benutzern steht die neue Paketdefinition zur Verfügung, nachdem sie das +nächste Mal @command{guix pull} ausgeführt haben (siehe @ref{Aufruf von guix pull}). Wenn @code{@value{SUBSTITUTE-SERVER}} selbst damit fertig ist, das +Paket zu erstellen, werden bei der Installation automatisch Binärdateien von +dort heruntergeladen (siehe @ref{Substitute}). Menschliches Eingreifen muss +nur stattfinden, um den Patch zu überprüfen und anzuwenden. @menu @@ -326,67 +333,74 @@ intervention is needed is to review and apply the patch. @c @c =========================================================================== @c Adapted from http://www.gnu.org/philosophy/philosophy.html. -@cindex free software -The GNU operating system has been developed so that users can have freedom -in their computing. GNU is @dfn{free software}, meaning that users have the -@url{http://www.gnu.org/philosophy/free-sw.html,four essential freedoms}: to -run the program, to study and change the program in source code form, to -redistribute exact copies, and to distribute modified versions. Packages -found in the GNU distribution provide only software that conveys these four -freedoms. - -In addition, the GNU distribution follow the -@url{http://www.gnu.org/distros/free-system-distribution-guidelines.html,free -software distribution guidelines}. Among other things, these guidelines -reject non-free firmware, recommendations of non-free software, and discuss -ways to deal with trademarks and patents. - -Some otherwise free upstream package sources contain a small and optional -subset that violates the above guidelines, for instance because this subset -is itself non-free code. When that happens, the offending items are removed -with appropriate patches or code snippets in the @code{origin} form of the -package (@pxref{Pakete definieren}). This way, @code{guix build --source} -returns the ``freed'' source rather than the unmodified upstream source. +@cindex freie Software +Das GNU-Betriebssystem wurde entwickelt, um Menschen Freiheit bei der +Nutzung ihrer Rechengeräte zu ermöglichen. GNU ist @dfn{freie Software}, was +bedeutet, dass Benutzer die +@url{http://www.gnu.org/philosophy/free-sw.de.html,vier wesentlichen +Freiheiten} haben: das Programm auszuführen, es zu untersuchen, das Programm +in Form seines Quellcodes anzupassen und exakte Kopien ebenso wie +modifizierte Versionen davon an andere weiterzugeben. Die Pakete, die Sie in +der GNU-Distribution finden, stellen ausschließlich solche Software zur +Verfügung, die Ihnen diese vier Freiheiten gewährt. + +Außerdem befolgt die GNU-Distribution die +@url{http://www.gnu.org/distros/free-system-distribution-guidelines.de.html,Richtlinien +für freie Systemverteilungen}. Unter anderem werden unfreie Firmware sowie +Empfehlungen von unfreier Software abgelehnt und Möglichkeiten zum Umgang +mit Markenzeichen und Patenten werden diskutiert. + +Ansonsten freier Paketquellcode von manchen Anbietern enthält einen kleinen +und optionalen Teil, der diese Richtlinien verletzt. Zum Beispiel kann +dieser Teil selbst unfreier Code sein. Wenn das vorkommt, wird der sie +verletzende Teil mit angemessenen Patches oder Code-Schnipseln innerhalb der +@code{origin}-Form des Pakets entfernt (siehe @ref{Pakete definieren}). Dadurch liefert Ihnen @code{guix build --source} nur den +»befreiten« Quellcode und nicht den unmodifizierten Quellcode des Anbieters. @node Paketbenennung @subsection Paketbenennung -@cindex package name -A package has actually two names associated with it: First, there is the -name of the @emph{Scheme variable}, the one following @code{define-public}. -By this name, the package can be made known in the Scheme code, for instance -as input to another package. Second, there is the string in the @code{name} -field of a package definition. This name is used by package management -commands such as @command{guix package} and @command{guix build}. +@cindex Paketname +Tatsächlich sind mit jedem Paket zwei Namen assoziiert: Zum einen gibt es +den Namen der @emph{Scheme-Variablen}, der direkt nach @code{define-public} +im Code steht. Mit diesem Namen kann das Paket im Scheme-Code nutzbar +gemacht und zum Beispiel als Eingabe eines anderen Pakets benannt +werden. Zum anderen gibt es die Zeichenkette im @code{name}-Feld einer +Paketdefinition. Dieser Name wird von Paketverwaltungsbefehlen wie +@command{guix package} und @command{guix build} benutzt. -Both are usually the same and correspond to the lowercase conversion of the -project name chosen upstream, with underscores replaced with hyphens. For -instance, GNUnet is available as @code{gnunet}, and SDL_net as -@code{sdl-net}. +Meistens sind die beiden identisch und ergeben sich aus einer Umwandlung des +vom Anbieter verwendeten Projektnamens in Kleinbuchstaben, bei der +Unterstriche durch Bindestriche ersetzt werden. Zum Beispiel wird GNUnet +unter dem Paketnamen @code{gnunet} angeboten und SDL_net als @code{sdl-net}. -We do not add @code{lib} prefixes for library packages, unless these are -already part of the official project name. But @pxref{Python-Module} and -@ref{Perl-Module} for special rules concerning modules for the Python and -Perl languages. +An Bibliothekspakete hängen wir vorne kein @code{lib} als Präfix an, solange +es nicht Teil des offiziellen Projektnamens ist. Beachten Sie aber die +Abschnitte @ref{Python-Module} und @ref{Perl-Module}, in denen +Sonderregeln für Module der Programmiersprachen Python und Perl beschrieben +sind. -Font package names are handled differently, @pxref{Schriftarten}. +Auch Pakete mit Schriftarten werden anders behandelt, siehe @ref{Schriftarten}. @node Versionsnummern @subsection Versionsnummern -@cindex package version -We usually package only the latest version of a given free software -project. But sometimes, for instance for incompatible library versions, two -(or more) versions of the same package are needed. These require different -Scheme variable names. We use the name as defined in @ref{Paketbenennung} -for the most recent version; previous versions use the same name, suffixed -by @code{-} and the smallest prefix of the version number that may -distinguish the two versions. - -The name inside the package definition is the same for all versions of a -package and does not contain any version number. +@cindex Paketversion +Normalerweise stellen wir nur für die neueste Version eines +Freie-Software-Projekts ein Paket bereit. Manchmal gibt es allerdings Fälle +wie zum Beispiel untereinander inkompatible Bibliotheksversionen, so dass +zwei (oder mehr) Versionen desselben Pakets angeboten werden müssen. In +diesem Fall müssen wir verschiedene Scheme-Variablennamen benutzen. Wir +benutzen dann für die neueste Version den Namen, wie er im Abschnitt +@ref{Paketbenennung} festgelegt wird, und geben vorherigen Versionen +denselben Namen mit einem zusätzlichen Suffix aus @code{-} gefolgt vom +kürzesten Präfix der Versionsnummer, mit dem noch immer zwei Versionen +unterschieden werden können. + +Der Name innerhalb der Paketdefinition ist hingegen derselbe für alle +Versionen eines Pakets und enthält keine Versionsnummer. Zum Beispiel können für GTK in den Versionen 2.24.20 und 3.9.12 Pakete wie folgt geschrieben werden: @@ -414,48 +428,51 @@ Wenn wir auch GTK 3.8.2 wollten, würden wir das Paket schreiben als @c See <https://lists.gnu.org/archive/html/guix-devel/2016-01/msg00425.html>, @c for a discussion of what follows. -@cindex version number, for VCS snapshots -Occasionally, we package snapshots of upstream's version control system -(VCS) instead of formal releases. This should remain exceptional, because -it is up to upstream developers to clarify what the stable release is. Yet, -it is sometimes necessary. So, what should we put in the @code{version} -field? - -Clearly, we need to make the commit identifier of the VCS snapshot visible -in the version string, but we also need to make sure that the version string -is monotonically increasing so that @command{guix package --upgrade} can -determine which version is newer. Since commit identifiers, notably with -Git, are not monotonically increasing, we add a revision number that we -increase each time we upgrade to a newer snapshot. The resulting version -string looks like this: +@cindex Versionsnummer, bei Snapshots aus Versionskontrolle +Gelegentlich fügen wir auch Pakete für Snapshots aus dem +Versionskontrollsystem des Anbieters statt formaler Veröffentlichungen zur +Distribution hinzu. Das sollte die Ausnahme bleiben, weil die Entwickler +selbst klarstellen sollten, welche Version als die stabile Veröffentlichung +gelten sollte, ab und zu ist es jedoch notwendig. Was also sollten wir dann +im @code{version}-Feld eintragen? + +Offensichtlich muss der Bezeichner des Commits, den wir als Snapshot aus dem +Versionskontrollsystem nehmen, in der Versionszeichenkette zu erkennen sein, +aber wir müssen auch sicherstellen, dass die Version monoton steigend ist, +damit @command{guix package --upgrade} feststellen kann, welche Version die +neuere ist. Weil Commit-Bezeichner, insbesondere bei Git, nicht monoton +steigen, müssen wir eine Revisionsnummer hinzufügen, die wir jedes Mal +erhöhen, wenn wir das Paket auf einen neueren Snapshot aktualisieren. Die +sich ergebende Versionszeichenkette sieht dann so aus: @example 2.0.11-3.cabba9e ^ ^ ^ - | | `-- upstream commit ID + | | `-- Commit-ID beim Anbieter | | - | `--- Guix package revision + | `--- Revisionsnummer des Guix-Pakets | -latest upstream version +die neueste Version, die der Anbieter veröffentlicht hat @end example -It is a good idea to strip commit identifiers in the @code{version} field -to, say, 7 digits. It avoids an aesthetic annoyance (assuming aesthetics -have a role to play here) as well as problems related to OS limits such as -the maximum shebang length (127 bytes for the Linux kernel.) It is best to -use the full commit identifiers in @code{origin}s, though, to avoid -ambiguities. A typical package definition may look like this: +Es ist eine gute Idee, die Commit-Bezeichner im @code{version}-Feld auf, +sagen wir, 7 Ziffern zu beschränken. Das sieht besser aus (angenommen, das +sollte hier eine Rolle spielen) und vermeidet Probleme, die mit der +maximalen Länge von Shebangs zu tun haben (127 Bytes beim Linux-Kernel). Am +besten benutzt man jedoch den vollständigen Commit-Bezeichner in +@code{origin}s, um Mehrdeutigkeiten zu vermeiden. Eine typische +Paketdefinition könnte so aussehen: @example -(define my-package +(define mein-paket (let ((commit "c3f29bc928d5900971f65965feaae59e1272a3f7") - (revision "1")) ;Guix package revision + (revision "1")) ;Guix-Paketrevision (package (version (git-version "0.9" revision commit)) (source (origin (method git-fetch) (uri (git-reference - (url "git://example.org/my-package.git") + (url "git://example.org/mein-paket.git") (commit commit))) (sha256 (base32 "1mbikn@dots{}")) (file-name (git-file-name name version)))) @@ -466,58 +483,69 @@ ambiguities. A typical package definition may look like this: @node Zusammenfassungen und Beschreibungen @subsection Zusammenfassungen und Beschreibungen -@cindex package description -@cindex package synopsis -As we have seen before, each package in GNU@tie{}Guix includes a synopsis -and a description (@pxref{Pakete definieren}). Synopses and descriptions -are important: They are what @command{guix package --search} searches, and a -crucial piece of information to help users determine whether a given package -suits their needs. Consequently, packagers should pay attention to what -goes into them. - -Synopses must start with a capital letter and must not end with a period. -They must not start with ``a'' or ``the'', which usually does not bring -anything; for instance, prefer ``File-frobbing tool'' over ``A tool that -frobs files''. The synopsis should say what the package is---e.g., ``Core -GNU utilities (file, text, shell)''---or what it is used for---e.g., the -synopsis for GNU@tie{}grep is ``Print lines matching a pattern''. - -Keep in mind that the synopsis must be meaningful for a very wide audience. -For example, ``Manipulate alignments in the SAM format'' might make sense -for a seasoned bioinformatics researcher, but might be fairly unhelpful or -even misleading to a non-specialized audience. It is a good idea to come up -with a synopsis that gives an idea of the application domain of the -package. In this example, this might give something like ``Manipulate -nucleotide sequence alignments'', which hopefully gives the user a better -idea of whether this is what they are looking for. - -Descriptions should take between five and ten lines. Use full sentences, -and avoid using acronyms without first introducing them. Please avoid -marketing phrases such as ``world-leading'', ``industrial-strength'', and -``next-generation'', and avoid superlatives like ``the most -advanced''---they are not helpful to users looking for a package and may -even sound suspicious. Instead, try to be factual, mentioning use cases and -features. - -@cindex Texinfo markup, in package descriptions -Descriptions can include Texinfo markup, which is useful to introduce -ornaments such as @code{@@code} or @code{@@dfn}, bullet lists, or hyperlinks -(@pxref{Overview,,, texinfo, GNU Texinfo}). However you should be careful -when using some characters for example @samp{@@} and curly braces which are -the basic special characters in Texinfo (@pxref{Special Characters,,, -texinfo, GNU Texinfo}). User interfaces such as @command{guix package ---show} take care of rendering it appropriately. - -Synopses and descriptions are translated by volunteers -@uref{http://translationproject.org/domain/guix-packages.html, at the -Translation Project} so that as many users as possible can read them in -their native language. User interfaces search them and display them in the -language specified by the current locale. - -To allow @command{xgettext} to extract them as translatable strings, -synopses and descriptions @emph{must be literal strings}. This means that -you cannot use @code{string-append} or @code{format} to construct these -strings: +@cindex Paketbeschreibung +@cindex Paketzusammenfassung +Wie wir bereits gesehen haben, enthält jedes Paket in GNU@tie{}Guix eine (im +Code englischsprachige) Zusammenfassung (englisch: Synopsis) und eine +Beschreibung (englisch: Description; siehe @ref{Pakete definieren}). Zusammenfassungen und Beschreibungen sind wichtig: Sie werden +mit @command{guix package --search} durchsucht und stellen eine +entscheidende Informationsquelle für Nutzer dar, die entscheiden wollen, ob +das Paket Ihren Bedürfnissen entspricht, daher sollten Paketentwickler Acht +geben, was sie dort eintragen. + +Zusammenfassungen müssen mit einem Großbuchstaben beginnen und dürfen nicht +mit einem Punkt enden. Sie dürfen nicht mit den Artikeln »a« oder »the« +beginnen, die meistens ohnehin nichts zum Verständnis beitragen. Zum +Beispiel sollte »File-frobbing tool« gegenüber »A tool that frobs files« +vorgezogen werden. Die Zusammenfassung sollte aussagen, um was es sich beim +Paket handelt — z.B.@: »Core GNU utilities (file, text, shell)« —, oder +aussagen, wofür es benutzt wird — z.B.@: ist die Zusammenfassung für +GNU@tie{}grep »Print lines matching a pattern«. + +Beachten Sie, dass die Zusammenfassung für eine sehr große Leserschaft einen +Sinn ergeben muss. Zum Beispiel würde »Manipulate alignments in the SAM +format« vielleicht von einem erfahrenen Forscher in der Bioinformatik +verstanden, könnte für die Nicht-Spezialisten in Guix’ Zielgruppe aber wenig +hilfreich sein oder würde diesen sogar eine falsche Vorstellung geben. Es +ist eine gute Idee, sich eine Zusammenfassung zu überlegen, die eine +Vorstellung von der Anwendungsdomäne des Pakets vermittelt. Im Beispiel hier +würden sich die Nutzer mit »Manipulate nucleotide sequence alignments« +hoffentlich ein besseres Bild davon machen können, ob das Paket ist, wonach +sie suchen. + +Beschreibungen sollten zwischen fünf und zehn Zeilen lang sein. Benutzen Sie +vollständige Sätze und vermeiden Sie Abkürzungen, die Sie nicht zuvor +eingeführt haben. Vermeiden Sie bitte Marketing-Phrasen wie »world-leading« +(»weltweit führend«), »industrial-strength« (»industrietauglich«) und +»next-generation« (»der nächsten Generation«) ebenso wie Superlative wie +»the most advanced« (»das fortgeschrittenste«) — davon haben Nutzer nichts, +wenn sie ein Paket suchen, und es könnte sogar verdächtig klingen. Versuchen +Sie stattdessen, bei den Fakten zu bleiben und dabei Anwendungszwecke und +Funktionalitäten zu erwähnen. + +@cindex Texinfo-Auszeichnungen, in Paketbeschreibungen +Beschreibungen können wie bei Texinfo ausgezeichneten Text enthalten. Das +bedeutet, Text kann Verzierungen wie @code{@@code} oder @code{@@dfn}, +Auflistungen oder Hyperlinks enthalten (siehe @ref{Overview,,, texinfo, GNU +Texinfo}). Sie sollten allerdings vorsichtig sein, wenn Sie bestimmte +Zeichen wie @samp{@@} und geschweifte Klammern schreiben, weil es sich dabei +um die grundlegenden Sonderzeichen in Texinfo handelt (siehe @ref{Special +Characters,,, texinfo, GNU Texinfo}). Benutzungsschnittstellen wie +@command{guix package --show} kümmern sich darum, solche Auszeichnungen +angemessen darzustellen. + +Zusammenfassungen und Beschreibungen werden von Freiwilligen +@uref{http://translationproject.org/domain/guix-packages.html, beim +Translation Project} übersetzt, damit so viele Nutzer wie möglich sie in +ihrer Muttersprache lesen können. Mit Schnittstellen für Benutzer können sie +in der von der aktuell eingestellten Locale festgelegten Sprache durchsucht +und angezeigt werden. + +Damit @command{xgettext} sie als übersetzbare Zeichenketten extrahieren +kann, @emph{müssen} Zusammenfassungen und Beschreibungen einfache +Zeichenketten-Literale sein. Das bedeutet, dass Sie diese Zeichenketten +nicht mit Prozeduren wie @code{string-append} oder @code{format} +konstruieren können: @lisp (package @@ -526,11 +554,12 @@ strings: (description (string-append "This is " "*not*" " translatable."))) @end lisp -Translation is a lot of work so, as a packager, please pay even more -attention to your synopses and descriptions as every change may entail -additional work for translators. In order to help them, it is possible to -make recommendations or instructions visible to them by inserting special -comments like this (@pxref{xgettext Invocation,,, gettext, GNU Gettext}): +Übersetzen ist viel Arbeit, also passen Sie als Paketentwickler bitte umso +mehr auf, wenn Sie Ihre Zusammenfassungen und Beschreibungen formulieren, +weil jede Änderung zusätzliche Arbeit für Übersetzer bedeutet. Um den +Übersetzern zu helfen, können Sie Empfehlungen und Anweisungen für diese +sichtbar machen, indem Sie spezielle Kommentare wie in diesem Beispiel +einfügen (siehe @ref{xgettext Invocation,,, gettext, GNU Gettext}): @example ;; TRANSLATORS: "X11 resize-and-rotate" should not be translated. @@ -543,70 +572,78 @@ for the X11 resize-and-rotate (RandR) extension. @dots{}") @subsection Python-Module @cindex python -We currently package Python 2 and Python 3, under the Scheme variable names -@code{python-2} and @code{python} as explained in @ref{Versionsnummern}. To -avoid confusion and naming clashes with other programming languages, it -seems desirable that the name of a package for a Python module contains the -word @code{python}. - -Some modules are compatible with only one version of Python, others with -both. If the package Foo compiles only with Python 3, we name it -@code{python-foo}; if it compiles only with Python 2, we name it -@code{python2-foo}. If it is compatible with both versions, we create two -packages with the corresponding names. - -If a project already contains the word @code{python}, we drop this; for -instance, the module python-dateutil is packaged under the names -@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 -described above. - -@subsubsection Specifying Dependencies -@cindex inputs, for Python packages - -Dependency information for Python packages is usually available in the -package source tree, with varying degrees of accuracy: in the -@file{setup.py} file, in @file{requirements.txt}, or in @file{tox.ini}. - -Your mission, when writing a recipe for a Python package, is to map these -dependencies to the appropriate type of ``input'' (@pxref{»package«-Referenz, -inputs}). Although the @code{pypi} importer normally does a good job -(@pxref{Aufruf von guix import}), you may want to check the following check -list to determine which dependency goes where. +Zur Zeit stellen wir ein Paket für Python 2 und eines für Python 3 jeweils +über die Scheme-Variablen mit den Namen @code{python-2} und @code{python} +zur Verfügung, entsprechend der Erklärungen im Abschnitt @ref{Versionsnummern}. Um Verwirrungen und Namenskollisionen mit anderen +Programmiersprachen zu vermeiden, erscheint es als wünschenswert, dass der +Name eines Pakets für ein Python-Modul auch das Wort @code{python} enthält. + +Manche Module sind nur mit einer Version von Python kompatibel, andere mit +beiden. Wenn das Paket Foo nur mit Python 3 kompiliert werden kann, geben +wir ihm den Namen @code{python-foo}, wenn es nur mit Python 2 kompilierbar +ist, wählen wir den Namen @code{python2-foo}. Ist es mit beiden Versionen +kompatibel, erstellen wir zwei Pakete jeweils mit dem entsprechenden Namen. + +Wenn ein Projekt bereits das Wort @code{python} im Namen hat, lassen wir es +weg; zum Beispiel ist das Modul python-dateutil unter den Namen +@code{python-dateutil} und @code{python2-dateutil} verfügbar. Wenn der +Projektname mit @code{py} beginnt (z.B.@: @code{pytz}), behalten wir ihn bei +und stellen das oben beschriebene Präfix voran. + +@subsubsection Abhängigkeiten angeben +@cindex Eingaben, für Python-Pakete + +Informationen über Abhängigkeiten von Python-Paketen, welche mal mehr und +mal weniger stimmen, finden sich normalerweise im Verzeichnisbaum des +Paketquellcodes: in der Datei @file{setup.py}, in @file{requirements.txt} +oder in @file{tox.ini}. + +Wenn Sie ein Rezept für ein Python-Paket schreiben, lautet Ihr Auftrag, +diese Abhängigkeiten auf angemessene Arten von »Eingaben« abzubilden (siehe +@ref{»package«-Referenz, inputs}). Obwohl der @code{pypi}-Importer hier +normalerweise eine gute Arbeit leistet (siehe @ref{Aufruf von guix import}), +könnten Sie die folgende Prüfliste durchgehen wollen, um zu bestimmen, wo +welche Abhängigkeit eingeordnet werden sollte. @itemize @item -We currently package Python 2 with @code{setuptools} and @code{pip} -installed like Python 3.4 has per default. Thus you don't need to specify -either of these as an input. @command{guix lint} will warn you if you do. +Derzeit ist unser Python-2-Paket so geschrieben, dass es @code{setuptools} +und @code{pip} installiert, wie es auch in den Vorgaben zu Python 3.4 +gemacht wird. Sie müssen also keines der beiden als Eingabe angeben. Wenn +Sie es doch tun, wird @command{guix lint} Sie darauf mit einer Warnung +aufmerksam machen. @item -Python dependencies required at run time go into @code{propagated-inputs}. -They are typically defined with the @code{install_requires} keyword in -@file{setup.py}, or in the @file{requirements.txt} file. +Python-Abhängigkeiten, die zur Laufzeit gebraucht werden, stehen im +@code{propagated-inputs}-Feld. Solche werden typischerweise mit dem +Schlüsselwort @code{install_requires} in @file{setup.py} oder in der Datei +@file{requirements.txt} definiert. @item -Python packages required only at build time---e.g., those listed with the -@code{setup_requires} keyword in @file{setup.py}---or only for -testing---e.g., those in @code{tests_require}---go into -@code{native-inputs}. The rationale is that (1) they do not need to be -propagated because they are not needed at run time, and (2) in a -cross-compilation context, it's the ``native'' input that we'd want. - -Examples are the @code{pytest}, @code{mock}, and @code{nose} test -frameworks. Of course if any of these packages is also required at -run-time, it needs to go to @code{propagated-inputs}. +Python-Pakete, die nur zur Erstellungszeit gebraucht werden — z.B.@: jene, +die mit dem Schlüsselwort @code{setup_requires} in @file{setup.py} +aufgeführt sind — oder die nur zum Testen gebraucht werden — also die in +@code{tests_require} —, stehen in @code{native-inputs}. Die Begründung ist, +dass (1) sie nicht propagiert werden müssen, weil sie zur Laufzeit nicht +gebraucht werden, und (2) wir beim Cross-Kompilieren die »native« Eingabe +des Wirtssystems wollen. + +Beispiele sind die Testrahmen @code{pytest}, @code{mock} und +@code{nose}. Wenn natürlich irgendeines dieser Pakete auch zur Laufzeit +benötigt wird, muss es doch in @code{propagated-inputs} stehen. @item -Anything that does not fall in the previous categories goes to -@code{inputs}, for example programs or C libraries required for building -Python packages containing C extensions. +Alles, was nicht in die bisher genannten Kategorien fällt, steht in +@code{inputs}, zum Beispiel Programme oder C-Bibliotheken, die zur +Erstellung von Python-Paketen mit enthaltenen C-Erweiterungen gebraucht +werden. @item -If a Python package has optional dependencies (@code{extras_require}), it is -up to you to decide whether to add them or not, based on their -usefulness/overhead ratio (@pxref{Einreichen von Patches, @command{guix size}}). +Wenn ein Python-Paket optionale Abhängigkeiten hat (@code{extras_require}), +ist es Ihnen überlassen, sie hinzuzufügen oder nicht hinzuzufügen, je +nachdem wie es um deren Verhältnis von Nützlichkeit zu anderen Nachteilen +steht (siehe @ref{Einreichen von Patches, @command{guix size}}). @end itemize @@ -615,76 +652,82 @@ usefulness/overhead ratio (@pxref{Einreichen von Patches, @command{guix size}}). @subsection Perl-Module @cindex perl -Perl programs standing for themselves are named as any other package, using -the lowercase upstream name. For Perl packages containing a single class, -we use the lowercase class name, replace all occurrences of @code{::} by -dashes and prepend the prefix @code{perl-}. So the class @code{XML::Parser} -becomes @code{perl-xml-parser}. Modules containing several classes keep -their lowercase upstream name and are also prepended by @code{perl-}. Such -modules tend to have the word @code{perl} somewhere in their name, which -gets dropped in favor of the prefix. For instance, @code{libwww-perl} -becomes @code{perl-libwww}. +Eigenständige Perl-Programme bekommen einen Namen wie jedes andere Paket, +unter Nutzung des Namens beim Anbieter in Kleinbuchstaben. Für Perl-Pakete, +die eine einzelne Klasse enthalten, ersetzen wir alle Vorkommen von +@code{::} durch Striche und hängen davor das Präfix @code{perl-} an. Die +Klasse @code{XML::Parser} wird also zu @code{perl-xml-parser}. Module, die +mehrere Klassen beinhalten, behalten ihren Namen beim Anbieter, in +Kleinbuchstaben gesetzt, und auch an sie wird vorne das Präfix @code{perl-} +angehängt. Es gibt die Tendenz, solche Module mit dem Wort @code{perl} +irgendwo im Namen zu versehen, das wird zu Gunsten des Präfixes +weggelassen. Zum Beispiel wird aus @code{libwww-perl} bei uns +@code{perl-libwww}. @node Java-Pakete @subsection Java-Pakete @cindex java -Java programs standing for themselves are named as any other package, using -the lowercase upstream name. - -To avoid confusion and naming clashes with other programming languages, it -is desirable that the name of a package for a Java package is prefixed with -@code{java-}. If a project already contains the word @code{java}, we drop -this; for instance, the package @code{ngsjava} is packaged under the name +Eigenständige Java-Programme werden wie jedes andere Paket benannt, d.h.@: +mit ihrem in Kleinbuchstaben geschriebenen Namen beim Anbieter. + +Um Verwirrungen und Namenskollisionen mit anderen Programmiersprachen zu +vermeiden, ist es wünschenswert, dass dem Namem eines Pakets zu einem +Java-Paket das Präfix @code{java-} vorangestellt wird. Wenn ein Projekt +bereits das Wort @code{java} im Namen trägt, lassen wir es weg; zum Beispiel +befindet sich das Java-Paket @code{ngsjava} in einem Paket namens @code{java-ngs}. -For Java packages containing a single class or a small class hierarchy, we -use the lowercase class name, replace all occurrences of @code{.} by dashes -and prepend the prefix @code{java-}. So the class @code{apache.commons.cli} -becomes package @code{java-apache-commons-cli}. +Bei Java-Paketen, die eine einzelne Klasse oder eine kleine +Klassenhierarchie enthalten, benutzen wir den Klassennamen in +Kleinbuchstaben und ersetzen dabei alle Vorkommen von @code{.} durch Striche +und setzen das Präfix @code{java-} davor. Die Klasse +@code{apache.commons.cli} wird also zum Paket +@code{java-apache-commons-cli}. @node Schriftarten @subsection Schriftarten @cindex Schriftarten -For fonts that are in general not installed by a user for typesetting -purposes, or that are distributed as part of a larger software package, we -rely on the general packaging rules for software; for instance, this applies -to the fonts delivered as part of the X.Org system or fonts that are part of -TeX Live. - -To make it easier for a user to search for fonts, names for other packages -containing only fonts are constructed as follows, independently of the -upstream package name. - -The name of a package containing only one font family starts with -@code{font-}; it is followed by the foundry name and a dash @code{-} if the -foundry is known, and the font family name, in which spaces are replaced by -dashes (and as usual, all upper case letters are transformed to lower -case). For example, the Gentium font family by SIL is packaged under the -name @code{font-sil-gentium}. - -For a package containing several font families, the name of the collection -is used in the place of the font family name. For instance, the Liberation -fonts consist of three families, Liberation Sans, Liberation Serif and -Liberation Mono. These could be packaged separately under the names -@code{font-liberation-sans} and so on; but as they are distributed together -under a common name, we prefer to package them together as -@code{font-liberation}. - -In the case where several formats of the same font family or font collection -are packaged separately, a short form of the format, prepended by a dash, is -added to the package name. We use @code{-ttf} for TrueType fonts, -@code{-otf} for OpenType fonts and @code{-type1} for PostScript Type 1 -fonts. +Wenn Schriftarten in der Regel nicht von Nutzern zur Textbearbeitung +installiert werden oder als Teil eines größeren Software-Pakets mitgeliefert +werden, gelten dafür die allgemeinen Paketrichtlinien für Software. Zum +Beispiel trifft das auf als Teil des X.Org-Systems ausgelieferte +Schriftarten zu, oder auf Schriftarten, die ein Teil von TeX Live sind. + +Damit es Nutzer leichter haben, nach Schriftarten zu suchen, konstruieren +wir die Namen von anderen Paketen, die nur Schriftarten enthalten, nach dem +folgenden Schema, egal was der Paketname beim Anbieter ist. + +Der Name eines Pakets, das nur eine Schriftfamilie enthält, beginnt mit +@code{font-}. Darauf folgt der Name des Schriftenherstellers und ein Strich +@code{-}, sofern bekannt ist, wer der Schriftenhersteller ist, und dann der +Name der Schriftfamilie, in dem Leerzeichen durch Striche ersetzt werden +(und wie immer mit Großbuchstaben statt Kleinbuchstaben). Zum Beispiel +befindet sich die von SIL hergestellte Gentium-Schriftfamilie im Paket mit +dem Namen @code{font-sil-gentium}. + +Wenn ein Paket mehrere Schriftfamilien enthält, wird der Name der Sammlung +anstelle des Schriftfamiliennamens benutzt. Zum Beispiel umfassen die +Liberation-Schriftarten drei Familien: Liberation Sans, Liberation Serif und +Liberation Mono. Man könnte sie getrennt voneinander mit den Namen +@code{font-liberation-sans} und so weiter in Pakete einteilen, da sie aber +unter einem gemeinsamen Namen angeboten werden, packen wir sie lieber +zusammen in ein Paket mit dem Namen @code{font-liberation}. + +Für den Fall, dass mehrere Formate derselben Schriftfamilie oder +Schriftartensammlung in separate Pakete kommen, wird ein Kurzname für das +Format mit einem Strich vorne zum Paketnamen hinzugefügt. Wir benutzen +@code{-ttf} für TrueType-Schriftarten, @code{-otf} für OpenType-Schriftarten +und @code{-type1} für PostScript-Typ-1-Schriftarten. @node Code-Stil @section Code-Stil -Im Allgemeinen folgt unser Code den GNU Coding Standards (@pxref{Top,,, +Im Allgemeinen folgt unser Code den GNU Coding Standards (siehe @ref{Top,,, standards, GNU Coding Standards}). Da diese aber nicht viel über Scheme zu sagen haben, folgen hier einige zusätzliche Regeln. @@ -747,7 +790,7 @@ Ein paar in Guix eingeführte Sonderformen, wie zum Beispiel das sind in der Datei @file{.dir-locals.el} definiert, die Emacs automatisch benutzt. Beachten Sie auch, dass Emacs-Guix einen Modus namens @code{guix-devel-mode} bereitstellt, der Guix-Code richtig einrückt und -hervorhebt (@pxref{Development,,, emacs-guix, The Emacs-Guix Reference +hervorhebt (siehe @ref{Entwicklung,,, emacs-guix, The Emacs-Guix Reference Manual}). @cindex Einrückung, Code- @@ -800,60 +843,61 @@ unter @uref{https://bugs.gnu.org/guix-patches}, wodurch wir den Überblick über Eingereichtes behalten können. Jede an diese Mailing-Liste gesendete Nachricht bekommt eine neue Folgenummer zugewiesen, so dass man eine Folge-Email zur Einreichung an @code{@var{NNN}@@debbugs.gnu.org} senden -kann, wobei @var{NNN} für die Folgenummer steht (@pxref{Senden einer Patch-Reihe}). +kann, wobei @var{NNN} für die Folgenummer steht (siehe @ref{Senden einer Patch-Reihe}). -Bitte schreiben Sie Commit-Logs im ChangeLog-Format (@pxref{Change Logs,,, -standards, GNU Coding Standards}); dazu finden Sie Beispiele unter den -bisherigen Commits. +Bitte schreiben Sie Commit-Logs im ChangeLog-Format (siehe @ref{Change +Logs,,, standards, GNU Coding Standards}); dazu finden Sie Beispiele unter +den bisherigen Commits. Bevor Sie einen Patch einreichen, der eine Paketdefinition hinzufügt oder verändert, gehen Sie bitte diese Prüfliste durch: @enumerate @item -Wenn die Autoren der verpackten Software eine kryptographische Signatur für -den Tarball der Veröffentlichung anbieten, so machen Sie sich bitte die -Mühe, die Echtheit des Archivs zu überprüfen. Für eine abgetrennte -GPG-Signaturdatei würden Sie das mit dem Befehl @code{gpg --verify} tun. +Wenn die Autoren der verpackten Software eine kryptografische Signatur +bzw. Beglaubigung für den Tarball der Veröffentlichung anbieten, so machen +Sie sich bitte die Mühe, die Echtheit des Archivs zu überprüfen. Für eine +abgetrennte GPG-Signaturdatei würden Sie das mit dem Befehl @code{gpg +--verify} tun. @item Nehmen Sie sich die Zeit, eine passende Zusammenfassung und Beschreibung für -das Paket zu verfassen. Unter @xref{Zusammenfassungen und Beschreibungen} finden Sie +das Paket zu verfassen. Unter @ref{Zusammenfassungen und Beschreibungen} finden Sie dazu einige Richtlinien. @item Verwenden Sie @code{guix lint @var{Paket}}, wobei @var{Paket} das neue oder -geänderte Paket bezeichnet, und beheben Sie alle gemeldeten Fehler -(@pxref{Aufruf von guix lint}). +geänderte Paket bezeichnet, und beheben Sie alle gemeldeten Fehler (siehe +@ref{Aufruf von guix lint}). @item Stellen Sie sicher, dass das Paket auf Ihrer Plattform erstellt werden kann, indem Sie @code{guix build @var{Paket}} ausführen. @item -We recommend you also try building the package on other supported -platforms. As you may not have access to actual hardware platforms, we -recommend using the @code{qemu-binfmt-service-type} to emulate them. In -order to enable it, add the following service to the list of services in -your @code{operating-system} configuration: +Wir empfehlen, dass Sie auch versuchen, das Paket auf anderen unterstützten +Plattformen zu erstellen. Da Sie vielleicht keinen Zugang zu echter Hardware +für diese Plattformen haben, empfehlen wir, den +@code{qemu-binfmt-service-type} zu benutzen, um sie zu emulieren. Um ihn zu +aktivieren, fügen Sie den folgenden Dienst in die Liste der Dienste +(»services«) in Ihrer @code{operating-system}-Konfiguration ein: @example (service qemu-binfmt-service-type (qemu-binfmt-configuration - (platforms (lookup-qemu-platforms "arm" "aarch64" "ppc" "mips64el")) + (platforms (lookup-qemu-platforms "arm" "aarch64" "mips64el")) (guix-support? #t))) @end example -Then reconfigure your system. +Rekonfigurieren Sie anschließend Ihr System. -You can then build packages for different platforms by specifying the -@code{--system} option. For example, to build the "hello" package for the -armhf, aarch64, powerpc, or mips64 architectures, you would run the -following commands, respectively: +Sie können Pakete für andere Plattformen erstellen lassen, indem Sie die +Befehlszeilenoption @code{--system} angeben. Um zum Beispiel das Paket +»hello« für die Architekturen armhf, aarch64 oder mips64 erstellen zu +lassen, würden Sie jeweils die folgenden Befehle angeben: @example guix build --system=armhf-linux --rounds=2 hello guix build --system=aarch64-linux --rounds=2 hello -guix build --system=powerpc-linux --rounds=2 hello guix build --system=mips64el-linux --rounds=2 hello @end example @@ -874,17 +918,18 @@ einzuspielen, die aber das gesamte System betreffen — gebündelt mitgelieferte Kopien würden dies verhindern. @item -Take a look at the profile reported by @command{guix size} (@pxref{Aufruf von guix size}). This will allow you to notice references to other packages -unwillingly retained. It may also help determine whether to split the -package (@pxref{Pakete mit mehreren Ausgaben.}), and which optional -dependencies should be used. In particular, avoid adding @code{texlive} as -a dependency: because of its extreme size, use @code{texlive-tiny} or -@code{texlive-union} instead. +Schauen Sie sich das von @command{guix size} ausgegebene Profil an (siehe +@ref{Aufruf von guix size}). Dadurch können Sie Referenzen auf andere Pakete +finden, die ungewollt vorhanden sind. Dies kann auch dabei helfen, zu +entscheiden, ob das Paket aufgespalten werden sollte (siehe @ref{Pakete mit mehreren Ausgaben.}) und welche optionalen Abhängigkeiten verwendet +werden sollten. Dabei sollten Sie es wegen seiner enormen Größe insbesondere +vermeiden, @code{texlive} als eine Abhängigkeit hinzuzufügen; benutzen Sie +stattdessen @code{texlive-tiny} oder @code{texlive-union}. @item Achten Sie bei wichtigen Änderungen darauf, dass abhängige Pakete (falls vorhanden) nicht von der Änderung beeinträchtigt werden; @code{guix refresh ---list-dependent @var{Paket}} hilft Ihnen dabei (@pxref{Aufruf von guix refresh}). +--list-dependent @var{Paket}} hilft Ihnen dabei (siehe @ref{Aufruf von guix refresh}). @c See <https://lists.gnu.org/archive/html/guix-devel/2016-10/msg00933.html>. @cindex Branching-Strategie @@ -899,9 +944,9 @@ statt, nach ungefähr diesen Regeln: @item zwischen 300 und 1200 abhängige Pakete @code{staging}-Branch (störfreie Änderungen). Dieser Branch wird circa alle -3 Wochen in @code{master} gemerget. Themenbezogene Änderungen (z.B. eine -Aktualisierung der GNOME-Plattform) können stattdessen auch auf einem -eigenen Branch umgesetzt werden (wie @code{gnome-updates}). +3 Wochen mit @code{master} zusammengeführt. Themenbezogene Änderungen +(z.B.@: eine Aktualisierung der GNOME-Plattform) können stattdessen auch auf +einem eigenen Branch umgesetzt werden (wie @code{gnome-updates}). @item mehr als 1200 abhängige Pakete @code{core-updates}-Branch (kann auch größere und womöglich andere Software @@ -932,7 +977,7 @@ Sie typischerweise, ob eine unabhängige Erstellung des Pakets genau dasselbe Ergebnis wie Ihre Erstellung hat, Bit für Bit. Dies können Sie leicht tun, indem Sie dasselbe Paket mehrere Male -hintereinander auf Ihrer Maschine erstellen (@pxref{Aufruf von guix build}): +hintereinander auf Ihrer Maschine erstellen (siehe @ref{Aufruf von guix build}): @example guix build --rounds=2 mein-paket @@ -942,20 +987,22 @@ Dies reicht aus, um eine ganze Klasse häufiger Ursachen von Nichtdeterminismus zu finden, wie zum Beispiel Zeitstempel oder zufallsgenerierte Ausgaben im Ergebnis der Erstellung. -Another option is to use @command{guix challenge} (@pxref{Aufruf von guix challenge}). You may run it once the package has been committed and built -by @code{@value{SUBSTITUTE-SERVER}} to check whether it obtains the same -result as you did. Better yet: Find another machine that can build it and -run @command{guix publish}. Since the remote build machine is likely -different from yours, this can catch non-determinism issues related to the -hardware---e.g., use of different instruction set extensions---or to the -operating system kernel---e.g., reliance on @code{uname} or @file{/proc} -files. +Eine weitere Möglichkeit ist, @command{guix challenge} (siehe @ref{Aufruf von guix challenge}) zu benutzen. Sie können es ausführen, sobald ein Paket +commitet und von @code{@value{SUBSTITUTE-SERVER}} erstellt wurde, um zu +sehen, ob dort dasselbe Ergebnis wie bei Ihnen geliefert wurde. Noch besser: +Finden Sie eine andere Maschine, die das Paket erstellen kann, und führen +Sie @command{guix publish} aus. Da sich die entfernte Erstellungsmaschine +wahrscheinlich von Ihrer unterscheidet, können Sie auf diese Weise Probleme +durch Nichtdeterminismus erkennen, die mit der Hardware zu tun haben — zum +Beispiel die Nutzung anderer Befehlssatzerweiterungen — oder mit dem +Betriebssystem-Kernel — zum Beispiel, indem @code{uname} oder +@file{/proc}-Dateien verwendet werden. @item Beim Schreiben von Dokumentation achten Sie bitte auf eine geschlechtsneutrale Wortwahl, wenn Sie sich auf Personen beziehen, wie @uref{https://en.wikipedia.org/wiki/Singular_they, »they«@comma{} -»their«@comma{} »them« im Singular}, und so weiter. +»their«@comma{} »them« im Singular} und so weiter. @item Stelllen Sie sicher, dass Ihr Patch nur einen Satz zusammengehöriger @@ -969,11 +1016,11 @@ zusammen mit Fehlerbehebungen für das Paket. @item Bitte befolgen Sie unsere Richtlinien für die Code-Formatierung, womöglich wollen Sie dies automatisch tun lassen durch das Skript -@command{etc/indent-code.el} (@pxref{Formatierung von Code}). +@command{etc/indent-code.el} (siehe @ref{Formatierung von Code}). @item -Benutzen Sie, wenn möglich, Spiegelserver (Mirrors) in der Quell-URL -(@pxref{Aufruf von guix download}). Verwenden Sie verlässliche URLs, keine +Benutzen Sie, wenn möglich, Spiegelserver (Mirrors) in der Quell-URL (siehe +@ref{Aufruf von guix download}). Verwenden Sie verlässliche URLs, keine automatisch generierten. Zum Beispiel sind Archive von GitHub nicht immer identisch von einer Generation auf die nächste, daher ist es in diesem Fall besser, als Quelle einen Klon des Repositorys zu verwenden. Benutzen Sie @@ -984,7 +1031,7 @@ wirklich und wenn sich der Name ändert, stimmt die URL nicht mehr. Bitte benutzen Sie @samp{[PATCH] @dots{}} als Betreff, wenn Sie einen Patch an die Mailing-Liste schicken. Sie können dazu Ihr E-Mail-Programm oder den -Befehl @command{git send-email} benutzen (@pxref{Senden einer Patch-Reihe}). Wir bevorzugen es, Patches als reine Textnachrichten zu erhalten, +Befehl @command{git send-email} benutzen (siehe @ref{Senden einer Patch-Reihe}). Wir bevorzugen es, Patches als reine Textnachrichten zu erhalten, entweder eingebettet (inline) oder als MIME-Anhänge. Sie sind dazu angehalten, zu überprüfen, ob Ihr Mail-Programm solche Dinge wie Zeilenumbrüche oder die Einrückung verändert, wodurch die Patches womöglich @@ -1000,9 +1047,9 @@ Sie eine E-Mail an @email{@var{NNN}-done@@debbugs.gnu.org} senden. @cindex @code{git-send-email} @c Debbugs bug: https://debbugs.gnu.org/db/15/15361.html -Wenn Sie eine Patch-Reihe senden (z.B. mit @code{git send-email}), schicken -Sie bitte als Erstes eine Nachricht an @email{guix-patches@@gnu.org} und -dann nachfolgende Patches an @email{@var{NNN}@@debbugs.gnu.org}, um -sicherzustellen, dass sie zusammen bearbeitet werden. Siehe -@uref{https://debbugs.gnu.org/Advanced.html, die Debbugs-Dokumentation} für -weitere Informationen. +Wenn Sie eine Patch-Reihe senden (z.B.@: mit @code{git send-email}), +schicken Sie bitte als Erstes eine Nachricht an +@email{guix-patches@@gnu.org} und dann nachfolgende Patches an +@email{@var{NNN}@@debbugs.gnu.org}, um sicherzustellen, dass sie zusammen +bearbeitet werden. Siehe @uref{https://debbugs.gnu.org/Advanced.html, die +Debbugs-Dokumentation} für weitere Informationen. diff --git a/doc/guix.de.texi b/doc/guix.de.texi index 83dae0d3ec..419d40379e 100644 --- a/doc/guix.de.texi +++ b/doc/guix.de.texi @@ -32,9 +32,9 @@ Copyright @copyright{} 2014 Pierre-Antoine Rault@* Copyright @copyright{} 2015 Taylan Ulrich Bayırlı/Kammer@* Copyright @copyright{} 2015, 2016, 2017 Leo Famulari@* Copyright @copyright{} 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus@* Copyright @copyright{} 2016 Ben Woodcroft@* Copyright @copyright{} -2016, 2017, 2018 Chris Marusich@* Copyright @copyright{} 2016, 2017, 2018 -Efraim Flashner@* Copyright @copyright{} 2016 John Darrington@* Copyright -@copyright{} 2016, 2017 ng0@* Copyright @copyright{} 2016, 2017, +2016, 2017, 2018 Chris Marusich@* Copyright @copyright{} 2016, 2017, 2018, +2019 Efraim Flashner@* Copyright @copyright{} 2016 John Darrington@* +Copyright @copyright{} 2016, 2017 ng0@* Copyright @copyright{} 2016, 2017, 2018, 2019 Jan Nieuwenhuizen@* Copyright @copyright{} 2016 Julien Lepiller@* Copyright @copyright{} 2016 Alex ter Weele@* Copyright @copyright{} 2016, 2017, 2018, 2019 Christopher Baines@* Copyright @copyright{} 2017, 2018 @@ -46,7 +46,7 @@ Christopher Allan Webber@* Copyright @copyright{} 2017, 2018 Marius Bakke@* Copyright @copyright{} 2017 Hartmut Goebel@* Copyright @copyright{} 2017 Maxim Cournoyer@* Copyright @copyright{} 2017, 2018 Tobias Geerinckx-Rice@* Copyright @copyright{} 2017 George Clemmer@* Copyright @copyright{} 2017 -Andy Wingo@* Copyright @copyright{} 2017, 2018 Arun Isaac@* Copyright +Andy Wingo@* Copyright @copyright{} 2017, 2018, 2019 Arun Isaac@* Copyright @copyright{} 2017 nee@* Copyright @copyright{} 2018 Rutger Helling@* Copyright @copyright{} 2018 Oleg Pykhalov@* Copyright @copyright{} 2018 Mike Gerwitz@* Copyright @copyright{} 2018 Pierre-Antoine Rouby@* Copyright @@ -114,10 +114,10 @@ geschrieben wurde. @c TRANSLATORS: You can replace the following paragraph with information on @c how to join your own translation team and how to report issues with the @c translation. -Dieses Handbuch ist auch auf Englisch (@pxref{Top,,, guix, GNU Guix -Reference Manual}) und Französisch verfügbar (@pxref{Top,,, guix.fr, Manuel -de référence de GNU Guix}). Wenn Sie es in Ihre eigene Sprache übersetzen -möchten, dann sind Sie beim +Dieses Handbuch ist auch auf Englisch (siehe @ref{Top,,, guix, GNU Guix +Reference Manual}) und Französisch verfügbar (siehe @ref{Top,,, guix.fr, +Manuel de référence de GNU Guix}). Wenn Sie es in Ihre eigene Sprache +übersetzen möchten, dann sind Sie beim @uref{https://translationproject.org/domain/guix-manual.html, Translation Project} herzlich willkommen. @@ -126,7 +126,7 @@ Project} herzlich willkommen. * Installation:: Guix installieren. * Systeminstallation:: Das ganze Betriebssystem installieren. * Paketverwaltung:: Pakete installieren, aktualisieren usw. -* Development:: Guix-aided software development. +* Entwicklung:: Von Guix unterstützte Softwareentwicklung. * Programmierschnittstelle:: Guix in Scheme verwenden. * Zubehör:: Befehle zur Paketverwaltung. * Systemkonfiguration:: Das Betriebssystem konfigurieren. @@ -153,8 +153,8 @@ Einführung -* Managing Software the Guix Way:: What's special. -* GNU-Distribution:: The packages and tools. +* Auf Guix-Art Software verwalten:: Was Guix besonders macht. +* GNU-Distribution:: Die Pakete und Werkzeuge. Installation @@ -163,7 +163,7 @@ Installation * Aus Binärdatei installieren:: Guix installieren, ohne Zeit zu verlieren! * Voraussetzungen:: Zum Erstellen und Benutzen von Guix nötige Software. -* Die Testsuite laufen lassen:: Guix testen. +* Den Testkatalog laufen lassen:: Guix testen. * Den Daemon einrichten:: Wie man die Umgebung des Erstellungs-Daemons einrichtet. * Aufruf des guix-daemon:: Den Erstellungs-Daemon laufen lassen. @@ -189,10 +189,20 @@ Systeminstallation * Installation von USB-Stick oder DVD:: Das Installationsmedium vorbereiten. * Vor der Installation:: Netzwerkanbindung, Partitionierung etc. -* Fortfahren mit der Installation:: Die Hauptsache. -* Installing Guix in a VM:: Guix System playground. +* Geführte grafische Installation:: Leichte grafische Installation. +* Manuelle Installation:: Manuelle Installation für Zauberer. +* Nach der Systeminstallation:: Wenn die Installation erfolgreich war. +* Guix in einer VM installieren:: Ein »Guix System«-Spielplatz. * Ein Abbild zur Installation erstellen:: Wie ein solches entsteht. +Manuelle Installation + + + +* Tastaturbelegung und Netzwerkanbindung und Partitionierung:: Erstes + Einrichten. +* Fortfahren mit der Installation:: Installieren. + Paketverwaltung @@ -223,7 +233,7 @@ Substitute * Vom Vertrauen gegenüber Binärdateien:: Wie können Sie diesem binären Blob trauen? -Development +Entwicklung @@ -258,12 +268,12 @@ Zubehör * Aufruf von guix edit:: Paketdefinitionen bearbeiten. * Aufruf von guix download:: Herunterladen einer Datei und Ausgabe ihres Hashes. -* Aufruf von guix hash:: Den kryptographischen Hash einer Datei +* Aufruf von guix hash:: Den kryptografischen Hash einer Datei berechnen. * Aufruf von guix import:: Paketdefinitionen importieren. * Aufruf von guix refresh:: Paketdefinitionen aktualisieren. * Aufruf von guix lint:: Fehler in Paketdefinitionen finden. -* Aufruf von guix size:: Plattenverbrauch profilieren. +* Aufruf von guix size:: Plattenplatzverbrauch profilieren. * Aufruf von guix graph:: Den Paketgraphen visualisieren. * Aufruf von guix publish:: Substitute teilen. * Aufruf von guix challenge:: Die Substitut-Server anfechten. @@ -294,6 +304,7 @@ Systemkonfiguration * Dateisysteme:: Die Dateisystemeinbindungen konfigurieren. * Zugeordnete Geräte:: Näheres zu blockorientierten Speichermedien. * Benutzerkonten:: Benutzerkonten festlegen. +* Tastaturbelegung:: Wie das System Tastendrücke interpretiert. * Locales:: Sprache und kulturelle Konventionen. * Dienste:: Systemdienste festlegen. * Setuid-Programme:: Mit Administratorrechten startende Programme. @@ -302,7 +313,8 @@ Systemkonfiguration * Initiale RAM-Disk:: Linux-libre hochfahren. * Bootloader-Konfiguration:: Den Bootloader konfigurieren. * Aufruf von guix system:: Instanziierung einer Systemkonfiguration. -* Running Guix in a VM:: How to run Guix System in a virtual machine. +* Guix in einer VM starten:: Wie man »Guix System« in einer virtuellen + Maschine startet. * Dienste definieren:: Neue Dienstdefinitionen hinzufügen. Dienste @@ -354,59 +366,67 @@ Dienste definieren @chapter Einführung @cindex Zweck -GNU Guix@footnote{``Guix'' is pronounced like ``geeks'', or ``ɡiːks'' using -the international phonetic alphabet (IPA).} is a package management tool for -and distribution of the GNU system. Guix makes it easy for unprivileged -users to install, upgrade, or remove software packages, to roll back to a -previous package set, to build packages from source, and generally assists -with the creation and maintenance of software environments. +GNU Guix@footnote{»Guix« wird wie »geeks« ausgesprochen, also als »ɡiːks« in +der Notation des Internationalen Phonetischen Alphabets (IPA).} ist ein +Werkzeug zur Verwaltung von Softwarepaketen für das GNU-System und eine +Distribution desselbigen GNU-Systems. Guix macht es @emph{nicht} mit +besonderen Berechtigungen ausgestatteten, »unprivilegierten« Nutzern leicht, +Softwarepakete zu installieren, zu aktualisieren oder zu entfernen, zu einem +vorherigen Satz von Paketen zurückzuwechseln, Pakete aus ihrem Quellcode +heraus zu erstellen und hilft allgemein bei der Erzeugung und Wartung von +Software-Umgebungen. @cindex Guix System -@cindex GuixSD, now Guix System -@cindex Guix System Distribution, now Guix System -You can install GNU@tie{}Guix on top of an existing GNU/Linux system where -it complements the available tools without interference -(@pxref{Installation}), or you can use it as a standalone operating system -distribution, @dfn{Guix@tie{}System}@footnote{We used to refer to Guix -System as ``Guix System Distribution'' or ``GuixSD''. We now consider it -makes more sense to group everything under the ``Guix'' banner since, after -all, Guix System is readily available through the @command{guix system} -command, even if you're using a different distro underneath!}. @xref{GNU-Distribution}. +@cindex GuixSD, was jetzt Guix System heißt +@cindex Guix System Distribution, welche jetzt Guix System heißt +Sie können GNU@tie{}Guix auf ein bestehendes GNU/Linux-System aufsetzen, wo +es die bereits verfügbaren Werkzeuge ergänzt, ohne zu stören (siehe +@ref{Installation}), oder Sie können es als eine eigenständige +Betriebssystem-Distribution namens @dfn{Guix@tie{}System} +verwenden@footnote{Der Name @dfn{Guix@tie{}System} wird auf englische Weise +ausgesprochen. Früher hatten wir »Guix System« als »Guix System +Distribution« bezeichnet und mit »GuixSD« abgekürzt. Wir denken mittlerweile +aber, dass es sinnvoller ist, alles unter der Fahne von Guix zu gruppieren, +weil schließlich »Guix System« auch über den Befehl @command{guix system} +verfügbar ist, selbst wenn Sie Guix auf einer fremden Distribution +benutzen!}. Siehe @ref{GNU-Distribution}. @menu -* Managing Software the Guix Way:: What's special. -* GNU-Distribution:: The packages and tools. +* Auf Guix-Art Software verwalten:: Was Guix besonders macht. +* GNU-Distribution:: Die Pakete und Werkzeuge. @end menu -@node Managing Software the Guix Way -@section Managing Software the Guix Way +@node Auf Guix-Art Software verwalten +@section Auf Guix-Art Software verwalten @cindex Benutzeroberflächen -Guix provides a command-line package management interface (@pxref{Paketverwaltung}), tools to help with software development (@pxref{Development}), -command-line utilities for more advanced usage, (@pxref{Zubehör}), as well -as Scheme programming interfaces (@pxref{Programmierschnittstelle}). +Guix bietet eine befehlszeilenbasierte Paketverwaltungsschnittstelle (siehe +@ref{Aufruf von guix package}), Werkzeuge als Hilfestellung bei der +Software-Entwicklung (siehe @ref{Entwicklung}), Befehlszeilenwerkzeuge für +fortgeschrittenere Nutzung (siehe @ref{Zubehör}) sowie Schnittstellen zur +Programmierung in Scheme (siehe @ref{Programmierschnittstelle}). @cindex Erstellungs-Daemon Der @dfn{Erstellungs-Daemon} ist für das Erstellen von Paketen im Auftrag -von Nutzern verantwortlich (@pxref{Den Daemon einrichten}) und für das -Herunterladen vorerstellter Binärdateien aus autorisierten Quellen -(@pxref{Substitute}). +von Nutzern verantwortlich (siehe @ref{Den Daemon einrichten}) und für das +Herunterladen vorerstellter Binärdateien aus autorisierten Quellen (siehe +@ref{Substitute}). @cindex Erweiterbarkeit der Distribution @cindex Anpassung, von Paketen Guix enthält Paketdefinitionen für viele Pakete, von GNU und nicht von GNU, die alle @uref{https://www.gnu.org/philosophy/free-sw.html, die Freiheit des Computernutzers respektieren}. Es ist @emph{erweiterbar}: Nutzer können ihre -eigenen Paketdefinitionen schreiben (@pxref{Pakete definieren}) und sie als -unabhängige Paketmodule verfügbar machen (@pxref{Paketmodule}). Es ist -auch @emph{anpassbar}: Nutzer können spezialisierte Paketdefinitionen aus -bestehenden @emph{ableiten}, auch von der Befehlszeile (@pxref{Paketumwandlungsoptionen}). +eigenen Paketdefinitionen schreiben (siehe @ref{Pakete definieren}) und sie +als unabhängige Paketmodule verfügbar machen (siehe @ref{Paketmodule}). Es ist auch @emph{anpassbar}: Nutzer können spezialisierte +Paketdefinitionen aus bestehenden @emph{ableiten}, auch von der Befehlszeile +(siehe @ref{Paketumwandlungsoptionen}). @cindex funktionale Paketverwaltung @cindex Isolierung 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 -und zu installieren, als eine @emph{Funktion} im mathematischen Sinn +Paketverwaltung}, zu der Nix schon die Pionierarbeit geleistet hat (siehe +@ref{Danksagungen}). In Guix wird der Prozess, ein Paket zu erstellen und +zu installieren, als eine @emph{Funktion} im mathematischen Sinn aufgefasst. Diese Funktion hat Eingaben, wie zum Beispiel Erstellungs-Skripts, einen Compiler und Bibliotheken, und liefert ein installiertes Paket. Als eine reine Funktion hängt sein Ergebnis allein von @@ -422,36 +442,37 @@ dies zu erreichen, laufen Erstellungsprozesse in isolieren Umgebungen @cindex Store Das Ergebnis von Paketerstellungsfunktionen wird im Dateisystem @dfn{zwischengespeichert} in einem besonderen Verzeichnis, was als @dfn{der -Store} bezeichnet wird (@pxref{Der Store}). Jedes Paket wird in sein eigenes -Verzeichnis im Store installiert — standardmäßig ist er unter +Store} bezeichnet wird (siehe @ref{Der Store}). Jedes Paket wird in sein +eigenes Verzeichnis im Store installiert — standardmäßig ist er unter @file{/gnu/store} zu finden. Der Verzeichnisname enthält einen Hash aller Eingaben, anhand derer das Paket erzeugt wurde, somit hat das Ändern einer Eingabe einen völlig anderen Verzeichnisnamen zur Folge. Dieses Vorgehen ist die Grundlage für die Guix auszeichnenden Funktionalitäten: Unterstützung transaktionsbasierter Paketaktualisierungen -und -rückstufungen, Installation von Paketen als einfacher Nutzer sowie -Garbage Collection für Pakete (@pxref{Funktionalitäten}). +und -rücksetzungen, Installation von Paketen als einfacher Nutzer sowie +Garbage Collection für Pakete (siehe @ref{Funktionalitäten}). @node GNU-Distribution @section GNU-Distribution @cindex Guix System -Guix comes with a distribution of the GNU system consisting entirely of free -software@footnote{The term ``free'' here refers to the -@url{http://www.gnu.org/philosophy/free-sw.html,freedom provided to users of -that software}.}. The distribution can be installed on its own -(@pxref{Systeminstallation}), but it is also possible to install Guix as a -package manager on top of an installed GNU/Linux system -(@pxref{Installation}). When we need to distinguish between the two, we -refer to the standalone distribution as Guix@tie{}System. +Mit Guix kommt eine Distribution des GNU-Systems, die nur aus freier +Software@footnote{Die Bezeichnung »frei« steht hier für die +@url{http://www.gnu.org/philosophy/free-sw.html,Freiheiten, die Nutzern der +Software geboten werden}.} besteht. Die Distribution kann für sich allein +installiert werden (siehe @ref{Systeminstallation}), aber Guix kann auch +auf einem bestehenden GNU/Linux-System installiert werden. Wenn wir die +Anwendungsfälle unterscheiden möchten, bezeichnen wir die alleinstehende +Distribution als »Guix@tie{}System« (mit englischer Aussprache). Die Distribution stellt den Kern der GNU-Pakete, also insbesondere GNU libc, GCC und Binutils, sowie zahlreiche zum GNU-Projekt gehörende und nicht dazu gehörende Anwendungen zur Verfügung. Die vollständige Liste verfügbarer Pakete können Sie @url{http://www.gnu.org/software/guix/packages,online} -einsehen, oder indem Sie @command{guix package} ausführen (@pxref{Aufruf von guix package}): +einsehen, oder indem Sie @command{guix package} ausführen (siehe +@ref{Aufruf von guix package}): @example guix package --list-available @@ -480,7 +501,7 @@ ARMv7-A-Architektur mit »hard float«, Thumb-2 und NEON, für die EABI @item aarch64-linux 64-Bit-ARMv8-A-Prozessoren, little-endian, Linux-Libre als Kernel. Derzeit ist dies noch in der Erprobungsphase mit begrenzter Unterstützung. Unter -@xref{Mitwirken} steht, wie Sie dabei helfen können! +@ref{Mitwirken} steht, wie Sie dabei helfen können! @item mips64el-linux 64-Bit-MIPS-Prozessoren, little-endian, insbesondere die Loongson-Reihe, @@ -488,22 +509,24 @@ n32-ABI, mit Linux-Libre als Kernel. @end table -With Guix@tie{}System, you @emph{declare} all aspects of the operating -system configuration and Guix takes care of instantiating the configuration -in a transactional, reproducible, and stateless fashion (@pxref{Systemkonfiguration}). Guix System uses the Linux-libre kernel, the Shepherd -initialization system (@pxref{Einführung,,, shepherd, The GNU Shepherd -Manual}), the well-known GNU utilities and tool chain, as well as the -graphical environment or system services of your choice. +Mit Guix@tie{}System @emph{deklarieren} Sie alle Aspekte der +Betriebssystemkonfiguration und Guix kümmert sich darum, die Konfiguration +auf transaktionsbasierte, reproduzierbare und zustandslose Weise zu +instanziieren (siehe @ref{Systemkonfiguration}). Guix System benutzt den +Kernel Linux-libre, das Shepherd-Initialisierungssystem (siehe +@ref{Einführung,,, shepherd, The GNU Shepherd Manual}), die wohlbekannten +GNU-Werkzeuge mit der zugehörigen Werkzeugkette sowie die grafische Umgebung +und Systemdienste Ihrer Wahl. -Guix System is available on all the above platforms except -@code{mips64el-linux}. +Guix System ist auf allen oben genannten Plattformen außer +@code{mips64el-linux} verfügbar. @noindent Informationen, wie auf andere Architekturen oder Kernels portiert werden -kann, finden Sie im Abschnitt @pxref{Portierung}. +kann, finden Sie im Abschnitt @ref{Portierung}. Diese Distribution aufzubauen basiert auf Kooperation, und Sie sind herzlich -eingeladen, dabei mitzumachen! Im Abschnitt @xref{Mitwirken} stehen +eingeladen, dabei mitzumachen! Im Abschnitt @ref{Mitwirken} stehen weitere Informationen, wie Sie uns helfen können. @@ -514,37 +537,40 @@ weitere Informationen, wie Sie uns helfen können. @cindex Guix installieren @quotation Anmerkung -We recommend the use of this +Wir empfehlen, dieses @uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh, -shell installer script} to install Guix on top of a running GNU/Linux -system, thereafter called a @dfn{foreign distro}.@footnote{This section is -concerned with the installation of the package manager, which can be done on -top of a running GNU/Linux system. If, instead, you want to install the -complete GNU operating system, @pxref{Systeminstallation}.} The script -automates the download, installation, and initial configuration of Guix. It -should be run as the root user. +Shell-basierte Installationsskript} zu benutzen, um Guix auf ein bestehendes +GNU/Linux-System zu installieren — im Folgenden als @dfn{Fremddistribution} +bezeichnet.@footnote{Dieser Abschnitt bezieht sich auf die Installation des +Paketverwaltungswerkzeugs, das auf ein bestehendes GNU/Linux-System +aufsetzend installiert werden kann. Wenn Sie stattdessen das vollständige +GNU-Betriebssystem installieren möchten, lesen Sie @ref{Systeminstallation}.} Das Skript automatisiert das Herunterladen, das Installieren +und die anfängliche Konfiguration von Guix. Es sollte als der +Administratornutzer »root« ausgeführt werden. @end quotation @cindex Fremddistribution @cindex Verzeichnisse auf einer Fremddistribution -When installed on a foreign distro, GNU@tie{}Guix complements the available -tools without interference. Its data lives exclusively in two directories, -usually @file{/gnu/store} and @file{/var/guix}; other files on your system, -such as @file{/etc}, are left untouched. +Wenn es auf einer Fremddistribution installiert wird, ergänzt GNU@tie{}Guix +die verfügbaren Werkzeuge, ohne dass sie sich gegenseitig stören. Guix’ +Daten befinden sich ausschließlich in zwei Verzeichnissen, üblicherweise +@file{/gnu/store} und @file{/var/guix}; andere Dateien auf Ihrem System wie +@file{/etc} bleiben unberührt. Sobald es installiert ist, kann Guix durch Ausführen von @command{guix pull} -aktualisiert werden (@pxref{Aufruf von guix pull}). +aktualisiert werden (siehe @ref{Aufruf von guix pull}). -If you prefer to perform the installation steps manually or want to tweak -them, you may find the following subsections useful. They describe the -software requirements of Guix, as well as how to install it manually and get -ready to use it. +Sollten Sie es vorziehen, die Installationsschritte manuell durchzuführen, +oder falls Sie Anpassungen daran vornehmen möchten, könnten sich die +folgenden Unterabschnitte als nützlich erweisen. Diese beschreiben die +Software-Voraussetzungen von Guix und wie man es manuell installiert, so +dass man es benutzen kann. @menu * Aus Binärdatei installieren:: Guix installieren, ohne Zeit zu verlieren! * Voraussetzungen:: Zum Erstellen und Benutzen von Guix nötige Software. -* Die Testsuite laufen lassen:: Guix testen. +* Den Testkatalog laufen lassen:: Guix testen. * Den Daemon einrichten:: Wie man die Umgebung des Erstellungs-Daemons einrichtet. * Aufruf des guix-daemon:: Den Erstellungs-Daemon laufen lassen. @@ -608,7 +634,7 @@ ausführen. Danach führen Sie als @code{root}-Nutzer aus: # mv var/guix /var/ && mv gnu / @end example -Dadurch wird @file{/gnu/store} (@pxref{Der Store}) und @file{/var/guix} +Dadurch wird @file{/gnu/store} (siehe @ref{Der Store}) und @file{/var/guix} erzeugt. Letzteres enthält ein fertiges Guix-Profil für den Administratornutzer @code{root} (wie im nächsten Schritt beschrieben). @@ -625,7 +651,7 @@ abhängt, wann es erstellt wurde, und es somit reproduzierbar wird. @item Machen Sie das Profil als @file{~root/.config/guix/current} verfügbar, wo -@command{guix pull} es aktualisieren kann (@pxref{Aufruf von guix pull}): +@command{guix pull} es aktualisieren kann (siehe @ref{Aufruf von guix pull}): @example # mkdir -p ~root/.config/guix @@ -643,7 +669,7 @@ Umgebungsvariable zu ergänzen: @item Erzeugen Sie Nutzergruppe und Nutzerkonten für die Erstellungs-Benutzer wie -folgt (@pxref{Einrichten der Erstellungsumgebung}). +folgt (siehe @ref{Einrichten der Erstellungsumgebung}). @item Führen Sie den Daemon aus, und lassen Sie ihn automatisch bei jedem @@ -703,14 +729,15 @@ verfügbar zu machen: Auf diese Art wird, unter der Annahme, dass bei Ihnen @file{/usr/local/share/info} im Suchpfad eingetragen ist, das Ausführen von -@command{info guix} dieses Handbuch öffnen (@pxref{Other Info Directories,,, -texinfo, GNU Texinfo} hat weitere Details, wie Sie den Info-Suchpfad ändern -können). +@command{info guix.de} dieses Handbuch öffnen (siehe @ref{Other Info +Directories,,, texinfo, GNU Texinfo} hat weitere Details, wie Sie den +Info-Suchpfad ändern können). @item @cindex Substitute, deren Autorisierung -To use substitutes from @code{@value{SUBSTITUTE-SERVER}} or one of its -mirrors (@pxref{Substitute}), authorize them: +Um Substitute von @code{@value{SUBSTITUTE-SERVER}} oder einem Spiegelserver +davon zu benutzen (siehe @ref{Substitute}), müssen sie erst autorisiert +werden: @example # guix archive --authorize < \ @@ -719,7 +746,7 @@ mirrors (@pxref{Substitute}), authorize them: @item Alle Nutzer müssen womöglich ein paar zusätzliche Schritte ausführen, damit -ihre Guix-Umgebung genutzt werden kann, siehe @pxref{Anwendungen einrichten}. +ihre Guix-Umgebung genutzt werden kann, siehe @ref{Anwendungen einrichten}. @end enumerate Voilà, die Installation ist fertig! @@ -745,14 +772,14 @@ make guix-binary.@var{System}.tar.xz @end example @noindent -...@: which, in turn, runs: +…@: was wiederum dies ausführt: @example 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 +Siehe @ref{Aufruf von guix pack} für weitere Informationen zu diesem praktischen Werkzeug. @node Voraussetzungen @@ -765,19 +792,19 @@ GNU-Software und wird hier nicht beschrieben. Bitte lesen Sie die Dateien erfahren. @cindex Offizielle Webpräsenz -GNU Guix is available for download from its website at -@url{https://www.gnu.org/software/guix/}. +GNU Guix kann von seiner Webpräsenz unter +@url{http://www.gnu.org/software/guix/} heruntergeladen werden. GNU Guix hat folgende Pakete als Abhängigkeiten: @itemize -@item @url{http://gnu.org/software/guile/, GNU Guile}, version 2.2.x; +@item @url{http://gnu.org/software/guile/, GNU Guile}, Version 2.2.x, @item @url{https://notabug.org/cwebber/guile-gcrypt, Guile-Gcrypt}, Version 0.1.0 oder neuer, @item -@uref{http://gnutls.org/, GnuTLS}, im Speziellen dessen Bindungen für Guile -(@pxref{Guile Preparations, how to install the GnuTLS bindings for Guile,, -gnutls-guile, GnuTLS-Guile}), +@uref{http://gnutls.org/, GnuTLS}, im Speziellen dessen Anbindungen für +Guile (siehe @ref{Guile Preparations, how to install the GnuTLS bindings for +Guile,, gnutls-guile, GnuTLS-Guile}), @item @uref{https://notabug.org/guile-sqlite3/guile-sqlite3, Guile-SQLite3}, Version 0.1.0 oder neuer, @@ -785,7 +812,7 @@ Version 0.1.0 oder neuer, @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 oder neuer, -@item @uref{https://savannah.nongnu.org/projects/guile-json/, Guile-JSON}; +@item @uref{https://savannah.nongnu.org/projects/guile-json/, Guile-JSON}, @item @url{http://zlib.net, zlib}, @item @url{http://www.gnu.org/software/make/, GNU Make}. @end itemize @@ -795,7 +822,7 @@ Folgende Abhängigkeiten sind optional: @itemize @item @c Note: We need at least 0.10.2 for 'channel-send-eof'. -Unterstützung für das Auslagern von Erstellungen (@pxref{Auslagern des Daemons einrichten}) und @command{guix copy} (@pxref{Aufruf von guix copy}) hängt von +Unterstützung für das Auslagern von Erstellungen (siehe @ref{Auslagern des Daemons einrichten}) und @command{guix copy} (siehe @ref{Aufruf von guix copy}) hängt von @uref{https://github.com/artyom-poptsov/guile-ssh, Guile-SSH}, Version 0.10.2 oder neuer, ab. @@ -819,10 +846,10 @@ Sollten Sie Guix auf einem System konfigurieren, auf dem Guix bereits installiert ist, dann stellen Sie sicher, dasselbe Zustandsverzeichnis wie für die bestehende Installation zu verwenden. Benutzen Sie dazu die Befehlszeilenoption @code{--localstatedir} des @command{configure}-Skripts -(@pxref{Directory Variables, @code{localstatedir},, standards, GNU Coding -Standards}). Das @command{configure}-Skript schützt vor ungewollter +(siehe @ref{Directory Variables, @code{localstatedir},, standards, GNU +Coding Standards}). Das @command{configure}-Skript schützt vor ungewollter Fehlkonfiguration der @var{localstatedir}, damit sie nicht versehentlich -Ihren Store verfälschen (@pxref{Der Store}). +Ihren Store verfälschen (siehe @ref{Der Store}). @cindex Nix, Kompatibilität Wenn eine funktionierende Installation of @url{http://nixos.org/nix/, the @@ -834,15 +861,15 @@ Guix ist mit Nix kompatibel, daher ist es möglich, denselben Store für beide zu verwenden. Dazu müssen Sie an @command{configure} nicht nur denselben Wert für @code{--with-store-dir} übergeben, sondern auch denselben Wert für @code{--localstatedir}. Letzterer ist deswegen essenziell, weil er unter -Anderem angibt, wo die Datenbank liegt, in der sich die Metainformationen +anderem angibt, wo die Datenbank liegt, in der sich die Metainformationen über den Store befinden. Für Nix sind die Werte standardmäßig @code{--with-store-dir=/nix/store} und @code{--localstatedir=/nix/var}. Beachten Sie, dass @code{--disable-daemon} nicht erforderlich ist, wenn Sie die Absicht haben, den Store mit Nix zu teilen. -@node Die Testsuite laufen lassen -@section Die Testsuite laufen lassen +@node Den Testkatalog laufen lassen +@section Den Testkatalog laufen lassen @cindex Testkatalog Nachdem @command{configure} und @code{make} erfolgreich durchgelaufen sind, @@ -882,12 +909,13 @@ make check TESTS="tests/base64.scm" SCM_LOG_DRIVER_FLAGS="--brief=no" 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 benutzte Version -von Guix an sowie die Versionsnummern der Abhängigkeiten -(@pxref{Voraussetzungen}). +von Guix an sowie die Versionsnummern der Abhängigkeiten (siehe +@ref{Voraussetzungen}). -Guix also comes with a whole-system test suite that tests complete Guix -System instances. It can only run on systems where Guix is already -installed, using: +Guix wird auch mit einem Testkatalog für das ganze System ausgeliefert, der +vollständige Instanzen des »Guix System«-Betriebssystems testet. Er kann nur +auf Systemen benutzt werden, auf denen Guix bereits installiert ist, mit +folgendem Befehl: @example make check-system @@ -906,7 +934,7 @@ definiert. Sie funktionieren, indem Sie das getestete Betriebssystem mitsamt schlichter Instrumentierung in einer virtuellen Maschine (VM) ausführen. Die Tests können aufwendige Berechnungen durchführen oder sie günstig umgehen, je nachdem, ob für ihre Abhängigkeiten Substitute zur Verfügung stehen -(@pxref{Substitute}). Manche von ihnen nehmen viel Speicherplatz in +(siehe @ref{Substitute}). Manche von ihnen nehmen viel Speicherplatz in Anspruch, um die VM-Abbilder zu speichern. Auch hier gilt: Falls Testfehler auftreten, senden Sie bitte alle Details an @@ -964,8 +992,8 @@ wenn der Daemon @code{root}-Rechte in Erstellungsprozessen ablegt. Mehrere solche Benutzer zu haben, ermöglicht es dem Daemon, verschiedene Erstellungsprozessen unter verschiedenen Benutzeridentifikatoren (UIDs) zu starten, was garantiert, dass sie einander nicht stören — eine essenzielle -Funktionalität, da Erstellungen als reine Funktionen angesehen werden -(@pxref{Einführung}). +Funktionalität, da Erstellungen als reine Funktionen angesehen werden (siehe +@ref{Einführung}). Auf einem GNU/Linux-System kann ein Pool von Erstellungsbenutzern wie folgt erzeugt werden (mit Bash-Syntax und den Befehlen von @code{shadow}): @@ -986,12 +1014,12 @@ 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} vorgegeben werden kann (@pxref{Aufruf des guix-daemon, +@option{--max-jobs} vorgegeben werden kann (siehe @ref{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} -haben, mit @code{-G guixbuild,kvm} statt @code{-G guixbuild} -(@pxref{Aufruf von guix system}). +haben, mit @code{-G guixbuild,kvm} statt @code{-G guixbuild} (siehe +@ref{Aufruf von guix system}). Das Programm @code{guix-daemon} kann mit dem folgenden Befehl als @code{root} gestartet werden@footnote{Wenn Ihre Maschine systemd als @@ -1041,20 +1069,20 @@ Eintrag für den Benutzer @file{nobody}, einem @file{/tmp}-Verzeichnis mit Schreibrechten. @end itemize -Sie können beeinflussen, in welchem Verzeichnis der Daemon Erstellungsbäume -unterbringt, indem sie den Wert der Umgebungsvariablen @code{TMPDIR} -ändern. Allerdings heißt innerhalb des chroots der Erstellungsbaum immer -@file{/tmp/guix-build-@var{name}.drv-0}, wobei @var{name} der Ableitungsname -ist — z.B. @code{coreutils-8.24}. Dadurch hat der Wert von @code{TMPDIR} -keinen Einfluss auf die Erstellungsumgebung, wodurch Unterschiede vermieden -werden, falls Erstellungsprozesse den Namen ihres Erstellungsbaumes -einfangen. +Sie können beeinflussen, in welchem Verzeichnis der Daemon Verzeichnisbäume +zur Erstellung unterbringt, indem sie den Wert der Umgebungsvariablen +@code{TMPDIR} ändern. Allerdings heißt innerhalb des chroots der +Erstellungsbaum immer @file{/tmp/guix-build-@var{Name}.drv-0}, wobei +@var{Name} der Ableitungsname ist — z.B.@: @code{coreutils-8.24}. Dadurch +hat der Wert von @code{TMPDIR} keinen Einfluss auf die Erstellungsumgebung, +wodurch Unterschiede vermieden werden, falls Erstellungsprozesse den Namen +ihres Erstellungsbaumes einfangen. @vindex http_proxy Der Daemon befolgt außerdem den Wert der Umgebungsvariablen @code{http_proxy} für von ihm durchgeführte HTTP-Downloads, sei es für -Ableitungen mit fester Ausgabe (@pxref{Ableitungen}) oder für Substitute -(@pxref{Substitute}). +Ableitungen mit fester Ausgabe (siehe @ref{Ableitungen}) oder für Substitute +(siehe @ref{Substitute}). Wenn Sie Guix als ein Benutzer ohne erweiterte Rechte installieren, ist es dennoch möglich, @command{guix-daemon} auszuführen, sofern Sie @@ -1071,20 +1099,20 @@ Funktionen aufzufassen. @cindex auslagern @cindex Build-Hook -Wenn erwünscht kann der Erstellungs-Daemon Ableitungserstellungen -@dfn{auslagern} auf andere Maschinen, auf denen Guix läuft, mit Hilfe des -@code{offload}-»@dfn{Build-Hooks}«@footnote{Diese Funktionalität ist nur +Wenn erwünscht, kann der Erstellungs-Daemon Ableitungserstellungen auf +andere Maschinen @dfn{auslagern}, auf denen Guix läuft, mit Hilfe des +@code{offload}-@dfn{Build-Hooks}@footnote{Diese Funktionalität ist nur verfügbar, wenn @uref{https://github.com/artyom-poptsov/guile-ssh, Guile-SSH} vorhanden ist.}. Wenn diese Funktionalität aktiviert ist, wird eine nutzerspezifizierte Liste von Erstellungsmaschinen aus @file{/etc/guix/machines.scm} gelesen. Wann immer eine Erstellung angefragt wird, zum Beispiel durch @code{guix build}, versucht der Daemon, sie an eine der Erstellungsmaschinen auszulagern, die die Einschränkungen der Ableitung -erfüllen, insbesondere ihren Systemtyp — z.B. @file{x86_64-linux}. Fehlende -Voraussetzungen für die Erstellung werden über SSH auf die Zielmaschine -kopiert, welche dann mit der Erstellung weitermacht. Hat sie Erfolg damit, -so werden die Ausgabe oder Ausgaben der Erstellung zurück auf die -ursprüngliche Maschine kopiert. +erfüllen, insbesondere ihren Systemtyp — z.B.@: +@file{x86_64-linux}. Fehlende Voraussetzungen für die Erstellung werden über +SSH auf die Zielmaschine kopiert, welche dann mit der Erstellung +weitermacht. Hat sie Erfolg damit, so werden die Ausgabe oder Ausgaben der +Erstellung zurück auf die ursprüngliche Maschine kopiert. Die Datei @file{/etc/guix/machines.scm} sieht normalerweise so aus: @@ -1117,9 +1145,9 @@ sie zurückliefert, muss eine Liste von @code{build-machine}-Objekten sein. Obwohl dieses Beispiel eine feste Liste von Erstellungsmaschinen zeigt, könnte man auch auf die Idee kommen, etwa mit DNS-SD eine Liste möglicher im lokalen Netzwerk entdeckter Erstellungsmaschinen zu liefern -(@pxref{Einführung, Guile-Avahi,, guile-avahi, Using Avahi in Guile Scheme -Programs}). Der Datentyp @code{build-machine} wird im Folgenden weiter -ausgeführt. +(siehe @ref{Einführung, Guile-Avahi,, guile-avahi, Using Avahi in Guile +Scheme Programs}). Der Datentyp @code{build-machine} wird im Folgenden +weiter ausgeführt. @deftp {Datentyp} build-machine Dieser Datentyp repräsentiert Erstellungsmaschinen, an die der Daemon @@ -1128,10 +1156,10 @@ Erstellungen auslagern darf. Die wichtigen Felder sind: @table @code @item name -Der Hostname (d.h. der Rechnername) der entfernten Maschine. +Der Hostname (d.h.@: der Rechnername) der entfernten Maschine. @item system -Der Systemtyp der entfernten Maschine — z.B. @code{"x86_64-linux"}. +Der Systemtyp der entfernten Maschine — z.B.@: @code{"x86_64-linux"}. @item user Das Benutzerkonto, mit dem eine Verbindung zur entfernten Maschine über SSH @@ -1156,8 +1184,8 @@ zu finden. Wenn auf der Maschine der SSH-Daemon von GNU@tie{}lsh, nämlich @command{lshd}, läuft, befindet sich der Host-Schlüssel in @file{/etc/lsh/host-key.pub} oder einer ähnlichen Datei. Er kann ins -OpenSSH-Format umgewandelt werden durch @command{lsh-export-key} -(@pxref{Converting keys,,, lsh, LSH Manual}): +OpenSSH-Format umgewandelt werden durch @command{lsh-export-key} (siehe +@ref{Converting keys,,, lsh, LSH Manual}): @example $ lsh-export-key --openssh < /etc/lsh/host-key.pub @@ -1214,8 +1242,8 @@ eingeplant. @end table @end deftp -The @command{guix} command must be in the search path on the build -machines. You can check whether this is the case by running: +Der Befehl @code{guix} muss sich im Suchpfad der Erstellungsmaschinen +befinden. Um dies nachzuprüfen, können Sie Folgendes ausführen: @example ssh build-machine guix repl --version @@ -1226,7 +1254,7 @@ eingerichtet ist. Wie zuvor erklärt, werden beim Auslagern Dateien zwischen den Stores der Maschinen hin- und hergeschickt. Damit das funktioniert, müssen Sie als Erstes ein Schlüsselpaar auf jeder Maschine erzeugen, damit der Daemon signierte Archive mit den Dateien aus dem Store versenden kann -(@pxref{Aufruf von guix archive}): +(siehe @ref{Aufruf von guix archive}): @example # guix archive --generate-key @@ -1294,11 +1322,12 @@ diesen Befehl auf dem Hauptknoten aus: @cindex SELinux, Policy für den Daemon @cindex Mandatory Access Control, SELinux @cindex Sicherheit, des guix-daemon -Guix includes an SELinux policy file at @file{etc/guix-daemon.cil} that can -be installed on a system where SELinux is enabled, in order to label Guix -files and to specify the expected behavior of the daemon. Since Guix System -does not provide an SELinux base policy, the daemon policy cannot be used on -Guix System. +Guix enthält eine SELinux-Richtliniendatei (»Policy«) unter +@file{etc/guix-daemon.cil}, die auf einem System installiert werden kann, +auf dem SELinux aktiviert ist, damit Guix-Dateien gekennzeichnet sind und um +das erwartete Verhalten des Daemons anzugeben. Da Guix System keine +Grundrichtlinie (»Base Policy«) für SELinux bietet, kann diese Richtlinie +für den Daemon auf Guix System nicht benutzt werden. @subsubsection Installieren der SELinux-Policy @cindex SELinux, Policy installieren @@ -1396,7 +1425,7 @@ verfügbar ist, etc. Normalerweise wird er so als Administratornutzer @end example @noindent -Details, wie Sie ihn einrichten, finden Sie im Abschnitt @pxref{Den Daemon einrichten}. +Details, wie Sie ihn einrichten, finden Sie im Abschnitt @ref{Den Daemon einrichten}. @cindex chroot @cindex Container, Erstellungsumgebung @@ -1407,13 +1436,13 @@ unterschiedlichen UIDs aus, die aus der Erstellungsgruppe stammen, deren Name mit @code{--build-users-group} übergeben wurde. Außerdem läuft jeder Erstellungsprozess in einer chroot-Umgebung, die nur die Teilmenge des Stores enthält, von der der Erstellungsprozess abhängt, entsprechend seiner -Ableitung (@pxref{Programmierschnittstelle, derivation}), und ein paar +Ableitung (siehe @ref{Programmierschnittstelle, derivation}), und ein paar bestimmte Systemverzeichnisse, darunter standardmäßig auch @file{/dev} und @file{/dev/pts}. Zudem ist die Erstellungsumgebung auf GNU/Linux ein @dfn{Container}: Nicht nur hat er seinen eigenen Dateisystembaum, er hat auch einen separaten Namensraum zum Einhängen von Dateisystemen, seinen eigenen Namensraum für PIDs, für Netzwerke, etc. Dies hilft dabei, -reproduzierbare Erstellungen zu garantieren (@pxref{Funktionalitäten}). +reproduzierbare Erstellungen zu garantieren (siehe @ref{Funktionalitäten}). Wenn der Daemon im Auftrag des Nutzers eine Erstellung durchführt, erzeugt er ein Erstellungsverzeichnis, entweder in @file{/tmp} oder im Verzeichnis, @@ -1424,50 +1453,51 @@ läuft, allerdings trägt es im Container stattdessen immer den Namen Nach Abschluss der Erstellung wird das Erstellungsverzeichnis automatisch entfernt, außer wenn die Erstellung fehlgeschlagen ist und der Client -@option{--keep-failed} angegeben hat (@pxref{Aufruf von guix build, +@option{--keep-failed} angegeben hat (siehe @ref{Aufruf von guix build, @option{--keep-failed}}). Der Daemon lauscht auf Verbindungen und erstellt jeweils einen Unterprozess -für jede von einem Client begonnene Sitzung (d.h. von einem der -@command{guix}-Unterbefehle.) Der Befehl @command{guix processes} zeigt +für jede von einem Client begonnene Sitzung (d.h.@: von einem der +@command{guix}-Unterbefehle). Der Befehl @command{guix processes} zeigt Ihnen eine Übersicht solcher Systemaktivitäten; damit werden Ihnen alle aktiven Sitzungen und Clients gezeigt. Weitere Informationen finden Sie -unter @xref{Aufruf von guix processes}. +unter @ref{Aufruf von guix processes}. Die folgenden Befehlszeilenoptionen werden unterstützt: @table @code @item --build-users-group=@var{Gruppe} Verwende die Benutzerkonten aus der @var{Gruppe}, um Erstellungsprozesse -auszuführen (@pxref{Den Daemon einrichten, build users}). +auszuführen (siehe @ref{Den Daemon einrichten, build users}). @item --no-substitutes @cindex Substitute Benutze keine Substitute für Erstellungsergebnisse. Das heißt, dass alle Objekte lokal erstellt werden müssen, und kein Herunterladen von vorab -erstellten Binärdateien erlaubt ist (@pxref{Substitute}). +erstellten Binärdateien erlaubt ist (siehe @ref{Substitute}). Wenn der Daemon mit @code{--no-substitutes} ausgeführt wird, können Clients trotzdem Substitute explizit aktivieren über den entfernten Prozeduraufruf -@code{set-build-options} (@pxref{Der Store}). +@code{set-build-options} (siehe @ref{Der Store}). @item --substitute-urls=@var{URLs} @anchor{daemon-substitute-urls} -Consider @var{urls} the default whitespace-separated list of substitute -source URLs. When this option is omitted, -@indicateurl{https://@value{SUBSTITUTE-SERVER}} is used. +@var{URLs} als standardmäßige, leerzeichengetrennte Liste der Quell-URLs für +Substitute benutzen. Wenn diese Befehlszeilenoption @emph{nicht} angegeben +wird, wird @indicateurl{https://@value{SUBSTITUTE-SERVER}} verwendet. Das hat zur Folge, dass Substitute von den @var{URLs} heruntergeladen werden können, solange sie mit einer Signatur versehen sind, der vertraut wird -(@pxref{Substitute}). +(siehe @ref{Substitute}). @cindex Build-Hook @item --no-build-hook -Den »@dfn{Build-Hook}« nicht benutzen. +Den @dfn{Build-Hook} nicht benutzen. »Build-Hook« ist der Name eines Hilfsprogramms, das der Daemon starten kann und an das er Erstellungsanfragen übermittelt. Durch diesen Mechanismus -können Erstellungen an andere Maschinen ausgelagert werden (@pxref{Auslagern des Daemons einrichten}). +können Erstellungen an andere Maschinen ausgelagert werden (siehe +@ref{Auslagern des Daemons einrichten}). @item --cache-failures Fehler bei der Erstellung zwischenspeichern. Normalerweise werden nur @@ -1477,7 +1507,7 @@ Wenn diese Befehlszeilenoption benutzt wird, kann @command{guix gc --list-failures} benutzt werden, um die Menge an Store-Objekten abzufragen, die als Fehlschläge markiert sind; @command{guix gc --clear-failures} entfernt Store-Objekte aus der Menge zwischengespeicherter -Fehlschläge. @xref{Aufruf von guix gc}. +Fehlschläge. Siehe @ref{Aufruf von guix gc}. @item --cores=@var{n} @itemx -c @var{n} @@ -1486,7 +1516,7 @@ viele wie verfügbar sind. Der Vorgabewert ist @code{0}, jeder Client kann jedoch eine abweichende Anzahl vorgeben, zum Beispiel mit der Befehlszeilenoption @code{--cores} von -@command{guix build} (@pxref{Aufruf von guix build}). +@command{guix build} (siehe @ref{Aufruf von guix build}). Dadurch wird die Umgebungsvariable @code{NIX_BUILD_CORES} im Erstellungsprozess definiert, welcher sie benutzen kann, um intern parallele @@ -1497,7 +1527,8 @@ Ausführungen zuzulassen — zum Beispiel durch Nutzung von @code{make @itemx -M @var{n} Höchstenss @var{n} Erstellungsaufträge parallel bearbeiten. Der Vorgabewert liegt bei @code{1}. Wird er auf @code{0} gesetzt, werden keine Erstellungen -lokal durchgeführt, stattdessen lagert der Daemon sie nur aus (@pxref{Auslagern des Daemons einrichten}) oder sie schlagen einfach fehl. +lokal durchgeführt, stattdessen lagert der Daemon sie nur aus (siehe +@ref{Auslagern des Daemons einrichten}) oder sie schlagen einfach fehl. @item --max-silent-time=@var{Sekunden} Wenn der Erstellungs- oder Substitutionsprozess länger als @@ -1508,7 +1539,7 @@ Der Vorgabewert ist @code{0}, was bedeutet, dass es keine Zeitbeschränkung gibt. Clients können einen anderen Wert als den hier angegebenen verwenden lassen -(@pxref{Gemeinsame Erstellungsoptionen, @code{--max-silent-time}}). +(siehe @ref{Gemeinsame Erstellungsoptionen, @code{--max-silent-time}}). @item --timeout=@var{Sekunden} Entsprechend wird hier der Erstellungs- oder Substitutionsprozess @@ -1518,13 +1549,13 @@ abgebrochen und als Fehlschlag gemeldet, wenn er mehr als Der Vorgabewert ist @code{0}, was bedeutet, dass es keine Zeitbeschränkung gibt. -Clients können einen anderen Wert verwenden lassen (@pxref{Gemeinsame Erstellungsoptionen, @code{--timeout}}). +Clients können einen anderen Wert verwenden lassen (siehe @ref{Gemeinsame Erstellungsoptionen, @code{--timeout}}). @item --rounds=@var{N} Jede Ableitung @var{n}-mal hintereinander erstellen und einen Fehler melden, wenn nacheinander ausgewertete Erstellungsergebnisse nicht Bit für Bit identisch sind. Beachten Sie, dass Clients wie @command{guix build} einen -anderen Wert verwenden lassen können (@pxref{Aufruf von guix build}). +anderen Wert verwenden lassen können (siehe @ref{Aufruf von guix build}). Wenn dies zusammen mit @option{--keep-failed} benutzt wird, bleiben die sich unterscheidenden Ausgaben im Store unter dem Namen @@ -1537,7 +1568,7 @@ Informationen zur Fehlersuche ausgeben. Dies ist nützlich, um Probleme beim Starten des Daemons nachzuvollziehen; Clients könn aber auch ein abweichenden Wert verwenden lassen, zum Beispiel mit der Befehlszeilenoption @code{--verbosity} von @command{guix build} -(@pxref{Aufruf von guix build}). +(siehe @ref{Aufruf von guix build}). @item --chroot-directory=@var{Verzeichnis} Füge das @var{Verzeichnis} zum chroot von Erstellungen hinzu. @@ -1587,14 +1618,14 @@ Ableitungen behalten muss (»yes«) oder nicht (»no«). Für »yes« behält der Müllsammler die Ausgaben aller lebendigen Ableitungen im Store — die @code{.drv}-Dateien. Der Vorgabewert ist aber »no«, so dass Ableitungsausgaben nur vorgehalten werden, wenn sie von einer -Müllsammlerwurzel aus erreichbar sind. Siehe den Abschnitt @xref{Aufruf von guix gc} für weitere Informationen zu Müllsammlerwurzeln. +Müllsammlerwurzel aus erreichbar sind. Siehe den Abschnitt @ref{Aufruf von guix gc} für weitere Informationen zu Müllsammlerwurzeln. @item --gc-keep-derivations[=yes|no] Gibt an, ob der Müllsammler (GC) Ableitungen behalten muss (»yes«), wenn sie lebendige Ausgaben haben, oder nicht (»no«). -Für »yes«, den Vorgabewert, behält der Müllsammler Ableitungen — -z.B. @code{.drv}-Dateien —, solange zumindest eine ihrer Ausgaben lebendig +Für »yes«, den Vorgabewert, behält der Müllsammler Ableitungen — z.B.@: +@code{.drv}-Dateien —, solange zumindest eine ihrer Ausgaben lebendig ist. Dadurch können Nutzer den Ursprung der Dateien in ihrem Store nachvollziehen. Setzt man den Wert auf »no«, wird ein bisschen weniger Speicher auf der Platte verbraucht. @@ -1630,8 +1661,8 @@ erkannt wurde, wie zum Beispiel @code{x86_64-linux}. Lausche am @var{Endpunkt} auf Verbindungen. Dabei wird der @var{Endpunkt} als Dateiname eines Unix-Sockets verstanden, wenn er mit einem @code{/} (Schrägstrich) beginnt. Andernfalls wird der @var{Endpunkt} als Hostname -(d.h. Rechnername) oder als Hostname-Port-Paar verstanden, auf dem gelauscht -wird. Hier sind ein paar Beispiele: +(d.h.@: Rechnername) oder als Hostname-Port-Paar verstanden, auf dem +gelauscht wird. Hier sind ein paar Beispiele: @table @code @item --listen=/gnu/var/daemon @@ -1655,16 +1686,16 @@ Diese Befehlszeilenoption kann mehrmals wiederholt werden. In diesem Fall akzeptiert @command{guix-daemon} Verbindungen auf allen angegebenen Endpunkten. Benutzer können bei Client-Befehlen angeben, mit welchem Endpunkt sie sich verbinden möchten, indem sie die Umgebungsvariable -@code{GUIX_DAEMON_SOCKET} festlegen (@pxref{Der Store, +@code{GUIX_DAEMON_SOCKET} festlegen (siehe @ref{Der Store, @code{GUIX_DAEMON_SOCKET}}). @quotation Anmerkung Das Daemon-Protokoll ist @emph{weder authentifiziert noch verschlüsselt}. Die Benutzung von @code{--listen=@var{Host}} eignet sich für -lokale Netzwerke, wie z.B. in Rechen-Clustern, wo sich nur solche Knoten mit -dem Daemon verbinden, denen man vertraut. In Situationen, wo ein Fernzugriff -auf den Daemon durchgeführt wird, empfehlen wir, über Unix-Sockets in -Verbindung mit SSH zuzugreifen. +lokale Netzwerke, wie z.B.@: in Rechen-Clustern, wo sich nur solche Knoten +mit dem Daemon verbinden, denen man vertraut. In Situationen, wo ein +Fernzugriff auf den Daemon durchgeführt wird, empfehlen wir, über +Unix-Sockets in Verbindung mit SSH zuzugreifen. @end quotation Wird @code{--listen} nicht angegeben, lauscht @command{guix-daemon} auf @@ -1677,14 +1708,14 @@ Verbindungen auf dem Unix-Socket, der sich unter @section Anwendungen einrichten @cindex Fremddistribution -When using Guix on top of GNU/Linux distribution other than Guix System---a -so-called @dfn{foreign distro}---a few additional steps are needed to get -everything in place. Here are some of them. +Läuft Guix aufgesetzt auf einer GNU/Linux-Distribution außer Guix System — +einer sogenannten @dfn{Fremddistribution} —, so sind ein paar zusätzliche +Schritte bei der Einrichtung nötig. Hier finden Sie manche davon. @subsection Locales @anchor{locales-and-locpath} -@cindex locales, when not on Guix System +@cindex Locales, nicht auf Guix System @vindex LOCPATH @vindex GUIX_LOCPATH Über Guix installierte Pakete benutzen nicht die Daten zu Regions- und @@ -1703,7 +1734,7 @@ wiegt. Alternativ gibt es auch @code{glibc-utf8-locales}, was kleiner, aber auf ein paar UTF-8-Locales beschränkt ist. Die Variable @code{GUIX_LOCPATH} spielt eine ähnliche Rolle wie -@code{LOCPATH} (@pxref{Locale Names, @code{LOCPATH},, libc, The GNU C +@code{LOCPATH} (siehe @ref{Locale Names, @code{LOCPATH},, libc, The GNU C Library Reference Manual}). Es gibt jedoch zwei wichtige Unterschiede: @enumerate @@ -1715,7 +1746,7 @@ inkompatiblen Locale-Daten von Guix laden. @item libc hängt an jeden @code{GUIX_LOCPATH}-Eintrag @code{/X.Y} an, wobei -@code{X.Y} die Version von libc ist — z.B. @code{2.22}. Sollte Ihr +@code{X.Y} die Version von libc ist — z.B.@: @code{2.22}. Sollte Ihr Guix-Profil eine Mischung aus Programmen enthalten, die an verschiedene libc-Versionen gebunden sind, wird jede nur die Locale-Daten im richtigen Format zu laden versuchen. @@ -1735,13 +1766,13 @@ 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 -(d.h. Rechnernamen) oder Benutzerkonten haben, oder sogar abstürzen. Die +(d.h.@: Rechnernamen) oder Benutzerkonten haben, oder sogar abstürzen. Die nächsten Absätze erklären warum. @cindex @file{nsswitch.conf} Die GNU-C-Bibliothek implementiert einen @dfn{Name Service Switch} (NSS), welcher einen erweiterbaren Mechanismus zur allgemeinen »Namensauflösung« -darstellt: Hostnamensauflösung, Benutzerkonten und weiteres (@pxref{Name Service Switch,,, libc, The GNU C Library Reference Manual}). +darstellt: Hostnamensauflösung, Benutzerkonten und weiteres (siehe @ref{Name Service Switch,,, libc, The GNU C Library Reference Manual}). @cindex Network Information Service (NIS) @cindex NIS (Network Information Service) @@ -1752,8 +1783,8 @@ Plugin @code{nis} gestattet die Auflösung von Benutzerkonten über den Network Information Service (NIS) und so weiter. Diese zusätzlichen »Auflösungsdienste« werden systemweit konfiguriert in @file{/etc/nsswitch.conf} und alle auf dem System laufenden Programme halten -sich an diese Einstellungen (@pxref{NSS Configuration File,,, libc, The GNU -C Reference Manual}). +sich an diese Einstellungen (siehe @ref{NSS Configuration File,,, libc, The +GNU C Reference Manual}). Wenn sie eine Namensauflösung durchführen — zum Beispiel, indem sie die @code{getaddrinfo}-Funktion in C aufrufen — versuchen die Anwendungen als @@ -1786,15 +1817,15 @@ Laden von Schriftarten und für die Darstellung im X11-Client. Im Paket @file{$HOME/.guix-profile} gesucht. Um es grafischen Anwendungen, die mit Guix installiert wurden, zu ermöglichen, Schriftarten anzuzeigen, müssen Sie die Schriftarten auch mit Guix installieren. Essenzielle Pakete für -Schriftarten sind unter Anderem @code{gs-fonts}, @code{font-dejavu} und +Schriftarten sind unter anderem @code{gs-fonts}, @code{font-dejavu} und @code{font-gnu-freefont-ttf}. Um auf Chinesisch, Japanisch oder Koreanisch verfassten Text in grafischen Anwendungen anzeigen zu können, möchten Sie vielleicht @code{font-adobe-source-han-sans} oder @code{font-wqy-zenhei} installieren. Ersteres hat mehrere Ausgaben, für jede Sprachfamilie eine -(@pxref{Pakete mit mehreren Ausgaben.}). Zum Beispiel installiert folgender -Befehl Schriftarten für chinesische Sprachen: +(siehe @ref{Pakete mit mehreren Ausgaben.}). Zum Beispiel installiert +folgender Befehl Schriftarten für chinesische Sprachen: @example guix package -i font-adobe-source-han-sans:cn @@ -1804,7 +1835,7 @@ guix package -i font-adobe-source-han-sans:cn Ältere Programme wie @command{xterm} benutzen kein Fontconfig, sondern X-Server-seitige Schriftartendarstellung. Solche Programme setzen voraus, dass der volle Name einer Schriftart mit XLFD (X Logical Font Description) -angegeben wird, z.B. so: +angegeben wird, z.B.@: so: @example -*-dejavu sans-medium-r-normal-*-*-100-*-*-*-*-*-1 @@ -1843,7 +1874,7 @@ zugegriffen wird. Wenn Sie Guix auf einer Fremddistribution verwenden, können Sie dieses Paket installieren und die relevanten Umgebungsvariablen festlegen, damit Pakete -wissen, wo sie Zertifikate finden. In @xref{X.509-Zertifikate} stehen +wissen, wo sie Zertifikate finden. Unter @ref{X.509-Zertifikate} stehen genaue Informationen. @subsection Emacs-Pakete @@ -1857,14 +1888,14 @@ gespeichert. Letzteres Verzeichnis gibt es, weil es Tausende von Emacs-Paketen gibt und sie alle im selben Verzeichnis zu speichern vielleicht nicht verlässlich funktioniert (wegen Namenskonflikten). Daher halten wir es für richtig, für jedes Paket ein anderes Verzeichnis zu -benutzen. Das Emacs-Paketsystem organisiert die Dateistruktur ähnlich -(@pxref{Package Files,,, emacs, The GNU Emacs Manual}). +benutzen. Das Emacs-Paketsystem organisiert die Dateistruktur ähnlich (siehe +@ref{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 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 +@code{--no-site-file} starten (siehe @ref{Init File,,, emacs, The GNU Emacs Manual}). @subsection GCC-Toolchain @@ -1880,11 +1911,15 @@ Entwicklung mit C/C++, einschließlich GCC selbst, der GNU-C-Bibliothek (Header-Dateien und Binärdateien samt Symbolen zur Fehlersuche/Debugging in der @code{debug}-Ausgabe), Binutils und einen Wrapper für den Binder/Linker. -The wrapper's purpose is to inspect the @code{-L} and @code{-l} switches -passed to the linker, add corresponding @code{-rpath} arguments, and invoke -the actual linker with this new set of arguments. You can instruct the -wrapper to refuse to link against libraries not in the store by setting the -@code{GUIX_LD_WRAPPER_ALLOW_IMPURITIES} environment variable to @code{no}. +Der Zweck des Wrappers ist, die an den Binder übergebenen +Befehlszeilenoptionen mit @code{-L} und @code{-l} zu überprüfen und jeweils +passende Argumente mit @code{-rpath} anzufügen, womit dann der echte Binder +aufgerufen wird. Standardmäßig weigert sich der Binder-Wrapper, mit +Bibliotheken außerhalb des Stores zu binden, um »Reinheit« zu +gewährleisten. Das kann aber stören, wenn man die Toolchain benutzt, um mit +lokalen Bibliotheken zu binden. Um Referenzen auf Bibliotheken außerhalb des +Stores zu erlauben, müssen Sie die Umgebungsvariable +@code{GUIX_LD_WRAPPER_ALLOW_IMPURITIES} setzen. @c TODO What else? @@ -1892,11 +1927,12 @@ wrapper to refuse to link against libraries not in the store by setting the @node Systeminstallation @chapter Systeminstallation -@cindex installing Guix System -@cindex Guix System, installation -This section explains how to install Guix System on a machine. Guix, as a -package manager, can also be installed on top of a running GNU/Linux system, -@pxref{Installation}. +@cindex Installieren von Guix System +@cindex Guix System, Installation +Dieser Abschnitt beschreibt, wie Sie »Guix System« auf einer Maschine +installieren. Guix kann auch als Paketverwaltungswerkzeug ein bestehendes +GNU/Linux-System ergänzen, mehr dazu finden Sie im Abschnitt +@ref{Installation}. @ifinfo @quotation Anmerkung @@ -1904,9 +1940,9 @@ package manager, can also be installed on top of a running GNU/Linux system, @c installation image. Sie lesen diese Dokumentation mit einem Info-Betrachter. Details, wie Sie ihn bedienen, erfahren Sie, indem Sie die Eingabetaste (auch »Return« oder -»Enter« genannt) auf folgender Verknüpfung drücken: @pxref{Top, Info -reader,, info-stnd, Stand-alone GNU Info}. Drücken Sie danach @kbd{l}, um -hierher zurückzukommen. +»Enter« genannt) auf folgender Verknüpfung drücken: @ref{Top, Info reader,, +info-stnd, Stand-alone GNU Info}. Drücken Sie danach @kbd{l}, um hierher +zurückzukommen. Führen Sie alternativ @command{info info} auf einer anderen Konsole (tty) aus, um dieses Handbuch offen zu lassen. @@ -1919,66 +1955,53 @@ aus, um dieses Handbuch offen zu lassen. * Installation von USB-Stick oder DVD:: Das Installationsmedium vorbereiten. * Vor der Installation:: Netzwerkanbindung, Partitionierung etc. -* Fortfahren mit der Installation:: Die Hauptsache. -* Installing Guix in a VM:: Guix System playground. +* Geführte grafische Installation:: Leichte grafische Installation. +* Manuelle Installation:: Manuelle Installation für Zauberer. +* Nach der Systeminstallation:: Wenn die Installation erfolgreich war. +* Guix in einer VM installieren:: Ein »Guix System«-Spielplatz. * Ein Abbild zur Installation erstellen:: Wie ein solches entsteht. @end menu @node Einschränkungen @section Einschränkungen -As of version @value{VERSION}, Guix System is not production-ready. It may -contain bugs and lack important features. Thus, if you are looking for a -stable production system that respects your freedom as a computer user, a -good solution at this point is to consider -@url{http://www.gnu.org/distros/free-distros.html, one of the more -established GNU/Linux distributions}. We hope you can soon switch to the -Guix System without fear, of course. In the meantime, you can also keep -using your distribution and try out the package manager on top of it -(@pxref{Installation}). +We consider Guix System to be ready for a wide range of ``desktop'' and +server use cases. The reliability guarantees it provides---transactional +upgrades and rollbacks, reproducibility---make it a solid foundation. -Bevor Sie mit der Installation fortfahren, beachten Sie die folgenden -merklichen Einschränkungen der Version @value{VERSION}: +Nevertheless, before you proceed with the installation, be aware of the +following noteworthy limitations applicable to version @value{VERSION}: @itemize @item -Für den Installationsprozess wird keine grafische Oberfläche mitgeliefert -und er erfordert Erfahrung mit GNU/Linux (siehe die folgenden -Unterabschnitte, um ein Gefühl dafür zu bekommen, was wir damit meinen). - -@item Der Logical Volume Manager (LVM) wird nicht unterstützt. @item -Immer mehr Systemdienste sind verfügbar (@pxref{Dienste}), aber manche +Immer mehr Systemdienste sind verfügbar (siehe @ref{Dienste}), aber manche könnten noch fehlen. @item -More than 8,500 packages are available, but you might occasionally find that -a useful package is missing. - -@item -GNOME, Xfce, LXDE und Enlightenment stehen zur Verfügung (@pxref{Desktop-Dienste}), ebenso eine Reihe von X11-Fensterverwaltungsprogrammen. Manche -grafischen Anwendungen könnten aber noch fehlen, ebenso fehlt KDE. +GNOME, Xfce, LXDE, and Enlightenment are available (@pxref{Desktop-Dienste}), as well as a number of X11 window managers. However, KDE is +currently missing. @end itemize -Sie wurden gewarnt! Dies soll allerdings nicht nur ein Hinweis sein, sondern -auch als Einladung aufgefasst werden, uns Fehler (und Erfolgsgeschichten!) -zu melden und bei uns mitzumachen, um Guix zu verbessern. Siehe den -Abschnitt @xref{Mitwirken}. +More than a disclaimer, this is an invitation to report issues (and success +stories!), and to join us in improving it. @xref{Mitwirken}, for more +info. @node Hardware-Überlegungen @section Hardware-Überlegungen -@cindex hardware support on Guix System -GNU@tie{}Guix focuses on respecting the user's computing freedom. It builds -around the kernel Linux-libre, which means that only hardware for which free -software drivers and firmware exist is supported. Nowadays, a wide range of -off-the-shelf hardware is supported on GNU/Linux-libre---from keyboards to -graphics cards to scanners and Ethernet controllers. Unfortunately, there -are still areas where hardware vendors deny users control over their own -computing, and such hardware is not supported on Guix System. +@cindex Hardwareunterstützung von Guix System +GNU@tie{}Guix legt den Fokus darauf, die Freiheit des Nutzers auf seinem +Rechner zu respektieren. Es baut auf Linux-libre als Kernel auf, wodurch nur +Hardware unterstützt wird, für die Treiber und Firmware existieren, die +freie Software sind. Heutzutage wird ein großer Teil der handelsüblichen +Hardware von GNU/Linux-libre unterstützt — von Tastaturen bis hin zu +Grafikkarten, Scannern und Ethernet-Adaptern. Leider gibt es noch Bereiche, +wo die Hardwareanbieter ihren Nutzern die Kontrolle über ihren eigenen +Rechner verweigern. Solche Hardware wird von Guix System nicht unterstützt. @cindex WLAN, Hardware-Unterstützung One of the main areas where free drivers or firmware are lacking is WiFi @@ -1987,7 +2010,7 @@ devices. WiFi devices known to work include those using Atheros chips driver, and those using Broadcom/AirForce chips (BCM43xx with Wireless-Core Revision 5), which corresponds to the @code{b43-open} Linux-libre driver. Free firmware exists for both and is available out-of-the-box on Guix -System, as part of @var{%base-firmware} (@pxref{»operating-system«-Referenz, +System, as part of @code{%base-firmware} (@pxref{»operating-system«-Referenz, @code{firmware}}). @cindex RYF, Respects Your Freedom @@ -2008,7 +2031,7 @@ unterstützt werden. @section Installation von USB-Stick oder DVD Sie können ein ISO-9660-Installationsabbild von -@indicateurl{https://alpha.gnu.org/gnu/guix/guixsd-install-@value{VERSION}.@var{System}.iso.xz} +@indicateurl{https://alpha.gnu.org/gnu/guix/guix-system-install-@value{VERSION}.@var{System}.iso.xz} herunterladen, dass Sie auf einen USB-Stick aufspielen oder auf eine DVD brennen können, wobei Sie für @var{System} eines der folgenden schreiben müssen: @@ -2026,8 +2049,8 @@ Laden Sie auch die entsprechende @file{.sig}-Datei herunter und verifizieren Sie damit die Authentizität Ihres Abbilds, indem Sie diese Befehle eingeben: @example -$ wget https://alpha.gnu.org/gnu/guix/guixsd-install-@value{VERSION}.@var{System}.iso.xz.sig -$ gpg --verify guixsd-install-@value{VERSION}.@var{System}.iso.xz.sig +$ wget https://alpha.gnu.org/gnu/guix/guix-system-install-@value{VERSION}.@var{System}.iso.xz.sig +$ gpg --verify guix-system-install-@value{VERSION}.@var{System}.iso.xz.sig @end example Falls dieser Befehl fehlschlägt, weil Sie nicht über den nötigen @@ -2057,7 +2080,7 @@ durch: Entpacken Sie das Abbild mit dem @command{xz}-Befehl: @example -xz -d guixsd-install-@value{VERSION}.@var{System}.iso.xz +xz -d guix-system-install-@value{VERSION}.@var{System}.iso.xz @end example @item @@ -2066,7 +2089,7 @@ groß ist, und bestimmen Sie seinen Gerätenamen. Ist der Gerätename des USB-Sticks @file{/dev/sdX}, dann kopieren Sie das Abbild mit dem Befehl: @example -dd if=guixsd-install-@value{VERSION}.@var{system}.iso of=/dev/sdX +dd if=guix-system-install-@value{VERSION}.@var{System}.iso of=/dev/sdX sync @end example @@ -2083,7 +2106,7 @@ Um das Abbild auf eine DVD zu kopieren, führen Sie diese Schritte durch: Entpacken Sie das Abbild mit dem @command{xz}-Befehl: @example -xz -d guixsd-install-@value{VERSION}.@var{System}.iso.xz +xz -d guix-system-install-@value{VERSION}.@var{System}.iso.xz @end example @item @@ -2092,7 +2115,7 @@ Gerätenamen. Angenommen der Name des DVD-Laufwerks ist @file{/dev/srX}, kopieren Sie das Abbild mit: @example -growisofs -dvd-compat -Z /dev/srX=guixsd-install-@value{VERSION}.@var{system}.iso +growisofs -dvd-compat -Z /dev/srX=guix-system-install-@value{VERSION}.@var{System}.iso @end example Der Zugriff auf @file{/dev/srX} setzt in der Regel Administratorrechte @@ -2102,32 +2125,35 @@ voraus. @unnumberedsubsec Das System starten Sobald das erledigt ist, sollten Sie Ihr System neu starten und es vom -USB-Stick oder der DVD booten können. Dazu müssen Sie wahrscheinlich beim -Starten des Rechners in das BIOS- oder UEFI-Boot-Menü gehen, von wo aus Sie -auswählen können, dass vom USB-Stick gebootet werden soll. +USB-Stick oder der DVD hochfahren (»booten«) können. Dazu müssen Sie +wahrscheinlich beim Starten des Rechners in das BIOS- oder UEFI-Boot-Menü +gehen, von wo aus Sie auswählen können, dass vom USB-Stick gebootet werden +soll. -@xref{Installing Guix in a VM}, if, instead, you would like to install Guix -System in a virtual machine (VM). +Lesen Sie den Abschnitt @ref{Guix in einer VM installieren}, wenn Sie Guix System +stattdessen in einer virtuellen Maschine (VM) installieren möchten. @node Vor der Installation @section Vor der Installation -Once you have successfully booted your computer using the installation -medium, you should end up with the welcome page of the graphical installer. -The graphical installer is a text-based user interface built upon the newt -library. It shall guide you through all the different steps needed to -install GNU@tie{}Guix System. However, as the graphical installer is still -under heavy development, you might want to fallback to the original, shell -based install process, by switching to TTYs 3 to 6 with the shortcuts -CTRL-ALT-F[3-6]. The following sections describe the installation procedure -assuming you're using one of those TTYs. They are configured and can be used -to run commands as root. - -TTY2 shows this documentation, browsable using the Info reader commands -(@pxref{Top,,, info-stnd, Stand-alone GNU Info}). The installation system -runs the GPM mouse daemon, which allows you to select text with the left -mouse button and to paste it with the middle button. +Wenn Sie Ihren Rechner gebootet haben, können Sie sich vom grafischen +Installationsprogramm durch den Installationsvorgang führen lassen, was den +Einstieg leicht macht (siehe @ref{Geführte grafische Installation}). Alternativ können Sie sich auch für einen »manuellen« +Installationsvorgang entscheiden, wenn Sie bereits mit GNU/Linux vertraut +sind und mehr Kontrolle haben möchten, als sie das grafische +Installationsprogramm bietet (siehe @ref{Manuelle Installation}). + +Das grafische Installationsprogramm steht Ihnen auf TTY1 zur Verfügung. Auf +den TTYs 3 bis 6 können Sie vor sich eine Eingabeaufforderung für den +Administratornutzer »root« sehen, nachdem Sie @kbd{strg-alt-f3}, +@kbd{strg-alt-f4} usw.@: gedrückt haben. TTY2 zeigt Ihnen dieses Handbuch, +das Sie über die Tastenkombination @kbd{strg-alt-f2} erreichen. In dieser +Dokumentation können Sie mit den Steuerungsbefehlen Ihres Info-Betrachters +blättern (siehe @ref{Top,,, info-stnd, Stand-alone GNU Info}). Auf dem +Installationssystem läuft der GPM-Maus-Daemon, wodurch Sie Text mit der +linken Maustaste markieren und ihn mit der mittleren Maustaste einfügen +können. @quotation Anmerkung Für die Installation benötigen Sie Zugang zum Internet, damit fehlende @@ -2136,12 +2162,79 @@ Abschnitt »Netzwerkkonfiguration« weiter unten finden Sie mehr Informationen dazu. @end quotation -The installation system includes many common tools needed for this task. -But it is also a full-blown Guix System, which means that you can install -additional packages, should you need it, using @command{guix package} -(@pxref{Aufruf von guix package}). +@node Geführte grafische Installation +@section Geführte grafische Installation + +Das grafische Installationsprogramm ist mit einer textbasierten +Benutzeroberfläche ausgestattet. Es kann Sie mit Dialogfeldern durch die +Schritte führen, mit denen Sie GNU@tie{}Guix System installieren. + +Die ersten Dialogfelder ermöglichen es Ihnen, das System aufzusetzen, wie +Sie es bei der Installation benutzen: Sie können die Sprache und +Tastaturbelegung festlegen und die Netzwerkanbindung einrichten, die während +der Installation benutzt wird. Das folgende Bild zeigt den Dialog zur +Einrichtung der Netzwerkanbindung. + +@image{images/installer-network,5in,, Netzwerkanbindung einrichten mit dem +grafischen Installationsprogramm} + +Mit den danach kommenden Schritten können Sie Ihre Festplatte +partitionieren, wie im folgenden Bild gezeigt, und auswählen, ob Ihre +Dateisysteme verschlüsselt werden sollen oder nicht. Sie können Ihren +Rechnernamen und das Administratorpasswort (das »root«-Passwort) festlegen +und ein Benutzerkonto einrichten, und noch mehr. + +@image{images/installer-partitions,5in,, Partitionieren mit dem grafischen +Installationsprogramm} + +Beachten Sie, dass Sie mit dem Installationsprogramm jederzeit den aktuellen +Installationsschritt verlassen und zu einem vorherigen Schritt zurückkehren +können, wie Sie im folgenden Bild sehen können. -@subsection Tastaturbelegung +@image{images/installer-resume,5in,, Mit einem Installationsschritt +fortfahren} + +Sobald Sie fertig sind, erzeugt das Installationsprogramm eine +Betriebssystemkonfiguration und zeigt sie an (siehe @ref{Das Konfigurationssystem nutzen}). Zu diesem Zeitpunkt können Sie auf »OK« drücken und +die Installation wird losgehen. Ist sie erfolgreich, können Sie neu starten +und Ihr neues System genießen. Siehe @ref{Nach der Systeminstallation} für +Informationen, wie es weitergeht! + + +@node Manuelle Installation +@section Manuelle Installation + +Dieser Abschnitt beschreibt, wie Sie GNU@tie{}Guix System auf manuelle Weise +auf Ihrer Maschine installieren. Diese Alternative setzt voraus, dass Sie +bereits mit GNU/Linux, der Shell und üblichen Administrationswerkzeugen +vertraut sind. Wenn Sie glauben, dass das nichts für Sie ist, dann möchten +Sie vielleicht das geführte grafische Installationsprogramm benutzen (siehe +@ref{Geführte grafische Installation}). + +Das Installationssystem macht Eingabeaufforderungen auf den TTYs 3 bis 6 +zugänglich, auf denen Sie als Administratornutzer Befehle eingeben können; +Sie erreichen diese, indem Sie die Tastenkombinationen @kbd{strg-alt-f3}, +@kbd{strg-alt-f4} und so weiter benutzen. Es enthält viele übliche +Werkzeuge, mit denen Sie diese Aufgabe bewältigen können. Da es sich auch um +ein vollständiges »Guix System«-System handelt, können Sie aber auch andere +Pakete mit dem Befehl @command{guix package} nachinstallieren, wenn Sie sie +brauchen (siehe @ref{Aufruf von guix package}). + +@menu +* Tastaturbelegung und Netzwerkanbindung und Partitionierung:: Erstes + Einrichten. +* Fortfahren mit der Installation:: Installieren. +@end menu + +@node Tastaturbelegung und Netzwerkanbindung und Partitionierung +@subsection Tastaturbelegung, Netzwerkanbindung und Partitionierung + +Bevor Sie das System installieren können, wollen Sie vielleicht die +Tastaturbelegung ändern, eine Netzwerkverbindung herstellen und die +Zielfestplatte partitionieren. Dieser Abschnitt wird Sie durch diese +Schritte führen. + +@subsubsection Tastaturbelegung @cindex Tastaturbelegung Das Installationsabbild verwendet die US-amerikanische @@ -2158,7 +2251,7 @@ Schauen Sie sich an, welche Dateien im Verzeichnis verfügbarer Tastaturbelegungen zu sehen. Wenn Sie mehr Informationen brauchen, führen Sie @command{man loadkeys} aus. -@subsection Netzwerkkonfiguration +@subsubsection Netzwerkkonfiguration Führen Sie folgenden Befehl aus, um zu sehen, wie Ihre Netzwerkschnittstellen benannt sind: @@ -2261,14 +2354,14 @@ Vergewissern Sie sich vorher, dass Sie entweder ein Passwort mit Authentifizierung über öffentliche Schlüssel eingerichtet haben, bevor Sie sich anmelden. -@subsection Plattenpartitionierung +@subsubsection Plattenpartitionierung Sofern nicht bereits geschehen, ist der nächste Schritt, zu partitionieren und dann die Zielpartition zu formatieren. Auf dem Installationsabbild sind mehrere Partitionierungswerkzeuge zu -finden, einschließlich (@pxref{Overview,,, parted, GNU Parted User Manual}), -@command{fdisk} und @command{cfdisk}. Starten Sie eines davon und +finden, einschließlich (siehe @ref{Overview,,, parted, GNU Parted User +Manual}), @command{fdisk} und @command{cfdisk}. Starten Sie eines davon und partitionieren Sie Ihre Festplatte oder sonstigen Massenspeicher: @example @@ -2278,16 +2371,17 @@ cfdisk Wenn Ihre Platte mit einer »GUID Partition Table« (GPT) formatiert ist, und Sie vorhaben, die BIOS-basierte Variante des GRUB-Bootloaders zu installieren (was der Vorgabe entspricht), stellen Sie sicher, dass eine -Partition als BIOS-Boot-Partition ausgewiesen ist (@pxref{BIOS +Partition als BIOS-Boot-Partition ausgewiesen ist (siehe @ref{BIOS installation,,, grub, GNU GRUB manual}). @cindex EFI, Installation @cindex UEFI, Installation @cindex ESP, EFI-Systempartition -If you instead wish to use EFI-based GRUB, a FAT32 @dfn{EFI System -Partition} (ESP) is required. This partition can be mounted at -@file{/boot/efi} for instance and must have the @code{esp} flag set. E.g., -for @command{parted}: +Falls Sie stattdessen einen EFI-basierten GRUB installieren möchten, muss +auf der Platte eine FAT32-formatierte @dfn{EFI-Systempartition} (ESP) +vorhanden sein. Diese Partition kann unter dem Pfad @file{/boot/efi} +eingebunden (»gemountet«) werden und die @code{esp}-Flag der Partition muss +gesetzt sein. Dazu würden Sie beispielsweise in @command{parted} eintippen: @example parted /dev/sda set 1 esp on @@ -2302,16 +2396,17 @@ installieren möchten: Wenn bei Ihnen das Verzeichnis eine EFI-Installation durchführen, wozu Sie in Ihrer Konfiguration @code{grub-efi-bootloader} benutzen. Ansonsten sollten Sie den BIOS-basierten GRUB benutzen, der mit @code{grub-bootloader} bezeichnet -wird. Siehe @xref{Bootloader-Konfiguration}, wenn Sie mehr Informationen +wird. Siehe @ref{Bootloader-Konfiguration}, wenn Sie mehr Informationen über Bootloader brauchen. @end quotation -Once you are done partitioning the target hard disk drive, you have to -create a file system on the relevant partition(s)@footnote{Currently Guix -System only supports ext4 and btrfs file systems. In particular, code that -reads file system UUIDs and labels only works for these file system -types.}. For the ESP, if you have one and assuming it is @file{/dev/sda1}, -run: +Sobald Sie die Platte fertig partitioniert haben, auf die Sie installieren +möchten, müssen Sie ein Dateisystem auf Ihrer oder Ihren für Guix System +vorgesehenen Partition(en) erzeugen@footnote{Derzeit unterstützt Guix System +nur die Dateisystemtypen ext4 und btrfs. Insbesondere funktioniert +Guix-Code, der Dateisystem-UUIDs und -Labels ausliest, nur auf diesen +Dateisystemtypen.}. Wenn Sie eine ESP brauchen und dafür die Partition +@file{/dev/sda1} vorgesehen haben, müssen Sie diesen Befehl ausführen: @example mkfs.fat -F32 /dev/sda1 @@ -2319,7 +2414,7 @@ mkfs.fat -F32 /dev/sda1 Geben Sie Ihren Dateisystemen auch besser eine Bezeichnung (»Label«), damit Sie sie zuverlässig wiedererkennen und später in den -@code{file-system}-Deklarationen darauf Bezug nehmen können (@pxref{Dateisysteme}). Dazu benutzen Sie typischerweise die Befehlszeilenoption +@code{file-system}-Deklarationen darauf Bezug nehmen können (siehe @ref{Dateisysteme}). Dazu benutzen Sie typischerweise die Befehlszeilenoption @code{-L} des Befehls @command{mkfs.ext4} oder entsprechende Optionen für andere Befehle. Wenn wir also annehmen, dass @file{/dev/sda2} die Partition ist, auf der Ihr Wurzeldateisystem (englisch »root«) wohnen soll, können Sie @@ -2354,13 +2449,14 @@ des künftigen Wurzeldateisystems ist): mount LABEL=my-root /mnt @end example -Also mount any other file systems you would like to use on the target system -relative to this path. If you have opted for @file{/boot/efi} as an EFI -mount point for example, mount it at @file{/mnt/boot/efi} now so it is found -by @code{guix system init} afterwards. +Binden Sie auch alle anderen Dateisysteme ein, die Sie auf dem Zielsystem +benutzen möchten, mit Einhängepunkten relativ zu diesem Pfad. Wenn Sie sich +zum Beispiel für einen Einhängepunkt @file{/boot/efi} für die +EFI-Systempartition entschieden haben, binden Sie sie jetzt als +@file{/mnt/boot/efi} ein, damit @code{guix system init} sie später findet. Wenn Sie zudem auch vorhaben, eine oder mehrere Swap-Partitionen zu benutzen -(@pxref{Memory Concepts, swap space,, libc, The GNU C Library Reference +(siehe @ref{Memory Concepts, swap space,, libc, The GNU C Library Reference Manual}), initialisieren Sie diese nun mit @command{mkswap}. Angenommen Sie haben eine Swap-Partition auf @file{/dev/sda3}, dann würde der Befehl so lauten: @@ -2373,8 +2469,8 @@ swapon /dev/sda3 Alternativ können Sie eine Swap-Datei benutzen. Angenommen, Sie wollten die Datei @file{/swapdatei} im neuen System als eine Swapdatei benutzen, dann müssten Sie Folgendes ausführen@footnote{Dieses Beispiel wird auf vielen -Arten von Dateisystemen funktionieren (z.B. auf ext4). Auf Dateisystemen mit -Copy-on-Write (wie z.B. btrfs) können sich die nötigen Schritte +Arten von Dateisystemen funktionieren (z.B.@: auf ext4). Auf Dateisystemen +mit Copy-on-Write (wie z.B.@: btrfs) können sich die nötigen Schritte unterscheiden. Details finden Sie in der Dokumentation auf den Handbuchseiten von @command{mkswap} und @command{swapon}.}: @@ -2393,7 +2489,7 @@ beschrieben erstellt haben, die Verschlüsselung auch die Swap-Datei schützt, genau wie jede andere Datei in dem Dateisystem. @node Fortfahren mit der Installation -@section Fortfahren mit der Installation +@subsection Fortfahren mit der Installation Wenn die Partitionen des Installationsziels bereit sind und dessen Wurzeldateisystem unter @file{/mnt} eingebunden wurde, kann es losgehen mit @@ -2403,7 +2499,7 @@ der Installation. Führen Sie zuerst aus: herd start cow-store /mnt @end example -Dadurch wird @file{/gnu/store} copy-on-write, d.h. dorthin von Guix +Dadurch wird @file{/gnu/store} copy-on-write, d.h.@: dorthin von Guix erstellte Pakete werden in ihrer Installationsphase auf dem unter @file{/mnt} befindlichen Zieldateisystem gespeichert, statt den Arbeitsspeicher auszulasten. Das ist nötig, weil die erste Phase des Befehls @@ -2415,7 +2511,7 @@ Arbeitsspeicher gelagert werden konnten. Als Nächstes müssen Sie eine Datei bearbeiten und dort eine Deklaration des Betriebssystems, das Sie installieren möchten, hineinschreiben. Zu diesem Zweck sind im Installationssystem drei Texteditoren enthalten. Wir -empfehlen, dass Sie GNU nano benutzen (@pxref{Top,,, nano, GNU nano +empfehlen, dass Sie GNU nano benutzen (siehe @ref{Top,,, nano, GNU nano Manual}), welcher Syntax und zueinander gehörende Klammern hervorheben kann. Andere mitgelieferte Texteditoren, die Sie benutzen können, sind GNU Zile (ein Emacs-Klon) und nvi (ein Klon des ursprünglichen @@ -2424,8 +2520,8 @@ Zieldateisystem der Installation speichern, etwa als @file{/mnt/etc/config.scm}, weil Sie Ihre Konfigurationsdatei im frisch installierten System noch brauchen werden. -Der Abschnitt @xref{Das Konfigurationssystem nutzen} gibt einen Überblick -über die Konfigurationsdatei. Die in dem Abschnitt diskutierten +Der Abschnitt @ref{Das Konfigurationssystem nutzen} gibt einen Überblick über +die Konfigurationsdatei. Die in dem Abschnitt diskutierten Beispielkonfigurationen sind im Installationsabbild im Verzeichnis @file{/etc/configuration} zu finden. Um also mit einer Systemkonfiguration anzufangen, die einen grafischen »Display-Server« (eine @@ -2442,13 +2538,16 @@ Folgendes: @itemize @item -Make sure the @code{bootloader-configuration} form refers to the target you -want to install GRUB on. It should mention @code{grub-bootloader} if you -are installing GRUB in the legacy way, or @code{grub-efi-bootloader} for -newer UEFI systems. For legacy systems, the @code{target} field names a -device, like @code{/dev/sda}; for UEFI systems it names a path to a mounted -EFI partition, like @code{/boot/efi}; do make sure the path is currently -mounted and a @code{file-system} entry is specified in your configuration. +Ihre @code{bootloader-configuration}-Form muss sich auf dasjenige Ziel +beziehen, auf das Sie GRUB installieren möchten. Sie sollte genau dann +@code{grub-bootloader} nennen, wenn Sie GRUB im alten BIOS-Modus +installieren, und für neuere UEFI-Systeme sollten Sie +@code{grub-efi-bootloader} nennen. Bei Altsystemen bezeichnet das +@code{target}-Feld ein Gerät wie @code{/dev/sda}, bei UEFI-Systemen +bezeichnet es den Pfad zu einer eingebundenen EFI-Partition wie +@code{/boot/efi}; stellen Sie sicher, dass die ESP tatsächlich dort +eingebunden ist und ein @code{file-system}-Eintrag dafür in Ihrer +Konfiguration festgelegt wurde. @item Dateisystembezeichnungen müssen mit den jeweiligen @code{device}-Feldern in @@ -2458,7 +2557,7 @@ ihre @code{device}-Felder benutzen. @item Gibt es verschlüsselte Partitionen oder RAID-Partitionen, dann müssen sie im -@code{mapped-devices}-Feld genannt werden (@pxref{Zugeordnete Geräte}). +@code{mapped-devices}-Feld genannt werden (siehe @ref{Zugeordnete Geräte}). @end itemize Wenn Sie damit fertig sind, Ihre Konfigurationsdatei vorzubereiten, können @@ -2474,20 +2573,26 @@ guix system init /mnt/etc/config.scm /mnt Dies kopiert alle notwendigen Dateien und installiert GRUB auf @file{/dev/sdX}, sofern Sie nicht noch die Befehlszeilenoption @option{--no-bootloader} benutzen. Weitere Informationen finden Sie im -Abschnitt @pxref{Aufruf von guix system}. Der Befehl kann das Herunterladen -oder Erstellen fehlender Softwarepakete auslösen, was einige Zeit in -Anspruch nehmen kann. +Abschnitt @ref{Aufruf von guix system}. Der Befehl kann das Herunterladen oder +Erstellen fehlender Softwarepakete auslösen, was einige Zeit in Anspruch +nehmen kann. Sobald der Befehl erfolgreich — hoffentlich! — durchgelaufen ist, können Sie mit dem Befehl @command{reboot} das neue System booten lassen. Der Administratornutzer @code{root} hat im neuen System zunächst ein leeres -Passwort und Passwörter der anderen Nutzer müssen Sie erst setzen, indem Sie -den Befehl @command{passwd} als @code{root} ausführen, außer Ihre -Konfiguration enthält schon Passwörter (@pxref{user-account-password, user -account passwords}). +Passwort, und Passwörter der anderen Nutzer müssen Sie später setzen, indem +Sie den Befehl @command{passwd} als @code{root} ausführen, außer Ihre +Konfiguration enthält schon Passwörter (siehe @ref{user-account-password, +user account passwords}). Siehe @ref{Nach der Systeminstallation} für +Informationen, wie es weiter geht! + -@cindex upgrading Guix System -From then on, you can update the system whenever you want by running, say: +@node Nach der Systeminstallation +@section Nach der Systeminstallation + +Sie haben es geschafft: Sie haben Guix System erfolgreich gebootet! Von +jetzt an können Sie Guix System aktualisieren, wann Sie möchten, indem Sie +zum Beispiel das hier ausführen: @example guix pull @@ -2495,38 +2600,44 @@ sudo guix system reconfigure /etc/config.scm @end example @noindent -This builds a new system generation with the latest packages and services -(@pxref{Aufruf von guix system}). We recommend doing that regularly so that -your system includes the latest security updates (@pxref{Sicherheitsaktualisierungen}). +Dadurch wird eine neue Systemgeneration aus den neuesten Paketen und +Diensten erstellt (siehe @ref{Aufruf von guix system}). Wir empfehlen, diese +Schritte regelmäßig zu wiederholen, damit Ihr System die aktuellen +Sicherheitsaktualisierungen benutzt (siehe @ref{Sicherheitsaktualisierungen}). @c See <https://lists.gnu.org/archive/html/guix-devel/2019-01/msg00268.html>. @quotation Anmerkung -@cindex sudo vs. @command{guix pull} -Note that @command{sudo guix} runs your user's @command{guix} command and -@emph{not} root's, because @command{sudo} leaves @code{PATH} unchanged. To -explicitly run root's @command{guix}, type @command{sudo -i guix @dots{}}. +@cindex sudo, Wirkung auf @command{guix pull} +Beachten Sie, dass bei Nutzung von @command{sudo guix} der +@command{guix}-Befehl des aktiven Benutzers ausgeführt wird und @emph{nicht} +der des Administratornutzers »root«, weil @command{sudo} die +Umgebungsvariable @code{PATH} unverändert lässt. Um ausdrücklich das +@command{guix}-Programm des Administrators aufzurufen, müssen Sie +@command{sudo -i guix @dots{}} eintippen. @end quotation -Join us on @code{#guix} on the Freenode IRC network or on -@email{guix-devel@@gnu.org} to share your experience---good or not so good. +Besuchen Sie uns auf @code{#guix} auf dem Freenode-IRC-Netzwerk oder auf der +Mailing-Liste @file{guix-devel@@gnu.org}, um uns Rückmeldung zu geben! + -@node Installing Guix in a VM -@section Installing Guix in a Virtual Machine +@node Guix in einer VM installieren +@section Guix in einer virtuellen Maschine installieren -@cindex virtual machine, Guix System installation +@cindex virtuelle Maschine, Guix System installieren @cindex Virtual Private Server (VPS) @cindex VPS (Virtual Private Server) -If you'd like to install Guix System in a virtual machine (VM) or on a -virtual private server (VPS) rather than on your beloved machine, this -section is for you. +Wenn Sie Guix System auf einer virtuellen Maschine (VM) oder einem »Virtual +Private Server« (VPS) statt auf Ihrer echten Maschine installieren möchten, +ist dieser Abschnitt hier richtig für Sie. -To boot a @uref{http://qemu.org/,QEMU} VM for installing Guix System in a -disk image, follow these steps: +Um eine virtuelle Maschine für @uref{http://qemu.org/,QEMU} aufzusetzen, mit +der Sie Guix System in ein »Disk-Image« installieren können (also in eine +Datei mit einem Abbild eines Plattenspeichers), gehen Sie so vor: @enumerate @item -First, retrieve and decompress the Guix system installation image as -described previously (@pxref{Installation von USB-Stick oder DVD}). +Zunächst laden Sie das Installationsabbild des Guix-Systems wie zuvor +beschrieben herunter und entpacken es (siehe @ref{Installation von USB-Stick oder DVD}). @item Legen Sie nun ein Disk-Image an, das das System nach der Installation @@ -2547,7 +2658,7 @@ Starten Sie das USB-Installationsabbild auf einer virtuellen Maschine: @example qemu-system-x86_64 -m 1024 -smp 1 \ -net user -net nic,model=virtio -boot menu=on \ - -drive file=guixsd-install-@value{VERSION}.@var{System}.iso \ + -drive file=guix-system-install-@value{VERSION}.@var{System}.iso \ -drive file=guixsd.img @end example @@ -2562,11 +2673,12 @@ bestätigen. @item Sie sind nun in der virtuellen Maschine als Administratornutzer @code{root} angemeldet und können mit der Installation wie gewohnt fortfahren. Folgen -Sie der Anleitung im Abschnitt @xref{Vor der Installation}. +Sie der Anleitung im Abschnitt @ref{Vor der Installation}. @end enumerate -Once installation is complete, you can boot the system that's on your -@file{guixsd.img} image. @xref{Running Guix in a VM}, for how to do that. +Wurde die Installation abgeschlossen, können Sie das System starten, das +sich nun als Abbild in der Datei @file{guixsd.img} befindet. Der Abschnitt +@ref{Guix in einer VM starten} erklärt, wie Sie das tun können. @node Ein Abbild zur Installation erstellen @section Ein Abbild zur Installation erstellen @@ -2611,11 +2723,11 @@ natürlich noch mehr als diese offensichtlichen Funktionalitäten. Dieses Kapitel beschreibt die Hauptfunktionalitäten von Guix, sowie die von Guix angebotenen Paketverwaltungswerkzeuge. Zusätzlich von den im Folgenden -beschriebenen Befehlszeilen-Benutzerschnittstellen (@pxref{Aufruf von guix package, @code{guix package}}) können Sie auch mit der -Emacs-Guix-Schnittstelle (@pxref{Top,,, emacs-guix, The Emacs-Guix Reference -Manual}) arbeiten, nachdem Sie das Paket @code{emacs-guix} installiert haben -(führen Sie zum Einstieg in Emacs-Guix den Emacs-Befehl @kbd{M-x guix-help} -aus): +beschriebenen Befehlszeilen-Benutzerschnittstellen (siehe @ref{Aufruf von guix package, @code{guix package}}) können Sie auch mit der +Emacs-Guix-Schnittstelle (siehe @ref{Top,,, emacs-guix, The Emacs-Guix +Reference Manual}) arbeiten, nachdem Sie das Paket @code{emacs-guix} +installiert haben (führen Sie zum Einstieg in Emacs-Guix den Emacs-Befehl +@kbd{M-x guix-help} aus): @example guix package -i emacs-guix @@ -2654,11 +2766,11 @@ Zum Beispiel installiert @code{alice} GCC 4.7.2. Dadurch zeigt dann @file{/gnu/store/@dots{}-gcc-4.7.2/bin/gcc}. Auf demselben Rechner hat @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. +d.h.@: beide Versionen von GCC koexistieren auf demselben System, ohne sich +zu stören. Der Befehl @command{guix package} ist das zentrale Werkzeug, um Pakete zu -verwalten (@pxref{Aufruf von guix package}). Es arbeitet auf dem eigenen +verwalten (siehe @ref{Aufruf von guix package}). Es arbeitet auf dem eigenen Profil jedes Nutzers und kann @emph{mit normalen Benutzerrechten} ausgeführt werden. @@ -2671,24 +2783,25 @@ von @command{guix package} während der Transaktion beendet wird, oder es zum Stromausfall während der Transaktion kommt, dann bleibt der alte, nutzbare Zustands des Nutzerprofils erhalten. -In addition, any package transaction may be @emph{rolled back}. So, if, for -example, an upgrade installs a new version of a package that turns out to -have a serious bug, users may roll back to the previous instance of their -profile, which was known to work well. Similarly, the global system -configuration on Guix is subject to transactional upgrades and roll-back -(@pxref{Das Konfigurationssystem nutzen}). +Zudem kann jede Pakettransaktion @emph{zurückgesetzt} werden +(Rollback). Wird also zum Beispiel durch eine Aktualisierung eine neue +Version eines Pakets installiert, die einen schwerwiegenden Fehler zur Folge +hat, können Nutzer ihr Profil einfach auf die vorherige Profilinstanz +zurücksetzen, von der sie wissen, dass sie gut lief. Ebenso unterliegt bei +Guix auch die globale Systemkonfiguration transaktionellen Aktualisierungen +und Rücksetzungen (siehe @ref{Das Konfigurationssystem nutzen}). Alle Pakete im Paket-Store können vom @emph{Müllsammler} (Garbage Collector) gelöscht werden. Guix ist in der Lage, festzustellen, welche Pakete noch durch Benutzerprofile referenziert werden, und entfernt nur diese, die -nachweislich nicht mehr referenziert werden (@pxref{Aufruf von guix gc}). Benutzer können auch ausdrücklich alte Generationen ihres Profils +nachweislich nicht mehr referenziert werden (siehe @ref{Aufruf von guix gc}). Benutzer können auch ausdrücklich alte Generationen ihres Profils löschen, damit die zugehörigen Pakete vom Müllsammler gelöscht werden können. @cindex Reproduzierbarkeit @cindex Reproduzierbare Erstellungen Guix verfolgt einen @dfn{rein funktionalen} Ansatz bei der Paketverwaltung, -wie er in der Einleitung beschrieben wurde (@pxref{Einführung}). Jedes +wie er in der Einleitung beschrieben wurde (siehe @ref{Einführung}). Jedes Paketverzeichnis im @file{/gnu/store} hat einen Hash all seiner bei der Erstellung benutzten Eingaben im Namen — Compiler, Bibliotheken, Erstellungs-Skripts etc. Diese direkte Entsprechung ermöglicht es Benutzern, @@ -2697,34 +2810,33 @@ Distribution entspricht. Sie maximiert auch die @dfn{Reproduzierbarkeit der Erstellungen} zu maximieren: Dank der isolierten Erstellungsumgebungen, die benutzt werden, resultiert eine Erstellung wahrscheinlich in bitweise identischen Dateien, auch wenn sie auf unterschiedlichen Maschinen -durchgeführt wird (@pxref{Aufruf des guix-daemon, container}). +durchgeführt wird (siehe @ref{Aufruf des guix-daemon, container}). @cindex Substitute Auf dieser Grundlage kann Guix @dfn{transparent Binär- oder Quelldateien ausliefern}. Wenn eine vorerstellte Binärdatei für ein @file{/gnu/store}-Objekt von einer externen Quelle verfügbar ist — ein @dfn{Substitut} —, lädt Guix sie einfach herunter und entpackt sie, -andernfalls erstellt Guix das Paket lokal aus seinem Quellcode -(@pxref{Substitute}). Weil Erstellungsergebnisse normalerweise Bit für Bit +andernfalls erstellt Guix das Paket lokal aus seinem Quellcode (siehe +@ref{Substitute}). Weil Erstellungsergebnisse normalerweise Bit für Bit reproduzierbar sind, müssen die Nutzer den Servern, die Substitute anbieten, nicht blind vertrauen; sie können eine lokale Erstellung erzwingen und -Substitute @emph{anfechten} (@pxref{Aufruf von guix challenge}). +Substitute @emph{anfechten} (siehe @ref{Aufruf von guix challenge}). Kontrolle über die Erstellungsumgebung ist eine auch für Entwickler nützliche Funktionalität. Der Befehl @command{guix environment} ermöglicht es Entwicklern eines Pakets, schnell die richtige Entwicklungsumgebung für ihr Paket einzurichten, ohne manuell die Abhängigkeiten des Pakets in ihr -Profil installieren zu müssen (@pxref{Aufruf von guix environment}). +Profil installieren zu müssen (siehe @ref{Aufruf von guix environment}). @cindex Nachbildung, von Software-Umgebungen @cindex Provenienzverfolgung, von Software-Artefakten Ganz Guix und all seine Paketdefinitionen stehen unter Versionskontrolle und @command{guix pull} macht es möglich, auf dem Verlauf der Entwicklung von -Guix selbst »in der Zeit zu reisen« (@pxref{Aufruf von guix pull}). Dadurch -kann eine Instanz von Guix auf einer anderen Maschine oder zu einem späteren -Zeitpunkt genau nachgebildet werden, wodurch auch @emph{vollständige -Software-Umgebungen gänzlich nachgebildet} werden können, mit genauer -@dfn{Provenienzverfolgung}, wo diese Software herkommt. +Guix selbst »in der Zeit zu reisen« (siehe @ref{Aufruf von guix pull}). Dadurch kann eine Instanz von Guix auf einer anderen Maschine oder +zu einem späteren Zeitpunkt genau nachgebildet werden, wodurch auch +@emph{vollständige Software-Umgebungen gänzlich nachgebildet} werden können, +mit genauer @dfn{Provenienzverfolgung}, wo diese Software herkommt. @node Aufruf von guix package @section Invoking @command{guix package} @@ -2737,7 +2849,7 @@ Der Befehl @command{guix package} ist ein Werkzeug, womit Nutzer Pakete installieren, aktualisieren, entfernen und auf vorherige Konfigurationen zurücksetzen können. Dabei wird nur das eigene Profil des Nutzers verwendet, und es funktioniert mit normalen Benutzerrechten, ohne Administratorrechte -(@pxref{Funktionalitäten}). Die Syntax ist: +(siehe @ref{Funktionalitäten}). Die Syntax ist: @example guix package @var{Optionen} @@ -2758,18 +2870,18 @@ guix package -r lua -i guile guile-cairo @command{guix package} unterstützt auch ein @dfn{deklaratives Vorgehen}, wobei der Nutzer die genaue Menge an Paketen, die verfügbar sein sollen, festlegt und über die Befehlszeilenoption @option{--manifest} übergibt -(@pxref{profile-manifest, @option{--manifest}}). +(siehe @ref{profile-manifest, @option{--manifest}}). @cindex Profil Für jeden Benutzer wird automatisch eine symbolische Verknüpfung zu seinem Standardprofil angelegt als @file{$HOME/.guix-profile}. Diese symbolische Verknüpfung zeigt immer auf die aktuelle Generation des Standardprofils des -Benutzers. Somit können Nutzer @file{$HOME/.guix-profile/bin} z.B. zu ihrer -Umgebungsvariablen @code{PATH} hinzufügen. +Benutzers. Somit können Nutzer @file{$HOME/.guix-profile/bin} z.B.@: zu +ihrer Umgebungsvariablen @code{PATH} hinzufügen. @cindex Suchpfade Wenn Sie nicht die Guix System Distribution benutzen, sollten Sie in Betracht ziehen, folgende Zeilen zu Ihrem @file{~/.bash_profile} -hinzuzufügen (@pxref{Bash Startup Files,,, bash, The GNU Bash Reference +hinzuzufügen (siehe @ref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}), damit in neu erzeugten Shells alle Umgebungsvariablen richtig definiert werden: @@ -2780,7 +2892,7 @@ source "$HOME/.guix-profile/etc/profile" Ist Ihr System für mehrere Nutzer eingerichtet, werden Nutzerprofile an einem Ort gespeichert, der als @dfn{Müllsammlerwurzel} registriert ist, auf -die @file{$HOME/.guix-profile} zeigt (@pxref{Aufruf von guix gc}). Dieses +die @file{$HOME/.guix-profile} zeigt (siehe @ref{Aufruf von guix gc}). Dieses Verzeichnis ist normalerweise @code{@var{localstatedir}/guix/profiles/per-user/@var{Benutzer}}, wobei @var{localstatedir} der an @code{configure} als @code{--localstatedir} @@ -2806,14 +2918,13 @@ und einer Versionsnummer, wie @code{guile@@1.8.8} oder auch nur Wird keine Versionsnummer angegeben, wird die neueste verfügbare Version ausgewählt. Zudem kann im @var{Paket} ein Doppelpunkt auftauchen, gefolgt vom Namen einer der Ausgaben des Pakets, wie @code{gcc:doc} oder -@code{binutils@@2.22:lib} (@pxref{Pakete mit mehreren Ausgaben.}). Pakete -mit zugehörigem Namen (und optional der Version) werden unter den Modulen -der GNU-Distribution gesucht (@pxref{Paketmodule}). +@code{binutils@@2.22:lib} (siehe @ref{Pakete mit mehreren Ausgaben.}). Pakete mit zugehörigem Namen (und optional der Version) werden +unter den Modulen der GNU-Distribution gesucht (siehe @ref{Paketmodule}). @cindex propagierte Eingaben Manchmal haben Pakete @dfn{propagierte Eingaben}: Als solche werden Abhängigkeiten bezeichnet, die automatisch zusammen mit dem angeforderten -Paket installiert werden (im Abschnitt @pxref{package-propagated-inputs, +Paket installiert werden (im Abschnitt @ref{package-propagated-inputs, @code{propagated-inputs} in @code{package} objects} sind weitere Informationen über propagierte Eingaben in Paketdefinitionen zu finden). @@ -2848,7 +2959,7 @@ Ausgabe eines Pakets mit mehreren Ausgaben gewünscht ist. Das Paket installieren, zu dem der Code in der @var{Datei} ausgewertet wird. Zum Beispiel könnte die @var{Datei} eine Definition wie diese enthalten -(@pxref{Pakete definieren}): +(siehe @ref{Pakete definieren}): @example @verbatiminclude package-hello.scm @@ -2857,7 +2968,7 @@ Zum Beispiel könnte die @var{Datei} eine Definition wie diese enthalten Entwickler könnten es für nützlich erachten, eine solche @file{guix.scm}-Datei im Quellbaum ihres Projekts abzulegen, mit der Zwischenstände der Entwicklung getestet und reproduzierbare -Erstellungsumgebungen aufgebaut werden können (@pxref{Aufruf von guix environment}). +Erstellungsumgebungen aufgebaut werden können (siehe @ref{Aufruf von guix environment}). @item --remove=@var{Paket} @dots{} @itemx -r @var{Paket} @dots{} @@ -2879,7 +2990,7 @@ weiter unten die Befehlszeilenoption @code{--do-not-upgrade}. Beachten Sie, dass das Paket so auf die neueste Version unter den Paketen gebracht wird, die in der aktuell installierten Distribution vorliegen. Um jedoch Ihre Distribution zu aktualisieren, sollten Sie regelmäßig -@command{guix pull} ausführen (@pxref{Aufruf von guix pull}). +@command{guix pull} ausführen (siehe @ref{Aufruf von guix pull}). @item --do-not-upgrade[=@var{Regexp} @dots{}] In Verbindung mit der Befehlszeilenoption @code{--upgrade}, führe @@ -2936,8 +3047,8 @@ 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. macht die -letzte Transaktion rückgängig. +Wechselt zur vorherigen @dfn{Generation} des Profils zurück — d.h.@: macht +die letzte Transaktion rückgängig. In Verbindung mit Befehlszeilenoptionen wie @code{--install} wird zuerst zurückgesetzt, bevor andere Aktionen durchgeführt werden. @@ -2947,8 +3058,8 @@ wechselt das Profil zur @dfn{nullten Generation}, die keinerlei Dateien enthält, abgesehen von Metadaten über sich selbst. Nach dem Zurücksetzen überschreibt das Installieren, Entfernen oder -Aktualisieren von Paketen vormals zukünftige Generationen, d.h. der Verlauf -der Generationen eines Profils ist immer linear. +Aktualisieren von Paketen vormals zukünftige Generationen, d.h.@: der +Verlauf der Generationen eines Profils ist immer linear. @item --switch-generation=@var{Muster} @itemx -S @var{Muster} @@ -2976,9 +3087,9 @@ festzulegen, die von einigen installierten Paketen benutzt werden. Zum Beispiel braucht GCC die Umgebungsvariablen @code{CPATH} und @code{LIBRARY_PATH}, um zu wissen, wo sich im Benutzerprofil Header und -Bibliotheken befinden (@pxref{Environment Variables,,, gcc, Using the GNU -Compiler Collection (GCC)}). Wenn GCC und, sagen wir, die C-Bibliothek im -Profil installiert sind, schlägt @code{--search-paths} also vor, diese +Bibliotheken befinden (siehe @ref{Environment Variables,,, gcc, Using the +GNU Compiler Collection (GCC)}). Wenn GCC und, sagen wir, die C-Bibliothek +im Profil installiert sind, schlägt @code{--search-paths} also vor, diese Variablen jeweils auf @code{@var{profile}/include} und @code{@var{profile}/lib} verweisen zu lassen. @@ -3038,10 +3149,11 @@ Verfügbarkeit von Paketen nachzulesen: @item --search=@var{Regexp} @itemx -s @var{Regexp} @cindex Suche nach Paketen -List the available packages whose name, synopsis, or description matches -@var{regexp} (in a case-insensitive fashion), sorted by relevance. Print -all the metadata of matching packages in @code{recutils} format (@pxref{Top, -GNU recutils databases,, recutils, GNU recutils manual}). +Führt alle verfügbaren Pakete auf, deren Name, Zusammenfassung oder +Beschreibung zum regulären Ausdruck @var{Regexp} passt, ohne Groß- und +Kleinschreibung zu unterscheiden und sortiert nach ihrer Relevanz. Alle +Metadaten passender Pakete werden im @code{recutils}-Format geliefert (siehe +@ref{Top, GNU recutils databases,, recutils, GNU recutils manual}). So können bestimmte Felder mit dem Befehl @command{recsel} extrahiert werden, zum Beispiel: @@ -3089,7 +3201,7 @@ Pakete, die mit »keyboards« (Tastaturen, oder musikalischen Keyboard) zu tun haben. Es ist Zeit für ein komplexeres Beispiel. Folgender Befehl sucht -kryptographische Bibliotheken, filtert Haskell-, Perl-, Python- und +kryptografische Bibliotheken, filtert Haskell-, Perl-, Python- und Ruby-Bibliotheken heraus und gibt Namen und Zusammenfassung passender Pakete aus: @@ -3099,13 +3211,14 @@ $ guix package -s crypto -s library | \ @end example @noindent -@xref{Selection Expressions,,, recutils, GNU recutils manual} enthält -weitere Informationen über @dfn{Auswahlausdrücke} mit @code{recsel -e}. +Siehe @ref{Selection Expressions,,, recutils, GNU recutils manual}, es +enthält weitere Informationen über @dfn{Auswahlausdrücke} mit @code{recsel +-e}. @item --show=@var{Paket} Zeigt Details über das @var{Paket} aus der Liste verfügbarer Pakete, im -@code{recutils}-Format (@pxref{Top, GNU recutils databases,, recutils, GNU -recutils manual}). +@code{recutils}-Format (siehe @ref{Top, GNU recutils databases,, recutils, +GNU recutils manual}). @example $ guix package --show=python | recsel -p name,version @@ -3137,20 +3250,20 @@ Zu jedem installierten Paket werden folgende Informationen angezeigt, durch Tabulatorzeichen getrennt: der Paketname, die Version als Zeichenkette, welche Teile des Pakets installiert sind (zum Beispiel @code{out}, wenn die Standard-Paketausgabe installiert ist, @code{include}, wenn seine Header -installiert sind, usw.) und an welchem Pfad das Paket im Store zu finden +installiert sind, usw.)@: und an welchem Pfad das Paket im Store zu finden ist. @item --list-available[=@var{Regexp}] @itemx -A [@var{Regexp}] Listet Pakete auf, die in der aktuell installierten Distribution dieses -Systems verfügbar sind (@pxref{GNU-Distribution}). Wenn ein regulärer +Systems verfügbar sind (siehe @ref{GNU-Distribution}). Wenn ein regulärer Ausdruck @var{Regexp} angegeben wird, werden nur Pakete aufgeführt, deren Name zum regulären Ausdruck @var{Regexp} passt. Zu jedem Paket werden folgende Informationen getrennt durch Tabulatorzeichen ausgegeben: der Name, die Version als Zeichenkette, die Teile des Programms -(@pxref{Pakete mit mehreren Ausgaben.}) und die Stelle im Quellcode, an der -das Paket definiert ist. +(siehe @ref{Pakete mit mehreren Ausgaben.}) und die Stelle im Quellcode, an +der das Paket definiert ist. @item --list-generations[=@var{Muster}] @itemx -l [@var{Muster}] @@ -3162,7 +3275,8 @@ nullte Generation niemals angezeigt wird. Zu jedem installierten Paket werden folgende Informationen durch Tabulatorzeichen getrennt angezeigt: der Name des Pakets, die Version als -Zeichenkette, welcher Teil des Pakets installiert ist (@pxref{Pakete mit mehreren Ausgaben.}) und an welcher Stelle sich das Paket im Store befindet. +Zeichenkette, welcher Teil des Pakets installiert ist (siehe @ref{Pakete mit mehreren Ausgaben.}) und an welcher Stelle sich das Paket im Store +befindet. Wenn ein @var{Muster} angegeben wird, liefert der Befehl nur dazu passende Generationen. Gültige Muster sind zum Beispiel: @@ -3212,13 +3326,13 @@ können. Dieser Befehl sollte also nur mit Vorsicht benutzt werden. @end table Zu guter Letzt können Sie, da @command{guix package} Erstellungsprozesse zu -starten vermag, auch alle gemeinsamen Erstellungsoptionen (@pxref{Gemeinsame Erstellungsoptionen}) verwenden. Auch Paketumwandlungsoptionen wie -@option{--with-source} sind möglich (@pxref{Paketumwandlungsoptionen}). Beachten Sie jedoch, dass die verwendeten +starten vermag, auch alle gemeinsamen Erstellungsoptionen (siehe @ref{Gemeinsame Erstellungsoptionen}) verwenden. Auch Paketumwandlungsoptionen wie +@option{--with-source} sind möglich (siehe @ref{Paketumwandlungsoptionen}). Beachten Sie jedoch, dass die verwendeten Paketumwandlungsoptionen verloren gehen, nachdem Sie die Pakete aktualisiert haben. Damit Paketumwandlungen über Aktualisierungen hinweg erhalten bleiben, sollten Sie Ihre eigene Paketvariante in einem Guile-Modul definieren und zur Umgebungsvariablen @code{GUIX_PACKAGE_PATH} hinzufügen -(@pxref{Pakete definieren}). +(siehe @ref{Pakete definieren}). @node Substitute @section Substitute @@ -3233,7 +3347,7 @@ Erstellungsergebnisse. In vielen Fällen geht das Herunterladen eines Substituts wesentlich schneller, als Dinge lokal zu erstellen. Substitute können alles sein, was das Ergebnis einer Ableitungserstellung -ist (@pxref{Ableitungen}). Natürlich sind sie üblicherweise vorerstellte +ist (siehe @ref{Ableitungen}). Natürlich sind sie üblicherweise vorerstellte Paket-Binärdateien, aber wenn zum Beispiel ein Quell-Tarball das Ergebnis einer Ableitungserstellung ist, kann auch er als Substitut verfügbar sein. @@ -3253,14 +3367,16 @@ einer Ableitungserstellung ist, kann auch er als Substitut verfügbar sein. @cindex Hydra @cindex Build-Farm -The @code{@value{SUBSTITUTE-SERVER}} server is a front-end to an official -build farm that builds packages from Guix continuously for some -architectures, and makes them available as substitutes. This is the default -source of substitutes; it can be overridden by passing the -@option{--substitute-urls} option either to @command{guix-daemon} -(@pxref{daemon-substitute-urls,, @code{guix-daemon --substitute-urls}}) or -to client tools such as @command{guix package} -(@pxref{client-substitute-urls,, client @option{--substitute-urls} option}). +Der Server @code{@value{SUBSTITUTE-SERVER}} ist die Fassade für eine +offizielle »Build-Farm«, ein Erstellungswerk, das kontinuierlich Guix-Pakete +für einige Prozessorarchitekturen erstellt und sie als Substitute zur +Verfügung stellt. Dies ist die standardmäßige Quelle von Substituten; durch +Übergeben der Befehlszeilenoption @option{--substitute-urls} an entweder den +@command{guix-daemon} (siehe @ref{daemon-substitute-urls,, @code{guix-daemon +--substitute-urls}}) oder Client-Werkzeuge wie @command{guix package} (siehe +@ref{client-substitute-urls,, die Befehlszeilenoption +@option{--substitute-urls} beim Client}) kann eine abweichende Einstellung +benutzt werden. Substitut-URLs können entweder HTTP oder HTTPS sein. HTTPS wird empfohlen, weil die Kommunikation verschlüsselt ist; umgekehrt kann bei HTTP die @@ -3269,13 +3385,12 @@ 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 -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 -Sie Substitute für die offizielle Build-Farm an- oder ausschalten; dieselbe -Prozedur kann auch benutzt werden, um Substitute für einen beliebigen -anderen Substitutsserver zu erlauben. +Sie die Guix-System-Distribution verwenden (siehe @ref{GNU-Distribution}). Auf Fremddistributionen sind sie allerdings standardmäßig +ausgeschaltet, solange Sie sie nicht ausdrücklich in einem der empfohlenen +Installationsschritte erlaubt haben (siehe @ref{Installation}). Die +folgenden Absätze beschreiben, wie Sie Substitute für die offizielle +Build-Farm an- oder ausschalten; dieselbe Prozedur kann auch benutzt werden, +um Substitute für einen beliebigen anderen Substitutsserver zu erlauben. @node Substitut-Server autorisieren @subsection Substitut-Server autorisieren @@ -3284,28 +3399,32 @@ anderen Substitutsserver zu erlauben. @cindex Substitute, deren Autorisierung @cindex Access Control List (ACL), für Substitute @cindex ACL (Access Control List), für Substitute -To allow Guix to download substitutes from @code{@value{SUBSTITUTE-SERVER}} -or a mirror thereof, you must add its public key to the access control list -(ACL) of archive imports, using the @command{guix archive} command -(@pxref{Aufruf von guix archive}). Doing so implies that you trust -@code{@value{SUBSTITUTE-SERVER}} to not be compromised and to serve genuine -substitutes. - -The public key for @code{@value{SUBSTITUTE-SERVER}} is installed along with -Guix, in @code{@var{prefix}/share/guix/@value{SUBSTITUTE-SERVER}.pub}, where -@var{prefix} is the installation prefix of Guix. If you installed Guix from -source, make sure you checked the GPG signature of -@file{guix-@value{VERSION}.tar.gz}, which contains this public key file. -Then, you can run something like this: +Um es Guix zu gestatten, Substitute von @code{@value{SUBSTITUTE-SERVER}} +oder einem Spiegelserver davon herunterzuladen, müssen Sie den zugehörigen +öffentlichen Schlüssel zur Access Control List (ACL, +Zugriffssteuerungsliste) für Archivimporte hinzufügen, mit Hilfe des Befehls +@command{guix archive} (siehe @ref{Aufruf von guix archive}). Dies impliziert, +dass Sie darauf vertrauen, dass @code{@value{SUBSTITUTE-SERVER}} nicht +kompromittiert wurde und echte Substitute liefert. + +Der öffentliche Schlüssel für @code{@value{SUBSTITUTE-SERVER}} wird zusammen +mit Guix installiert, in das Verzeichnis +@code{@var{prefix}/share/guix/hydra.gnu.org.pub}, wobei @var{prefix} das bei +der Installation angegebene Präfix von Guix ist. Wenn Sie Guix aus seinem +Quellcode heraus installieren, sollten Sie sichergehen, dass Sie die +GPG-Signatur (auch »Beglaubigung« genannt) von +@file{guix-@value{VERSION}.tar.gz} prüfen, worin sich dieser öffentliche +Schlüssel befindet. Dann können Sie so etwas wie hier ausführen: @example # guix archive --authorize < @var{prefix}/share/guix/@value{SUBSTITUTE-SERVER}.pub @end example @quotation Anmerkung -Similarly, the @file{hydra.gnu.org.pub} file contains the public key of an -independent build farm also run by the project, reachable at -@indicateurl{https://mirror.hydra.gnu.org}. +Genauso enthält die Datei @file{hydra.gnu.org.pub} den öffentlichen +Schlüssel für eine unabhängige Build-Farm, die auch vom Guix-Projekt +betrieben wird. Sie ist unter @indicateurl{https://mirror.hydra.gnu.org} +erreichbar ist. @end quotation Sobald es eingerichtet wurde, sollte sich die Ausgabe eines Befehls wie @@ -3335,15 +3454,16 @@ $ guix build emacs --dry-run @end example @noindent -This indicates that substitutes from @code{@value{SUBSTITUTE-SERVER}} are -usable and will be downloaded, when possible, for future builds. +Das zeigt an, dass Substitute von @code{@value{SUBSTITUTE-SERVER}} nutzbar +sind und für 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 @code{guix-daemon} beim Starten die Befehlszeilenoption -@code{--no-substitutes} übergeben (@pxref{Aufruf des guix-daemon}). Er kann -auch temporär ausgeschaltet werden, indem Sie @code{--no-substitutes} an -@command{guix package}, @command{guix build} und andere +@code{--no-substitutes} übergeben (siehe @ref{Aufruf des guix-daemon}). Er +kann auch temporär ausgeschaltet werden, indem Sie @code{--no-substitutes} +an @command{guix package}, @command{guix build} und andere Befehlszeilenwerkzeuge übergeben. @node Substitutauthentifizierung @@ -3405,7 +3525,7 @@ sein, usw. Wenn Substitute aktiviert sind und ein Substitut für eine Ableitung zwar verfügbar ist, aber die versuchte Substitution fehlschlägt, kann Guix versuchen, die Ableitung lokal zu erstellen, je nachdem, ob -@code{--fallback} übergeben wurde (@pxref{fallback-option,, common build +@code{--fallback} übergeben wurde (siehe @ref{fallback-option,, common build option @code{--fallback}}). Genauer gesagt, wird keine lokale Erstellung durchgeführt, solange kein @code{--fallback} angegeben wurde, und die Ableitung wird als Fehlschlag angesehen. Wenn @code{--fallback} übergeben @@ -3417,39 +3537,41 @@ lokale Erstellung durchgeführt wird, egal ob @code{--fallback} übergeben wurde oder nicht. Um eine Vorstellung zu bekommen, wieviele Substitute gerade verfügbar sind, -können Sie den Befehl @command{guix weather} benutzen (@pxref{Aufruf von guix weather}). Dieser Befehl zeigt Statistiken darüber an, wie es um die von -einem Server verfügbaren Substitute steht. +können Sie den Befehl @command{guix weather} benutzen (siehe @ref{Aufruf von guix weather}). Dieser Befehl zeigt Statistiken darüber an, wie es um die +von einem Server verfügbaren Substitute steht. @node Vom Vertrauen gegenüber Binärdateien @subsection Vom Vertrauen gegenüber Binärdateien @cindex Vertrauen, gegenüber vorerstellten Binärdateien -Today, each individual's control over their own computing is at the mercy of -institutions, corporations, and groups with enough power and determination -to subvert the computing infrastructure and exploit its weaknesses. While -using @code{@value{SUBSTITUTE-SERVER}} substitutes can be convenient, we -encourage users to also build on their own, or even run their own build -farm, such that @code{@value{SUBSTITUTE-SERVER}} is less of an interesting -target. One way to help is by publishing the software you build using -@command{guix publish} so that others have one more choice of server to -download substitutes from (@pxref{Aufruf von guix publish}). +Derzeit hängt die Kontrolle jedes Individuums über seine Rechner von +Institutionen, Unternehmen und solchen Gruppierungen ab, die über genug +Macht und Entschlusskraft verfügen, die Rechnerinfrastruktur zu sabotieren +und ihre Schwachstellen auszunutzen. Auch wenn es bequem ist, Substitute von +@code{@value{SUBSTITUTE-SERVER}} zu benutzen, ermuntern wir Nutzer, auch +selbst Erstellungen durchzuführen oder gar ihre eigene Build-Farm zu +betreiben, damit @code{@value{SUBSTITUTE-SERVER}} ein weniger interessantes +Ziel wird. Eine Art, uns zu helfen, ist, die von Ihnen erstellte Software +mit dem Befehl @command{guix publish} zu veröffentlichen, damit andere eine +größere Auswahl haben, von welchem Server sie Substitute beziehen möchten +(siehe @ref{Aufruf von guix publish}). Guix hat die richtigen Grundlagen, um die Reproduzierbarkeit von -Erstellungen zu maximieren (@pxref{Funktionalitäten}). In den meisten Fällen sollten -unabhängige Erstellungen eines bestimmten Pakets zu bitweise identischen -Ergebnissen führen. Wir können also mit Hilfe einer vielschichtigen Menge an -unabhängigen Paketerstellungen die Integrität unseres Systems besser -gewährleisten. Der Befehl @command{guix challenge} hat das Ziel, Nutzern zu -ermöglichen, Substitutserver zu beurteilen, und Entwickler dabei zu -unterstützen, nichtdeterministische Paketerstellungen zu finden -(@pxref{Aufruf von guix challenge}). Ebenso ermöglicht es die +Erstellungen zu maximieren (siehe @ref{Funktionalitäten}). In den meisten Fällen +sollten unabhängige Erstellungen eines bestimmten Pakets zu bitweise +identischen Ergebnissen führen. Wir können also mit Hilfe einer +vielschichtigen Menge an unabhängigen Paketerstellungen die Integrität +unseres Systems besser gewährleisten. Der Befehl @command{guix challenge} +hat das Ziel, Nutzern zu ermöglichen, Substitutserver zu beurteilen, und +Entwickler dabei zu unterstützen, nichtdeterministische Paketerstellungen zu +finden (siehe @ref{Aufruf von guix challenge}). Ebenso ermöglicht es die Befehlszeilenoption @option{--check} von @command{guix build}, dass Nutzer bereits installierte Substitute auf Echtheit zu prüfen, indem sie lokal -nachgebaut werden (@pxref{build-check, @command{guix build --check}}). +nachgebaut werden (siehe @ref{build-check, @command{guix build --check}}). In Zukunft wollen wir, dass Guix Binärdateien an und von Nutzern peer-to-peer veröffentlichen kann. Wenn Sie mit uns dieses Projekt -diskuttieren möchten, kommen Sie auf unsere Mailing-Liste +diskutieren möchten, kommen Sie auf unsere Mailing-Liste @email{guix-devel@@gnu.org}. @node Pakete mit mehreren Ausgaben. @@ -3459,14 +3581,14 @@ diskuttieren möchten, kommen Sie auf unsere Mailing-Liste @cindex Paketausgaben @cindex Ausgaben -Oft haben in Guix definierte Pakete eine einzige @dfn{Ausgabe} — d.h. aus +Oft haben in Guix definierte Pakete eine einzige @dfn{Ausgabe} — d.h.@: aus dem Quellpaket entsteht genau ein Verzeichnis im Store. Wenn Sie @command{guix package -i glibc} ausführen, wird die Standard-Paketausgabe des GNU-libc-Pakets installiert; die Standardausgabe wird @code{out} genannt, aber ihr Name kann weggelassen werden, wie sie an obigem Befehl sehen. In diesem speziellen Fall enthält die Standard-Paketausgabe von @code{glibc} alle C-Headerdateien, gemeinsamen Bibliotheken (»Shared -Libraries«), statische Bibliotheken (»Static Libraries«), Dokumentation für +Libraries«), statischen Bibliotheken (»Static Libraries«), Dokumentation für Info sowie andere zusätzliche Dateien. Manchmal ist es besser, die verschiedenen Arten von Dateien, die aus einem @@ -3498,16 +3620,16 @@ belassen wir deshalb die Befehlszeilenwerkzeuge in der Standard-Paketausgabe, während sich die GUIs in einer separaten Ausgabe befinden. So können Benutzer, die die GUIs nicht brauchen, Platz sparen. Der Befehl @command{guix size} kann dabei helfen, solche Situationen zu erkennen -(@pxref{Aufruf von guix size}). @command{guix graph} kann auch helfen -(@pxref{Aufruf von guix graph}). +(siehe @ref{Aufruf von guix size}). @command{guix graph} kann auch helfen +(siehe @ref{Aufruf von guix graph}). In der GNU-Distribution gibt es viele solche Pakete mit mehreren Ausgaben. Andere Konventionen für Ausgabenamen sind zum Beispiel @code{lib} für Bibliotheken und eventuell auch ihre Header-Dateien,, @code{bin} für eigenständige Programme und @code{debug} für Informationen zur -Fehlerbehandlung (@pxref{Dateien zur Fehlersuche installieren}). Die Ausgaben eines -Pakets stehen in der dritten Spalte der Anzeige von @command{guix package ---list-available} (@pxref{Aufruf von guix package}). +Fehlerbehandlung (siehe @ref{Dateien zur Fehlersuche installieren}). Die Ausgaben +eines Pakets stehen in der dritten Spalte der Anzeige von @command{guix +package --list-available} (siehe @ref{Aufruf von guix package}). @node Aufruf von guix gc @@ -3532,12 +3654,14 @@ Müllsammlerwurzeln (kurz auch »GC-Wurzeln«, von englisch »Garbage Collector«) umfasst Standard-Benutzerprofile; standardmäßig werden diese Müllsammlerwurzeln durch symbolische Verknüpfungen in @file{/var/guix/gcroots} dargestellt. Neue Müllsammlerwurzeln können zum -Beispiel mit @command{guix build --root} festgelegt werden (@pxref{Aufruf von guix build}). +Beispiel mit @command{guix build --root} festgelegt werden (siehe +@ref{Aufruf von guix build}). Der Befehl @command{guix gc --list-roots} listet +sie auf. Bevor Sie mit @code{guix gc --collect-garbage} Speicher freimachen, wollen Sie vielleicht alte Generationen von Benutzerprofilen löschen, damit alte Paketerstellungen von diesen Generationen entfernt werden können. Führen Sie -dazu @code{guix package --delete-generations} aus (@pxref{Aufruf von guix package}). +dazu @code{guix package --delete-generations} aus (siehe @ref{Aufruf von guix package}). Unsere Empfehlung ist, dass Sie den Müllsammler regelmäßig laufen lassen und wenn Sie wenig freien Speicherplatz zur Verfügung haben. Um zum Beispiel @@ -3548,12 +3672,14 @@ Verfügung haben, benutzen Sie einfach: guix gc -F 5G @end example -It is perfectly safe to run as a non-interactive periodic job -(@pxref{Geplante Auftragsausführung}, for how to set up such a job). Running -@command{guix gc} with no arguments will collect as much garbage as it can, -but that is often inconvenient: you may find yourself having to rebuild or -re-download software that is ``dead'' from the GC viewpoint but that is -necessary to build other pieces of software---e.g., the compiler tool chain. +Es ist völlig sicher, dafür eine nicht interaktive, regelmäßige +Auftragsausführung vorzugeben (siehe @ref{Geplante Auftragsausführung} für eine +Erklärung, wie man das tun kann). @command{guix gc} ohne +Befehlszeilenargumente auszuführen, lässt so viel Müll wie möglich sammeln, +aber das ist oft nicht, was man will, denn so muss man unter Umständen +Software erneut erstellen oder erneut herunterladen, weil der Müllsammler +sie als »tot« ansieht, sie aber zur Erstellung anderer Software wieder +gebraucht wird — das trifft zum Beispiel auf die Compiler-Toolchain zu. Der Befehl @command{guix gc} hat drei Arbeitsmodi: Er kann benutzt werden, um als Müllsammler tote Dateien zu entfernen (das Standardverhalten), um @@ -3565,14 +3691,14 @@ Müllsammler-Befehlszeilenoptionen sind wie folgt: @table @code @item --collect-garbage[=@var{Minimum}] @itemx -C [@var{Minimum}] -Lässt Müll sammeln — z.B. nicht erreichbare Dateien in @file{/gnu/store} und -seinen Unterverzeichnissen. Wird keine andere Befehlszeilenoption angegeben, -wird standardmäßig diese durchgeführt. +Lässt Müll sammeln — z.B.@: nicht erreichbare Dateien in @file{/gnu/store} +und seinen Unterverzeichnissen. Wird keine andere Befehlszeilenoption +angegeben, wird standardmäßig diese durchgeführt. Wenn ein @var{Minimum} angegeben wurde, hört der Müllsammler auf, sobald @var{Minimum} Bytes gesammelt wurden. Das @var{Minimum} kann die Anzahl der Bytes bezeichnen oder mit einer Einheit als Suffix versehen sein, wie etwa -@code{MiB} für Mebibytes und @code{GB} für Gigabytes (@pxref{Block size, +@code{MiB} für Mebibytes und @code{GB} für Gigabytes (siehe @ref{Block size, size specifications,, coreutils, GNU Coreutils}). Wird kein @var{Minimum} angegeben, sammelt der Müllsammler allen Müll. @@ -3586,8 +3712,24 @@ eine Speichergröße wie @code{500MiB}, wie oben beschrieben. Wenn die angegebene @var{Menge} oder mehr bereits in @file{/gnu/store} frei verfügbar ist, passiert nichts. +@item --delete-generations[=@var{Dauer}] +@itemx -d [@var{Dauer}] +Bevor der Müllsammelvorgang beginnt, werden hiermit alle Generationen von +allen Benutzerprofilen gelöscht, die älter sind als die angegebene +@var{Dauer}; wird es als Administratornutzer »root« ausgeführt, geschieht +dies mit den Profilen @emph{von allen Benutzern}. + +Zum Beispiel löscht der folgende Befehl alle Generationen Ihrer Profile, die +älter als zwei Monate sind (ausgenommen die momentanen Generationen), und +schmeißt dann den Müllsammler an, um Platz freizuräumen, bis mindestens 10 +GiB verfügbar sind: + +@example +guix gc -d 2m -F 10G +@end example + @item --delete -@itemx -d +@itemx -D Versucht, alle als Argumente angegebenen Dateien oder Verzeichnisse im Store zu löschen. Dies schlägt fehl, wenn manche der Dateien oder Verzeichnisse nicht im Store oder noch immer lebendig sind. @@ -3597,9 +3739,14 @@ Store-Objekte auflisten, die zwischengespeicherten Erstellungsfehlern entsprechen. Hierbei wird nichts ausgegeben, sofern der Daemon nicht mit -@option{--cache-failures} gestartet wurde (@pxref{Aufruf des guix-daemon, +@option{--cache-failures} gestartet wurde (siehe @ref{Aufruf des guix-daemon, @option{--cache-failures}}). +@item --list-roots +Die Müllsammlerwurzeln auflisten, die dem Nutzer gehören. Wird der Befehl +als Administratornutzer ausgeführt, werden @emph{alle} Müllsammlerwurzeln +aufgelistet. + @item --clear-failures Die angegebenen Store-Objekte aus dem Zwischenspeicher für fehlgeschlagene Erstellungen entfernen. @@ -3634,15 +3781,15 @@ auf. Voraussetzungen sind die Store-Dateien selbst, ihre Referenzen sowie die Referenzen davon, rekursiv. Mit anderen Worten, die zurückgelieferte Liste ist der @dfn{transitive Abschluss} dieser Store-Dateien. -Der Abschnitt @xref{Aufruf von guix size} erklärt ein Werkzeug, um den +Der Abschnitt @ref{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 Referenzgraphen zu +@ref{Aufruf von guix graph} für ein Werkzeug, um den Referenzgraphen zu veranschaulichen. @item --derivers @cindex Ableitung Liefert die Ableitung(en), die zu den angegebenen Store-Objekten führen -(@pxref{Ableitungen}). +(siehe @ref{Ableitungen}). Zum Beispiel liefert dieser Befehl: @@ -3687,11 +3834,11 @@ der Befehl viel Zeit brauchen, besonders auf Systemen mit langsamer Platte. @cindex Datenbeschädigung, Behebung Mit @option{--verify=repair} oder @option{--verify=contents,repair} versucht der Daemon, beschädigte Store-Objekte zu reparieren, indem er Substitute für -selbige herunterlädt (@pxref{Substitute}). Weil die Reparatur nicht atomar -und daher womöglich riskant ist, kann nur der Systemadministrator den Befehl -benutzen. Eine weniger aufwendige Alternative, wenn Sie wissen, welches -Objekt beschädigt ist, ist, @command{guix build --repair} zu benutzen -(@pxref{Aufruf von guix build}). +selbige herunterlädt (siehe @ref{Substitute}). Weil die Reparatur nicht +atomar und daher womöglich riskant ist, kann nur der Systemadministrator den +Befehl benutzen. Eine weniger aufwendige Alternative, wenn Sie wissen, +welches Objekt beschädigt ist, ist, @command{guix build --repair} zu +benutzen (siehe @ref{Aufruf von guix build}). @item --optimize @cindex Deduplizieren @@ -3700,7 +3847,7 @@ optimieren — mit anderen Worten wird der Store @dfn{dedupliziert}. Der Daemon führt Deduplizierung automatisch nach jeder erfolgreichen Erstellung und jedem Importieren eines Archivs durch, sofern er nicht mit -@code{--disable-deduplication} (@pxref{Aufruf des guix-daemon, +@code{--disable-deduplication} (siehe @ref{Aufruf des guix-daemon, @code{--disable-deduplication}}) gestartet wurde. Diese Befehlszeilenoption brauchen Sie also in erster Linie dann, wenn der Daemon zuvor mit @code{--disable-deduplication} gestartet worden ist. @@ -3739,8 +3886,8 @@ Guix-Version, und umgekehrt. 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}): +Sie auch wirklich das neueste Guix und sein Info-Handbuch sehen (siehe +@ref{Dokumentation}): @example export PATH="$HOME/.config/guix/current/bin:$PATH" @@ -3783,8 +3930,8 @@ andere Möglichkeiten erklärt, sich den momentanen Zustand von Guix beschreiben zu lassen. Das Profil @code{~/.config/guix/current} verhält sich genau wie jedes andere -Profil, das von @command{guix package} erzeugt wurde (@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 +Profil, das von @command{guix package} erzeugt wurde (siehe @ref{Aufruf von guix package}). Das bedeutet, Sie können seine Generationen auflisten und es +auf die vorherige Generation — also das vorherige Guix — zurücksetzen und so weiter: @example @@ -3801,9 +3948,9 @@ aufgerufen, aber er versteht auch folgende Befehlszeilenoptionen: @item --url=@var{URL} @itemx --commit=@var{Commit} @itemx --branch=@var{Branch} -Code wird von der angegebenen @var{URL} für den angegebenen @var{Commit} -(eine gültige Commit-ID, dargestellt als hexadezimale Zeichenkette) oder -@var{Branch} heruntergeladen. +Download code for the @code{guix} channel from the specified @var{url}, at +the given @var{commit} (a valid Git commit ID represented as a hexadecimal +string), or @var{branch}. @cindex @file{channels.scm}, Konfigurationsdatei @cindex Konfigurationsdatei für Kanäle @@ -3816,14 +3963,14 @@ die Option @option{--channels} angeben (siehe unten). Die Liste der Kanäle aus der angegebenen @var{Datei} statt aus @file{~/.config/guix/channels.scm} auslesen. Die @var{Datei} muss Scheme-Code enthalten, der zu einer Liste von Kanalobjekten ausgewertet -wird. Siehe @xref{Kanäle} für nähere Informationen. +wird. Siehe @ref{Kanäle} für nähere Informationen. @item --list-generations[=@var{Muster}] @itemx -l [@var{Muster}] Alle Generationen von @file{~/.config/guix/current} bzw., wenn ein @var{Muster} angegeben wird, die dazu passenden Generationen auflisten. Die Syntax für das @var{Muster} ist dieselbe wie bei @code{guix package ---list-generations} (@pxref{Aufruf von guix package}). +--list-generations} (siehe @ref{Aufruf von guix package}). Im Abschnitt @ref{Aufruf von guix describe, @command{guix describe}} wird eine Möglichkeit erklärt, sich Informationen nur über die aktuelle Generation @@ -3841,7 +3988,7 @@ jeweils erstellt oder substituiert würde, ohne es tatsächlich durchzuführen. @item --system=@var{System} @itemx -s @var{System} Versuchen, für die angegebene Art von @var{System} geeignete Binärdateien zu -erstellen — z.B. @code{i686-linux} — statt für die Art von System, das die +erstellen — z.B.@: @code{i686-linux} — statt für die Art von System, das die Erstellung durchführt. @item --verbose @@ -3856,10 +4003,10 @@ Befehlszeilenoption ist nur für Guix-Entwickler von Nutzen. Mit Hilfe von @dfn{Kanälen} können Sie bei @command{guix pull} anweisen, von welchem Repository und welchem Branch Guix aktualisiert werden soll, sowie von welchen @emph{weiteren} Repositorys Paketmodule bezogen werden -sollen. Im Abschnitt @xref{Kanäle} finden Sie nähere Informationen. +sollen. Im Abschnitt @ref{Kanäle} finden Sie nähere Informationen. Außerdem unterstützt @command{guix pull} alle gemeinsamen -Erstellungsoptionen (@pxref{Gemeinsame Erstellungsoptionen}). +Erstellungsoptionen (siehe @ref{Gemeinsame Erstellungsoptionen}). @node Kanäle @section Kanäle @@ -3870,7 +4017,7 @@ Erstellungsoptionen (@pxref{Gemeinsame Erstellungsoptionen}). @cindex @command{guix pull}, Konfigurationsdatei @cindex Konfiguration von @command{guix pull} Guix und die Sammlung darin verfügbarer Pakete können Sie durch Ausführen -von @command{guix pull} aktualisieren (@pxref{Aufruf von guix pull}). Standardmäßig lädt @command{guix pull} Guix selbst vom offiziellen +von @command{guix pull} aktualisieren (siehe @ref{Aufruf von guix pull}). Standardmäßig lädt @command{guix pull} Guix selbst vom offiziellen Repository von GNU@tie{}Guix herunter und installiert es. Diesen Vorgang können Sie anpassen, indem Sie @dfn{Kanäle} in der Datei @file{~/.config/guix/channels.scm} angeben. Ein Kanal enthält eine Angabe @@ -3911,9 +4058,9 @@ Sie haben ein paar eigene Paketvarianten oder persönliche Pakete, von denen Sie meinen, dass sie @emph{nicht} geeignet sind, ins Guix-Projekt selbst aufgenommen zu werden, die Ihnen aber dennoch wie andere Pakete auf der Befehlszeile zur Verfügung stehen sollen. Dann würden Sie zunächst Module -mit diesen Paketdefinitionen schreiben (@pxref{Paketmodule}) und diese -dann in einem Git-Repository verwalten, welches Sie selbst oder jeder andere -dann als zusätzlichen Kanal eintragen können, von dem Pakete geladen +mit diesen Paketdefinitionen schreiben (siehe @ref{Paketmodule}) und +diese dann in einem Git-Repository verwalten, welches Sie selbst oder jeder +andere dann als zusätzlichen Kanal eintragen können, von dem Pakete geladen werden. Klingt gut, oder? @c What follows stems from discussions at @@ -3927,8 +4074,8 @@ auch ein paar Worte der Warnung mit auf den Weg geben: @itemize @item Bevor Sie einen Kanal veröffentlichen, überlegen Sie sich bitte erst, ob Sie -die Pakete nicht besser zum eigentlichen Guix-Projekt beisteuern -(@pxref{Mitwirken}). Das Guix-Projekt ist gegenüber allen Arten freier +die Pakete nicht besser zum eigentlichen Guix-Projekt beisteuern (siehe +@ref{Mitwirken}). Das Guix-Projekt ist gegenüber allen Arten freier Software offen und zum eigentlichen Guix gehörende Pakete stehen allen Guix-Nutzern zur Verfügung, außerdem profitieren sie von Guix’ Qualitätssicherungsprozess. @@ -3957,9 +4104,10 @@ entspricht. Bitte schicken Sie eine E-Mail an @email{guix-devel@@gnu.org}, wenn Sie dies diskutieren möchten. @end quotation -To use a channel, write @code{~/.config/guix/channels.scm} to instruct -@command{guix pull} to pull from it @emph{in addition} to the default Guix -channel(s): +Um einen Kanal zu benutzen, tragen Sie ihn in +@code{~/.config/guix/channels.scm} ein, damit @command{guix pull} diesen +Kanal @emph{zusätzlich} zu den standardmäßigen Guix-Kanälen als Paketquelle +verwendet: @vindex %default-channels @lisp @@ -3971,13 +4119,14 @@ 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 -@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 -repository. The result in @file{~/.config/guix/current} is the union of -Guix with your own package modules: +Beachten Sie, dass der obige Schnipsel (wie immer!)@: Scheme-Code ist; mit +@code{cons} fügen wir einen Kanal zur Liste der Kanäle hinzu, an die die +Variable @code{%default-channels} gebunden ist (siehe @ref{Pairs, +@code{cons} and lists,, guile, GNU Guile Reference Manual}). Mit diesem +Dateiinhalt wird @command{guix pull} nun nicht mehr nur Guix, sondern auch +die Paketmodule aus Ihrem Repository erstellen. Das Ergebnis in +@file{~/.config/guix/current} ist so die Vereinigung von Guix und Ihren +eigenen Paketmodulen. @example $ guix pull --list-generations @@ -4003,49 +4152,52 @@ vielleicht manche wie @code{mein-gimp} und @code{mein-emacs-mit-coolen-features} aus @code{meine-persönlichen-pakete}, während andere aus dem Standard-Guix-Kanal kommen. -To create a channel, create a Git repository containing your own package -modules and make it available. The repository can contain anything, but a -useful channel will contain Guile modules that export packages. Once you -start using a channel, Guix will behave as if the root directory of that -channel's Git repository has been added to the Guile load path (@pxref{Load -Paths,,, guile, GNU Guile Reference Manual}). For example, if your channel -contains a file at @file{my-packages/my-tools.scm} that defines a Guile -module, then the module will be available under the name @code{(my-packages -my-tools)}, and you will be able to use it like any other module -(@pxref{Module,,, guile, GNU Guile Reference Manual}). +Um einen Kanal zu erzeugen, müssen Sie ein Git-Repository mit Ihren eigenen +Paketmodulen erzeugen und den Zugriff darauf ermöglichen. Das Repository +kann beliebigen Inhalt haben, aber wenn es ein nützlicher Kanal sein soll, +muss es Guile-Module enthalten, die Pakete exportieren. Sobald Sie anfangen, +einen Kanal zu benutzen, verhält sich Guix, als wäre das Wurzelverzeichnis +des Git-Repositorys des Kanals in Guiles Ladepfad enthalten (siehe @ref{Load +Paths,,, guile, GNU Guile Reference Manual}). Wenn Ihr Kanal also zum +Beispiel eine Datei als @file{my-packages/my-tools.scm} enthält, die ein +Guile-Modul definiert, dann wird das Modul unter dem Namen +@code{(my-packages my-tools)} verfügbar sein und Sie werden es wie jedes +andere Modul benutzen können (siehe @ref{Module,,, guile, GNU Guile +Reference Manual}). -@cindex dependencies, channels -@cindex meta-data, channels -@subsection Declaring Channel Dependencies +@cindex Abhängigkeiten, bei Kanälen +@cindex Metadaten, bei Kanälen +@subsection Kanalabhängigkeiten deklarieren -Channel authors may decide to augment a package collection provided by other -channels. They can declare their channel to be dependent on other channels -in a meta-data file @file{.guix-channel}, which is to be placed in the root -of the channel repository. +Kanalautoren können auch beschließen, die Paketsammlung von anderen Kanälen +zu erweitern. Dazu können sie in einer Metadatendatei @file{.guix-channel} +deklarieren, dass ihr Kanal von anderen Kanälen abhängt. Diese Datei muss im +Wurzelverzeichnis des Kanal-Repositorys platziert werden. -The meta-data file should contain a simple S-expression like this: +Die Metadatendatei sollte einen einfachen S-Ausdruck wie diesen enthalten: @lisp (channel (version 0) (dependencies (channel - (name some-collection) - (url "https://example.org/first-collection.git")) + (name irgendeine-sammlung) + (url "https://example.org/erste-sammlung.git")) (channel - (name some-other-collection) - (url "https://example.org/second-collection.git") + (name eine-andere-sammlung) + (url "https://example.org/zweite-sammlung.git") (branch "testing")))) @end lisp -In the above example this channel is declared to depend on two other -channels, which will both be fetched automatically. The modules provided by -the channel will be compiled in an environment where the modules of all -these declared channels are available. +Im Beispiel oben wird deklariert, dass dieser Kanal von zwei anderen Kanälen +abhängt, die beide automatisch geladen werden. Die vom Kanal angebotenen +Module werden in einer Umgebung kompiliert, in der die Module all dieser +deklarierten Kanäle verfügbar sind. -For the sake of reliability and maintainability, you should avoid -dependencies on channels that you don't control, and you should aim to keep -the number of dependencies to a minimum. +Um Verlässlichkeit und Wartbarkeit zu gewährleisten, sollen Sie darauf +verzichten, eine Abhängigkeit von Kanälen herzustellen, die Sie nicht +kontrollieren, außerdem sollten Sie sich auf eine möglichst kleine Anzahl +von Abhängigkeiten beschränken. @subsection Guix nachbilden @@ -4071,7 +4223,7 @@ diese Commits »festgesetzt« ist. @end lisp Der Befehl @command{guix describe --format=channels} kann diese Kanalliste -sogar direkt erzeugen (@pxref{Aufruf von guix describe}). +sogar direkt erzeugen (siehe @ref{Aufruf von guix describe}). Somit läuft auf beiden Maschinen @emph{genau dasselbe Guix} und es hat Zugang zu @emph{genau denselben Paketen}. Die Ausgabe von @command{guix @@ -4084,7 +4236,7 @@ Das verleiht Ihnen Superkräfte, mit denen Sie die Provenienz binärer Artefakte sehr feinkörnig nachverfolgen können und Software-Umgebungen nach Belieben nachbilden können. Sie können es als eine Art Fähigkeit zur »Meta-Reproduzierbarkeit« auffassen, wenn Sie möchten. Der Abschnitt -@xref{Untergeordnete} beschreibt eine weitere Möglichkeit, diese Superkräfte zu +@ref{Untergeordnete} beschreibt eine weitere Möglichkeit, diese Superkräfte zu nutzen. @node Untergeordnete @@ -4106,23 +4258,25 @@ Guix-Versionen beliebig mischen können. @cindex untergeordnete Pakete Aus technischer Sicht ist ein »Untergeordneter« im Kern ein separater -Guix-Prozess, der über eine REPL (@pxref{Aufruf von guix repl}) mit Ihrem +Guix-Prozess, der über eine REPL (siehe @ref{Aufruf von guix repl}) mit Ihrem Haupt-Guix-Prozess verbunden ist. Das Modul @code{(guix inferior)} ermöglicht es Ihnen, Untergeordnete zu erstellen und mit ihnen zu kommunizieren. Dadurch steht Ihnen auch eine hochsprachliche Schnittstelle zur Verfügung, um die von einem Untergeordneten angebotenen Pakete zu durchsuchen und zu verändern — @dfn{untergeordnete Pakete}. -In Kombination mit Kanälen (@pxref{Kanäle}) bieten Untergeordnete eine +In Kombination mit Kanälen (siehe @ref{Kanäle}) bieten Untergeordnete eine einfache Möglichkeit, mit einer anderen Version von Guix zu interagieren. Nehmen wir zum Beispiel an, Sie wollen das aktuelle @code{guile}-Paket in Ihr Profil installieren, zusammen mit dem @code{guile-json}, wie es in einer früheren Guix-Version existiert hat — vielleicht weil das neuere @code{guile-json} eine inkompatible API hat und Sie daher Ihren Code mit der alten API benutzen möchten. Dazu könnten Sie -ein Manifest für @code{guix package --manifest} schreiben (@pxref{Aufruf von guix package}); in diesem Manifest würden Sie einen Untergeordneten für -diese alte Guix-Version erzeugen, für die Sie sich interessieren, und aus -diesem Untergeordneten das @code{guile-json}-Paket holen: +ein Manifest für @code{guix package --manifest} schreiben (siehe +@ref{Aufruf von guix package}); in diesem Manifest würden Sie einen +Untergeordneten für diese alte Guix-Version erzeugen, für die Sie sich +interessieren, und aus diesem Untergeordneten das @code{guile-json}-Paket +holen: @lisp (use-modules (guix inferior) (guix channels) @@ -4208,21 +4362,21 @@ Liefert wahr, wenn das @var{obj} ein Untergeordneter ist. @deffnx {Scheme-Prozedur} inferior-package-transitive-native-search-paths @var{Paket} @deffnx {Scheme-Prozedur} inferior-package-search-paths @var{Paket} Diese Prozeduren sind das Gegenstück zu den Zugriffsmethoden des Verbunds -»package« für Pakete (@pxref{»package«-Referenz}). Die meisten davon +»package« für Pakete (siehe @ref{»package«-Referenz}). Die meisten davon funktionieren durch eine Abfrage auf dem Untergeordneten, von dem das @var{Paket} kommt, weshalb der Untergeordnete noch lebendig sein muss, wenn Sie diese Prozeduren aufrufen. @end deffn Untergeordnete Pakete können transparent wie jedes andere Paket oder -dateiartige Objekt in G-Ausdrücken verwendet werden -(@pxref{G-Ausdrücke}). Sie werden auch transparent wie reguläre Pakete von +dateiartige Objekt in G-Ausdrücken verwendet werden (siehe +@ref{G-Ausdrücke}). Sie werden auch transparent wie reguläre Pakete von der Prozedur @code{packages->manifest} behandelt, welche oft in Manifesten -benutzt wird (@pxref{Aufruf von guix package, siehe die Befehlszeilenoption -@option{--manifest} von @command{guix package}}). Somit können Sie ein -untergeordnetes Paket ziemlich überall dort verwenden, wo Sie ein reguläres -Paket einfügen würden: in Manifesten, im Feld @code{packages} Ihrer -@code{operating-system}-Deklaration und so weiter. +benutzt wird (siehe @ref{Aufruf von guix package, siehe die +Befehlszeilenoption @option{--manifest} von @command{guix package}}). Somit +können Sie ein untergeordnetes Paket ziemlich überall dort verwenden, wo Sie +ein reguläres Paket einfügen würden: in Manifesten, im Feld @code{packages} +Ihrer @code{operating-system}-Deklaration und so weiter. @node Aufruf von guix describe @section @command{guix describe} aufrufen @@ -4242,7 +4396,7 @@ gibt Ihnen Antwort auf diese Fragen. Wenn Sie ihn aus einem mit @command{guix pull} bezogenen @command{guix} heraus ausführen, zeigt Ihnen @command{guix describe} die Kanäle an, aus denen es erstellt wurde, jeweils mitsamt ihrer Repository-URL und Commit-ID -(@pxref{Kanäle}): +(siehe @ref{Kanäle}): @example $ guix describe @@ -4256,7 +4410,7 @@ Generation 10 Sep 03 2018 17:32:44 (current) Wenn Sie mit dem Versionskontrollsystem Git vertraut sind, erkennen Sie vielleicht die Ähnlichkeit zu @command{git describe}; die Ausgabe ähnelt auch der von @command{guix pull --list-generations} eingeschränkt auf die -aktuelle Generation (@pxref{Aufruf von guix pull, die Befehlszeilenoption +aktuelle Generation (siehe @ref{Aufruf von guix pull, die Befehlszeilenoption @option{--list-generations}}). Weil die oben gezeigte Git-Commit-ID eindeutig eine bestimmte Version von Guix bezeichnet, genügt diese Information, um die von Ihnen benutzte Version von Guix zu beschreiben, und @@ -4279,7 +4433,7 @@ $ guix describe -f channels Sie können die Ausgabe in einer Datei speichern, die Sie an @command{guix pull -C} auf einer anderen Maschine oder zu einem späteren Zeitpunkt übergeben, wodurch dann eine Instanz @emph{von genau derselben Guix-Version} -installiert wird (@pxref{Aufruf von guix pull, die Befehlszeilenoption +installiert wird (siehe @ref{Aufruf von guix pull, die Befehlszeilenoption @option{-C}}). Daraufhin können Sie, weil Sie jederzeit dieselbe Version von Guix installieren können, auch gleich @emph{eine vollständige Softwareumgebung genau nachbilden}. Wir halten das trotz aller @@ -4300,7 +4454,7 @@ für menschenlesbare Ausgabe, @item Kanäle eine Liste von Kanalspezifikationen erzeugen, die an @command{guix pull -C} übergeben werden oder als @file{~/.config/guix/channels.scm} eingesetzt -werden können (@pxref{Aufruf von guix pull}), +werden können (siehe @ref{Aufruf von guix pull}), @item json @cindex JSON generiert eine Liste von Kanalspezifikationen im JSON-Format, @@ -4327,7 +4481,7 @@ Store-Objekte von einer Maschine in den Store einer anderen Maschine @quotation Anmerkung Wenn Sie nach einer Möglichkeit suchen, Archivdateien für andere Werkzeuge als Guix zu erstellen, finden Sie Informationen dazu im Abschnitt -@pxref{Aufruf von guix pack}. +@ref{Aufruf von guix pack}. @end quotation @cindex Store-Objekte exportieren @@ -4339,7 +4493,7 @@ guix archive --export @var{Optionen} @var{Spezifikationen}... @end example @var{Spezifikationen} sind dabei entweder die Namen von Store-Dateien oder -Paketspezifikationen wie bei @command{guix package} (@pxref{Aufruf von guix package}). Zum Beispiel erzeugt der folgende Befehl ein Archiv der +Paketspezifikationen wie bei @command{guix package} (siehe @ref{Aufruf von guix package}). Zum Beispiel erzeugt der folgende Befehl ein Archiv der @code{gui}-Ausgabe des Pakets @code{git} sowie die Hauptausgabe von @code{emacs}: @@ -4349,8 +4503,8 @@ guix archive --export git:gui /gnu/store/...-emacs-24.3 > groß.nar Wenn die angegebenen Pakete noch nicht erstellt worden sind, werden sie durch @command{guix archive} automatisch erstellt. Der Erstellungsprozess -kann durch die gemeinsamen Erstellungsoptionen gesteuert werden -(@pxref{Gemeinsame Erstellungsoptionen}). +kann durch die gemeinsamen Erstellungsoptionen gesteuert werden (siehe +@ref{Gemeinsame Erstellungsoptionen}). Um das @code{emacs}-Paket auf eine über SSH verbundene Maschine zu übertragen, würde man dies ausführen: @@ -4375,8 +4529,8 @@ Jedoch sollten Sie in beiden Beispielen beachten, dass alles, was zu oder nicht. Mit der Befehlszeilenoption @code{--missing} lässt sich herausfinden, welche Objekte im Ziel-Store noch fehlen. Der Befehl @command{guix copy} vereinfacht und optimiert diesen gesamten Prozess, ist -also, was Sie in diesem Fall wahrscheinlich eher benutzen wollten -(@pxref{Aufruf von guix copy}). +also, was Sie in diesem Fall wahrscheinlich eher benutzen wollten (siehe +@ref{Aufruf von guix copy}). @cindex Nar, Archivformat @cindex Normalisiertes Archiv (Nar) @@ -4394,10 +4548,10 @@ deterministisch. @c FIXME: Add xref to daemon doc about signatures. Beim Exportieren versieht der Daemon den Inhalt des Archivs mit einer -digitalen Signatur. Diese digitale Signatur wird an das Archiv -angehängt. Beim Importieren verifiziert der Daemon die Signatur und lehnt -den Import ab, falls die Signatur ungültig oder der signierende Schlüssel -nicht autorisiert ist. +digitalen Signatur, auch Beglaubigung genannt. Diese digitale Signatur wird +an das Archiv angehängt. Beim Importieren verifiziert der Daemon die +Signatur und lehnt den Import ab, falls die Signatur ungültig oder der +signierende Schlüssel nicht autorisiert ist. Die wichtigsten Befehlszeilenoptionen sind: @@ -4442,14 +4596,14 @@ geheim gehalten werden muss). Wurden keine @var{Parameters} angegeben, wird ein ECDSA-Schlüssel unter Verwendung der Kurve Ed25519 erzeugt, oder, falls die Libgcrypt-Version älter als 1.6.0 ist, ein 4096-Bit-RSA-Schlüssel. Sonst geben die @var{Parameter} für Libgcrypt geeignete Parameter für -@code{genkey} an (@pxref{General public-key related Functions, +@code{genkey} an (siehe @ref{General public-key related Functions, @code{gcry_pk_genkey},, gcrypt, The Libgcrypt Reference Manual}). @item --authorize @cindex Autorisieren, von Archiven Mit dem auf der Standardeingabe übergebenen öffentlichen Schlüssel signierte Importe autorisieren. Der öffentliche Schlüssel muss als -»advanced«-formatierter S-Ausdruck gespeichert sein, d.h. im selben Format +»advanced«-formatierter S-Ausdruck gespeichert sein, d.h.@: im selben Format wie die Datei @file{signing-key.pub}. Die Liste autorisierter Schlüssel wird in der Datei @file{/etc/guix/acl} @@ -4462,12 +4616,12 @@ S-Ausdrücke} und ist als eine Access Control List für die @item --extract=@var{Verzeichnis} @itemx -x @var{Verzeichnis} Ein Archiv mit einem einzelnen Objekt lesen, wie es von Substitutservern -geliefert wird (@pxref{Substitute}) und ins @var{Verzeichnis} +geliefert wird (siehe @ref{Substitute}) und ins @var{Verzeichnis} entpacken. Dies ist eine systemnahe Operation, die man nur selten direkt benutzt; siehe unten. -For example, the following command extracts the substitute for Emacs served -by @code{@value{SUBSTITUTE-SERVER}} to @file{/tmp/emacs}: +Zum Beispiel entpackt folgender Befehl das Substitut für Emacs, wie es von +@code{@value{SUBSTITUTE-SERVER}} geliefert wird, nach @file{/tmp/emacs}: @example $ wget -O - \ @@ -4489,19 +4643,20 @@ unter Umständen nicht vertraut wird. @c ********************************************************************* -@node Development -@chapter Development +@node Entwicklung +@chapter Entwicklung -@cindex software development -If you are a software developer, Guix provides tools that you should find -helpful---independently of the language you're developing in. This is what -this chapter is about. +@cindex Softwareentwicklung +Wenn Sie ein Software-Entwickler sind, gibt Ihnen Guix Werkzeuge an die +Hand, die Sie für hilfreich erachten dürften — ganz unabhängig davon, in +welcher Sprache Sie entwickeln. Darum soll es in diesem Kapitel gehen. -The @command{guix environment} command provides a convenient way to set up -@dfn{development environments} containing all the dependencies and tools -necessary to work on the software package of your choice. The @command{guix -pack} command allows you to create @dfn{application bundles} that can be -easily distributed to users who do not run Guix. +Der Befehl @command{guix environment} stellt eine bequeme Möglichkeit dar, +wie Sie eine @dfn{Entwicklungsumgebung} aufsetzen können, in der all die +Abhängigkeiten und Werkzeuge enthalten sind, die Sie brauchen, wenn Sie an +Ihrem Lieblingssoftwarepaket arbeiten. Der Befehl @command{guix pack} macht +es Ihnen möglich, @dfn{Anwendungsbündel} zu erstellen, die leicht an Nutzer +verteilt werden können, die kein Guix benutzen. @menu * Aufruf von guix environment:: Entwicklungsumgebungen einrichten. @@ -4549,16 +4704,16 @@ Bash startet, selbige @file{~/.bashrc} von Bash gelesen wird und die neuen Umgebungen somit »verunreinigt«. Es ist ein Fehler, solche Umgebungsvariable in @file{.bashrc} zu definieren, stattdessen sollten sie in @file{.bash_profile} geschrieben werden, was nur von Login-Shells mit -»source« geladen wird. @xref{Bash Startup Files,,, bash, The GNU Bash -Reference Manual}, für Details über beim Starten von Bash gelesene Dateien}. +»source« geladen wird. Siehe @ref{Bash Startup Files,,, bash, The GNU Bash +Reference Manual} für Details über beim Starten von Bash gelesene Dateien}. @vindex GUIX_ENVIRONMENT @command{guix environment} definiert die Variable @code{GUIX_ENVIRONMENT} in der neu erzeugten Shell. Ihr Wert ist der Dateiname des Profils dieser neuen Umgebung. Das könnten Nutzer verwenden, um zum Beispiel eine besondere Prompt als Eingabeaufforderung für Entwicklungsumgebungen in ihrer -@file{.bashrc} festzulegen (@pxref{Bash Startup Files,,, bash, The GNU Bash -Reference Manual}): +@file{.bashrc} festzulegen (siehe @ref{Bash Startup Files,,, bash, The GNU +Bash Reference Manual}): @example if [ -n "$GUIX_ENVIRONMENT" ] @@ -4568,7 +4723,7 @@ fi @end example @noindent -...@: or to browse the profile: +…@: oder um ihr Profil durchzusehen: @example $ ls "$GUIX_ENVIRONMENT/bin" @@ -4616,13 +4771,14 @@ umfasst: guix environment guix --ad-hoc git strace @end example -Sometimes it is desirable to isolate the environment as much as possible, -for maximal purity and reproducibility. In particular, when using Guix on a -host distro that is not Guix System, it is desirable to prevent access to -@file{/usr/bin} and other system-wide resources from the development -environment. For example, the following command spawns a Guile REPL in a -``container'' where only the store and the current working directory are -mounted: +Manchmal ist es wünschenswert, die Umgebung so viel wie möglich zu +isolieren, um maximale Reinheit und Reproduzierbarkeit zu +bekommen. Insbesondere ist es wünschenswert, den Zugriff auf @file{/usr/bin} +und andere Systemressourcen aus der Entwicklungsumgebung heraus zu +verhindern, wenn man Guix auf einer fremden Wirtsdistribution benutzt, die +nicht Guix System ist. Zum Beispiel startet der folgende Befehl eine +Guile-REPL in einer isolierten Umgebung, einem sogenannten »Container«, in +der nur der Store und das aktuelle Arbeitsverzeichnis eingebunden sind: @example guix environment --ad-hoc --container guile -- guile @@ -4636,8 +4792,8 @@ Die Befehlszeilenoption @code{--container} funktioniert nur mit Linux-libre Im Folgenden werden die verfügbaren Befehlszeilenoptionen zusammengefasst. @table @code -@item --root=@var{file} -@itemx -r @var{file} +@item --root=@var{Datei} +@itemx -r @var{Datei} @cindex persistente Umgebung @cindex Müllsammlerwurzel, für Umgebungen Die @var{Datei} zu einer symbolischen Verknüpfung auf das Profil dieser @@ -4649,7 +4805,7 @@ Das ist nützlich, um seine Umgebung vor dem Müllsammler zu schützen und sie Wird diese Option weggelassen, ist die Umgebung nur, solange die Sitzung von @command{guix environment} besteht, vor dem Müllsammler sicher. Das bedeutet, wenn Sie das nächste Mal dieselbe Umgebung neu erzeugen, müssen -Sie vielleicht Pakete neu erstellen oder neu herunterladen. @xref{Aufruf von guix gc} hat mehr Informationen über Müllsammlerwurzeln. +Sie vielleicht Pakete neu erstellen oder neu herunterladen. @ref{Aufruf von guix gc} hat mehr Informationen über Müllsammlerwurzeln. @item --expression=@var{Ausdruck} @itemx -e @var{Ausdruck} @@ -4671,7 +4827,7 @@ Wenn man dies ausführt: guix environment --ad-hoc -e '(@@ (gnu) %base-packages)' @end example -starts a shell with all the base system packages available. +bekommt man eine Shell, in der alle Basis-Pakete verfügbar sind. Die obigen Befehle benutzen nur die Standard-Ausgabe des jeweiligen Pakets. Um andere Ausgaben auszuwählen, können zweielementige Tupel @@ -4687,7 +4843,7 @@ Eine Umgebung erstellen für das Paket oder die Liste von Paketen, zu der der Code in der @var{Datei} ausgewertet wird. Zum Beispiel könnte die @var{Datei} eine Definition wie diese enthalten -(@pxref{Pakete definieren}): +(siehe @ref{Pakete definieren}): @example @verbatiminclude environment-gdb.scm @@ -4699,8 +4855,8 @@ Eine Umgebung für die Pakete erzeugen, die im Manifest-Objekt enthalten sind, das vom Scheme-Code in der @var{Datei} geliefert wird. Dies verhält sich ähnlich wie die gleichnamige Option des Befehls -@command{guix package} (@pxref{profile-manifest, @option{--manifest}}) und -benutzt auch dieselben Manifestdateien. +@command{guix package} (siehe @ref{profile-manifest, @option{--manifest}}) +und benutzt auch dieselben Manifestdateien. @item --ad-hoc Alle angegebenen Pakete in der resultierenden Umgebung einschließen, als @@ -4720,8 +4876,8 @@ Guile-SDL zur Verfügung stehen. Beachten Sie, dass in diesem Beispiel implizit die vorgegebene Ausgabe von @code{guile} und @code{guile-sdl} verwendet wird, es aber auch möglich ist, -eine bestimmte Ausgabe auszuwählen — z.B. wird mit @code{glib:bin} die -Ausgabe @code{bin} von @code{glib} gewählt (@pxref{Pakete mit mehreren Ausgaben.}). +eine bestimmte Ausgabe auszuwählen — z.B.@: wird mit @code{glib:bin} die +Ausgabe @code{bin} von @code{glib} gewählt (siehe @ref{Pakete mit mehreren Ausgaben.}). Diese Befehlszeilenoption kann mit dem standardmäßigen Verhalten von @command{guix environment} verbunden werden. Pakete, die vor @code{--ad-hoc} @@ -4731,35 +4887,36 @@ entspricht. Pakete, die danach aufgeführt werden, werden selbst zur Umgebung hinzugefügt. @item --pure -Unset existing environment variables when building the new environment, -except those specified with @option{--preserve} (see below.) This has the -effect of creating an environment in which search paths only contain package -inputs. +Bestehende Umgebungsvariable deaktivieren, wenn die neue Umgebung erzeugt +wird, mit Ausnahme der mit @option{--preserve} angegebenen Variablen (siehe +unten). Dies bewirkt, dass eine Umgebung erzeugt wird, in der die Suchpfade +nur Paketeingaben nennen und sonst nichts. -@item --preserve=@var{regexp} -@itemx -E @var{regexp} -When used alongside @option{--pure}, preserve the environment variables -matching @var{regexp}---in other words, put them on a ``white list'' of -environment variables that must be preserved. This option can be repeated -several times. +@item --preserve=@var{Regexp} +@itemx -E @var{Regexp} +Wenn das hier zusammen mit @option{--pure} angegeben wird, bleiben die zum +regulären Ausdruck @var{Regexp} passenden Umgebungsvariablen erhalten — mit +anderen Worten werden sie auf eine »weiße Liste« von Umgebungsvariablen +gesetzt, die erhalten bleiben müssen. Diese Befehlszeilenoption kann +mehrmals wiederholt werden. @example guix environment --pure --preserve=^SLURM --ad-hoc openmpi @dots{} \ -- mpirun @dots{} @end example -This example runs @command{mpirun} in a context where the only environment -variables defined are @code{PATH}, environment variables whose name starts -with @code{SLURM}, as well as the usual ``precious'' variables (@code{HOME}, -@code{USER}, etc.) +In diesem Beispiel wird @command{mpirun} in einem Kontext ausgeführt, in dem +die einzig definierten Umgebungsvariablen @code{PATH} und solche sind, deren +Name mit @code{SLURM} beginnt, sowie die üblichen besonders »kostbaren« +Variablen (@code{HOME}, @code{USER}, etc.). @item --search-paths Die Umgebungsvariablendefinitionen anzeigen, aus denen die Umgebung besteht. @item --system=@var{System} @itemx -s @var{System} -Versuchen, für das angegebene @var{System} zu erstellen — -z.B. @code{i686-linux}. +Versuchen, für das angegebene @var{System} zu erstellen — z.B.@: +@code{i686-linux}. @item --container @itemx -C @@ -4770,9 +4927,12 @@ Containers wird in den Container zugeordnet. Zusätzlich wird, wenn es mit der Befehlszeilenoption @code{--user} nicht anders spezifiziert wurde, ein stellvertretendes persönliches Verzeichnis erzeugt, dessen Inhalt der des wirklichen persönlichen Verzeichnisses ist, sowie eine passend konfigurierte -Datei @file{/etc/passwd}. Der erzeugte Prozess läuft außerhalb des -Containers als der momentane Nutzer, aber im Kontext des Containers hat er -Administratorrechte. +Datei @file{/etc/passwd}. + +Der erzeugte Prozess läuft außerhalb des Containers als der momentane +Nutzer. Innerhalb des Containers hat er dieselbe UID und GID wie der +momentane Nutzer, außer die Befehlszeilenoption @option{--user} wird +übergeben (siehe unten). @item --network @itemx -N @@ -4805,8 +4965,9 @@ Bei isolierten Umgebungen (»Containern«) wird der Benutzername Eintrag in @file{/etc/passwd} im Container wird also den Namen @var{Benutzer} enthalten und das persönliche Verzeichnis wird den Namen @file{/home/BENUTZER} tragen; keine GECOS-Daten über den Nutzer werden in -die Umgebung übernommen. @var{Benutzer} muss auf dem System nicht -existieren. +die Umgebung übernommen. Des Weiteren sind UID und GID innerhalb der +isolierten Umgebung auf 1000 gesetzt. @var{Benutzer} muss auf dem System +nicht existieren. Zusätzlich werden alle geteilten oder exponierten Pfade (siehe jeweils @code{--share} und @code{--expose}), deren Ziel innerhalb des persönlichen @@ -4857,9 +5018,10 @@ guix environment --container --share=$HOME=/austausch --ad-hoc guile -- guile @end example @end table -@command{guix environment} also supports all of the common build options -that @command{guix build} supports (@pxref{Gemeinsame Erstellungsoptionen}) as well as -package transformation options (@pxref{Paketumwandlungsoptionen}). +@command{guix environment} unterstützt auch alle gemeinsamen +Erstellungsoptionen, die von @command{guix build} unterstützt werden (siehe +@ref{Gemeinsame Erstellungsoptionen}), und die Paketumwandlungsoptionen (siehe +@ref{Paketumwandlungsoptionen}). @node Aufruf von guix pack @section @command{guix pack} aufrufen @@ -4872,7 +5034,7 @@ muss es anders gehen. Hier kommt @command{guix pack} ins Spiel. @quotation Anmerkung Wenn Sie aber nach einer Möglichkeit suchen, Binärdateien unter Maschinen auszutauschen, auf denen Guix bereits läuft, sollten Sie einen Blick auf die -Abschnitte @pxref{Aufruf von guix copy}, @ref{Aufruf von guix publish} und +Abschnitte @ref{Aufruf von guix copy}, @ref{Aufruf von guix publish} und @ref{Aufruf von guix archive} werfen. @end quotation @@ -4904,7 +5066,7 @@ Als Ergebnis erhalten Sie einen Tarball mit einem Verzeichnis resultierende Tarball enthält auch ein @dfn{Profil} mit den drei angegebenen Paketen; es ist dieselbe Art von Profil, die auch @command{guix package -i} erzeugen würde. Mit diesem Mechanismus wird auch der binäre Tarball zur -Installation von Guix erzeugt (@pxref{Aus Binärdatei installieren}). +Installation von Guix erzeugt (siehe @ref{Aus Binärdatei installieren}). Benutzer des Bündels müssten dann aber zum Beispiel @file{/gnu/store/@dots{}-profile/bin/guile} eintippen, um Guile auszuführen, @@ -4979,7 +5141,7 @@ alle angegebenen Binärdateien und symbolischen Verknüpfungen enthält. @item docker Generiert einen Tarball gemäß der @uref{https://github.com/docker/docker/blob/master/image/spec/v1.2.md, -Docker Image Specification}, d.h. der Spezifikation für Docker-Abbilder. +Docker Image Specification}, d.h.@: der Spezifikation für Docker-Abbilder. @item squashfs Generiert ein SquashFS-Abbild, das alle angegebenen Binärdateien und @@ -4987,20 +5149,33 @@ symbolischen Verknüpfungen enthält, sowie leere Einhängepunkte für virtuelle Dateisysteme wie procfs. @end table +@cindex pfad-agnostische Binärdateien @item --relocatable @itemx -R Erzeugt @dfn{pfad-agnostische Binärdateien} — also »portable« Binärdateien, die an einer beliebigen Stelle in der Dateisystemhierarchie platziert und -von dort ausgeführt werden können. Zum Beispiel können Sie ein Bash -enthalltendes Bündel erzeugen mit: +von dort ausgeführt werden können. + +Wenn diese Befehlszeilenoption einmal übergeben wird, funktionieren die +erzeugten Binärdateien nur dann, wenn @dfn{Benutzernamensräume} des +Linux-Kernels unterstützt werden. Wenn sie @emph{zweimal}@footnote{Es gibt +einen Trick, wie Sie sich das merken können: @code{-RR}, womit +PRoot-Unterstützung hinzugefügt wird, kann man sich als Abkürzung für +»Rundum Relocatable« oder englisch »Really Relocatable« vorstellen. Ist das +nicht prima?} übergeben wird, laufen die Binärdateien notfalls mit PRoot, +wenn keine Benutzernamensräume zur Verfügung stehen, funktionieren also +ziemlich überall — siehe unten für die Auswirkungen. + +Zum Beispiel können Sie ein Bash enthalltendes Bündel erzeugen mit: @example -guix pack -R -S /meine-bin=bin bash +guix pack -RR -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: +…@: Sie können dieses dann auf eine Maschine ohne Guix kopieren und als +normaler Nutzer aus Ihrem Persönlichen Verzeichnis (auch »Home«-Verzeichnis +genannt) dann ausführen mit: @example tar xf pack.tar.gz @@ -5014,22 +5189,35 @@ alle Abhängigkeiten von @code{bash}, obwohl auf der Maschine überhaupt kein Verzeichnis @file{/gnu/store} existiert! Dies ist vermutlich die einfachste Art, mit Guix erstellte Software für eine Maschine ohne Guix auszuliefern. -Die Sache hat nur einen Haken: Diese Technik funktioniert nur mit -@dfn{Benutzernamensräumen} (englisch @dfn{User namespaces}), einer -Funktionalität des Linux-Kernels, mit der Benutzer ohne besondere -Berechtigungen Dateisysteme einbinden (englisch »mount«) oder die Wurzel des -Dateisystems wechseln können (»change root«, kurz »chroot«). Alte Versionen -von Linux haben es noch nicht unterstützt und manche Distributionen von -GNU/Linux schalten diese Funktionalität ab; auf diesen Systemen @emph{werden -Programme aus dem Bündel nicht funktionieren}, solange sie nicht in das -echte Wurzeldateisystem entpackt werden. +@quotation Anmerkung +Wenn die Voreinstellung verwendet wird, funktionieren pfad-agnostische +Binärdateien nur mit @dfn{Benutzernamensräumen} (englisch @dfn{User +namespaces}), einer Funktionalität des Linux-Kernels, mit der Benutzer ohne +besondere Berechtigungen Dateisysteme einbinden (englisch »mount«) oder die +Wurzel des Dateisystems wechseln können (»change root«, kurz »chroot«). Alte +Versionen von Linux haben diese Funktionalität noch nicht unterstützt und +manche Distributionen von GNU/Linux schalten sie ab. + +Um pfad-agnostische Binärdateien zu erzeugen, die auch ohne +Benutzernamensräume funktionieren, können Sie die Befehlszeilenoption +@option{--relocatable} oder @option{-R} @emph{zweimal} angeben. In diesem +Fall werden die Binärdateien zuerst überprüfen, ob Benutzernamensräume +unterstützt werden, und sonst notfalls PRoot benutzen, um das Programm +auszuführen, wenn Benutzernamensräume nicht unterstützt werden. + +Das Programm @uref{https://proot-me.github.io/, PRoot} bietet auch +Unterstützung für Dateisystemvirtualisierung, indem der Systemaufruf +@code{ptrace} auf das laufende Programm angewendet wird. Dieser Ansatz +funktioniert auch ohne besondere Kernel-Unterstützung, aber das Programm +braucht mehr Zeit, um selbst Systemaufrufe durchzuführen. +@end quotation @item --expression=@var{Ausdruck} @itemx -e @var{Ausdruck} Als Paket benutzen, wozu der @var{Ausdruck} ausgewertet wird. Der Zweck hiervon ist derselbe wie bei der gleichnamigen Befehlszeilenoption -in @command{guix build} (@pxref{Zusätzliche Erstellungsoptionen, +in @command{guix build} (siehe @ref{Zusätzliche Erstellungsoptionen, @code{--expression} in @command{guix build}}). @item --manifest=@var{Datei} @@ -5038,25 +5226,25 @@ Die Pakete benutzen, die im Manifest-Objekt aufgeführt sind, das vom Scheme-Code in der angegebenen @var{Datei} geliefert wird. Dies hat einen ähnlichen Zweck wie die gleichnamige Befehlszeilenoption in -@command{guix package} (@pxref{profile-manifest, @option{--manifest}}) und -benutzt dieselben Regeln für Manifest-Dateien. Damit können Sie eine Reihe -von Paketen einmal definieren und dann sowohl zum Erzeugen von Profilesn als -auch zum Erzeugen von Archiven benutzen, letztere für Maschinen, auf denen -Guix nicht installiert ist. Beachten Sie, dass Sie @emph{entweder} eine -Manifest-Datei @emph{oder} eine Liste von Paketen angeben können, aber nicht -beides. +@command{guix package} (siehe @ref{profile-manifest, @option{--manifest}}) +und benutzt dieselben Regeln für Manifest-Dateien. Damit können Sie eine +Reihe von Paketen einmal definieren und dann sowohl zum Erzeugen von +Profilesn als auch zum Erzeugen von Archiven benutzen, letztere für +Maschinen, auf denen Guix nicht installiert ist. Beachten Sie, dass Sie +@emph{entweder} eine Manifest-Datei @emph{oder} eine Liste von Paketen +angeben können, aber nicht beides. @item --system=@var{System} @itemx -s @var{System} Versuchen, für die angegebene Art von @var{System} geeignete Binärdateien zu -erstellen — z.B. @code{i686-linux} — statt für die Art von System, das die +erstellen — z.B.@: @code{i686-linux} — statt für die Art von System, das die Erstellung durchführt. @item --target=@var{Tripel} @cindex Cross-Kompilieren Lässt für das angegebene @var{Tripel} cross-erstellen, dieses muss ein -gültiges GNU-Tripel wie z.B. @code{"mips64el-linux-gnu"} sein -(@pxref{Specifying target triplets, GNU configuration triplets,, autoconf, +gültiges GNU-Tripel wie z.B.@: @code{"mips64el-linux-gnu"} sein (siehe +@ref{Specifying target triplets, GNU configuration triplets,, autoconf, Autoconf}). @item --compression=@var{Werkzeug} @@ -5080,21 +5268,23 @@ Verknüpfung @file{/opt/gnu/bin} auf das Unterverzeichnis @file{bin} im Profil erzeugt. @item --save-provenance -Save provenance information for the packages passed on the command line. -Provenance information includes the URL and commit of the channels in use -(@pxref{Kanäle}). - -Provenance information is saved in the -@file{/gnu/store/@dots{}-profile/manifest} file in the pack, along with the -usual package metadata---the name and version of each package, their -propagated inputs, and so on. It is useful information to the recipient of -the pack, who then knows how the pack was (supposedly) obtained. - -This option is not enabled by default because, like timestamps, provenance -information contributes nothing to the build process. In other words, there -is an infinity of channel URLs and commit IDs that can lead to the same -pack. Recording such ``silent'' metadata in the output thus potentially -breaks the source-to-binary bitwise reproducibility property. +Provenienzinformationen für die auf der Befehlszeile übergebenen Pakete +speichern. Zu den Provenienzinformationen gehören die URL und der Commit +jedes benutzten Kanals (siehe @ref{Kanäle}). + +Provenienzinformationen werden in der Datei +@file{/gnu/store/@dots{}-profile/manifest} im Bündel zusammen mit den +üblichen Paketmetadaten abgespeichert — also Name und Version jedes Pakets, +welche Eingaben dabei propagiert werden und so weiter. Die Informationen +nützen den Empfängern des Bündels, weil sie dann wissen, woraus das Bündel +(angeblich) besteht. + +Der Vorgabe nach wird diese Befehlszeilenoption @emph{nicht} verwendet, weil +Provenienzinformationen genau wie Zeitstempel nichts zum Erstellungsprozess +beitragen. Mit anderen Worten gibt es unendlich viele Kanal-URLs und +Commit-IDs, aus denen dasselbe Bündel stammen könnte. Wenn solche »stillen« +Metadaten Teil des Ausgabe sind, dann wird also die bitweise +Reproduzierbarkeit von Quellcode zu Binärdateien eingeschränkt. @item --localstatedir @itemx --profile-name=@var{Name} @@ -5104,15 +5294,15 @@ aufnehmen, speziell auch das Profil @var{Name} ist @code{guix-profile}, was @file{~root/.guix-profile} entspricht. -@file{/var/guix} enthält die Store-Datenbank (@pxref{Der Store}) sowie die -Müllsammlerwurzeln (@pxref{Aufruf von guix gc}). Es ins Bündel aufzunehmen, -bedeutet, dass der enthaltene Store »vollständig« ist und von Guix verwaltet -werden kann, andernfalls wäre der Store im Bündel »tot« und nach dem -Auspacken des Bündels könnte Guix keine Objekte mehr dort hinzufügen oder -entfernen. +@file{/var/guix} enthält die Store-Datenbank (siehe @ref{Der Store}) sowie +die Müllsammlerwurzeln (siehe @ref{Aufruf von guix gc}). Es ins Bündel +aufzunehmen, bedeutet, dass der enthaltene Store »vollständig« ist und von +Guix verwaltet werden kann, andernfalls wäre der Store im Bündel »tot« und +nach dem Auspacken des Bündels könnte Guix keine Objekte mehr dort +hinzufügen oder entfernen. Ein Anwendungsfall hierfür ist der eigenständige, alle Komponenten -umfassende binäre Tarball von Guix (@pxref{Aus Binärdatei installieren}). +umfassende binäre Tarball von Guix (siehe @ref{Aus Binärdatei installieren}). @item --bootstrap Mit den Bootstrap-Binärdateien das Bündel erstellen. Diese Option ist nur @@ -5120,8 +5310,8 @@ für Guix-Entwickler nützlich. @end table Außerdem unterstützt @command{guix pack} alle gemeinsamen -Erstellungsoptionen (@pxref{Gemeinsame Erstellungsoptionen}) und alle -Paketumwandlungsoptionen (@pxref{Paketumwandlungsoptionen}). +Erstellungsoptionen (siehe @ref{Gemeinsame Erstellungsoptionen}) und alle +Paketumwandlungsoptionen (siehe @ref{Paketumwandlungsoptionen}). @c ********************************************************************* @@ -5172,16 +5362,17 @@ Dieses Kapitel beschreibt der Reihe nach all diese Programmierschnittstellen @node Paketmodule @section Paketmodule -From a programming viewpoint, the package definitions of the GNU -distribution are provided by Guile modules in the @code{(gnu packages -@dots{})} name space@footnote{Note that packages under the @code{(gnu -packages @dots{})} module name space are not necessarily ``GNU packages''. -This module naming scheme follows the usual Guile module naming convention: -@code{gnu} means that these modules are distributed as part of the GNU -system, and @code{packages} identifies modules that define packages.} -(@pxref{Module, Guile modules,, guile, GNU Guile Reference Manual}). For -instance, the @code{(gnu packages emacs)} module exports a variable named -@code{emacs}, which is bound to a @code{<package>} object (@pxref{Pakete definieren}). +Aus Programmierersicht werden die Paketdefinitionen der GNU-Distribution als +Guile-Module in Namensräumen wie @code{(gnu packages @dots{})} sichtbar +gemacht@footnote{Beachten Sie, dass Pakete unter dem Modulnamensraum +@code{(gnu packages @dots{})} nicht notwendigerweise auch »GNU-Pakete« +sind. Dieses Schema für die Benennung von Modulen folgt lediglich den +üblichen Guile-Konventionen: @code{gnu} bedeutet, dass die Module als Teil +des GNU-Systems ausgeliefert werden, und @code{packages} gruppiert Module +mit Paketdefinitionen.} (siehe @ref{Module, Guile modules,, guile, GNU +Guile Reference Manual}). Zum Beispiel exportiert das Modul @code{(gnu +packages emacs)} eine Variable namens @code{emacs}, die an ein +@code{<package>}-Objekt gebunden ist (@pxref{Pakete definieren}). The @code{(gnu packages @dots{})} module name space is automatically scanned for packages by the command-line tools. For instance, when running @@ -5269,28 +5460,28 @@ GNU Hello so aus: Auch ohne ein Experte in Scheme zu sein, könnten Leser erraten haben, was die verschiedenen Felder dabei bedeuten. Dieser Ausdruck bindet die Variable @code{hello} an ein @code{<package>}-Objekt, was an sich nur ein Verbund -(Record) ist (@pxref{SRFI-9, Scheme records,, guile, GNU Guile Reference +(Record) ist (siehe @ref{SRFI-9, Scheme records,, guile, GNU Guile Reference Manual}). Die Felder dieses Paket-Objekts lassen sich mit den Prozeduren aus dem Modul @code{(guix packages)} auslesen, zum Beispiel liefert @code{(package-name hello)} — Überraschung! — @code{"hello"}. Mit etwas Glück können Sie die Definition vielleicht teilweise oder sogar ganz aus einer anderen Paketsammlung importieren, indem Sie den Befehl -@code{guix import} verwenden (@pxref{Aufruf von guix import}). +@code{guix import} verwenden (siehe @ref{Aufruf von guix import}). In obigem Beispiel wurde @var{hello} in einem eigenen Modul ganz für sich alleine definiert, und zwar @code{(gnu packages hello)}. Technisch gesehen muss es nicht unbedingt in einem solchen Modul definiert werden, aber es ist bequem, denn alle Module unter @code{(gnu packages @dots{})} werden -automatisch von den Befehlszeilenwerkzeugen gefunden (@pxref{Paketmodule}). +automatisch von den Befehlszeilenwerkzeugen gefunden (siehe @ref{Paketmodule}). Ein paar Dinge sind noch erwähnenswert in der obigen Paketdefinition: @itemize @item Das @code{source}-Feld für die Quelle des Pakets ist ein -@code{<origin>}-Objekt, was den Paketursprung angibt (siehe @pxref{»origin«-Referenz}, für eine vollständige Referenz). Hier wird dafür die Methode -@code{url-fetch} aus dem Modul @code{(guix download)} benutzt, d.h. die +@code{<origin>}-Objekt, was den Paketursprung angibt (siehe @ref{»origin«-Referenz} für eine vollständige Referenz). Hier wird dafür die Methode +@code{url-fetch} aus dem Modul @code{(guix download)} benutzt, d.h.@: die Quelle ist eine Datei, die über FTP oder HTTP heruntergeladen werden soll. Das Präfix @code{mirror://gnu} lässt @code{url-fetch} einen der @@ -5300,8 +5491,8 @@ Das Feld @code{sha256} legt den erwarteten SHA256-Hashwert der herunterzuladenden Datei fest. Ihn anzugeben ist Pflicht und er ermöglicht es Guix, die Integrität der Datei zu überprüfen. Die Form @code{(base32 @dots{})} geht der base32-Darstellung des Hash-Wertes voraus. Sie finden die -base32-Darstellung mit Hilfe der Befehle @code{guix download} -(@pxref{Aufruf von guix download}) und @code{guix hash} (@pxref{Aufruf von guix hash}). +base32-Darstellung mit Hilfe der Befehle @code{guix download} (siehe +@ref{Aufruf von guix download}) und @code{guix hash} (siehe @ref{Aufruf von guix hash}). @cindex Patches Wenn nötig kann in der @code{origin}-Form auch ein @code{patches}-Feld @@ -5312,14 +5503,14 @@ Quellcode zu modifizieren ist. @item @cindex GNU-Erstellungssystem Das Feld @code{build-system} legt fest, mit welcher Prozedur das Paket -erstellt werden soll (@pxref{Erstellungssysteme}). In diesem Beispiel steht +erstellt werden soll (siehe @ref{Erstellungssysteme}). In diesem Beispiel steht @var{gnu-build-system} für das wohlbekannte GNU-Erstellungssystem, wo Pakete mit der üblichen Befehlsfolge @code{./configure && make && make check && make install} konfiguriert, erstellt und installiert werden. @item Das Feld @code{arguments} gibt an, welche Optionen dem Erstellungssystem -mitgegeben werden sollen (@pxref{Erstellungssysteme}). In diesem Fall +mitgegeben werden sollen (siehe @ref{Erstellungssysteme}). In diesem Fall interpretiert @var{gnu-build-system} diese als Auftrag, @file{configure} mit der Befehlszeilenoption @code{--enable-silent-rules} auszuführen. @@ -5330,24 +5521,24 @@ der Befehlszeilenoption @code{--enable-silent-rules} auszuführen. Was hat es mit diesen einfachen Anführungszeichen (@code{'}) auf sich? Sie gehören zur Syntax von Scheme und führen eine wörtlich zu interpretierende Datenlisten ein; dies nennt sich Maskierung oder Quotierung. @code{'} ist -synonym mit @code{quote}. @xref{Expression Syntax, quoting,, guile, GNU -Guile Reference Manual}, enthält weitere Details. Hierbei ist also der Wert -des @code{arguments}-Feldes eine Liste von Argumenten, die an das -Erstellungssystem weitergereicht werden, wie bei @code{apply} (@pxref{Fly -Evaluation, @code{apply},, guile, GNU Guile Reference Manual}). +synonym mit @code{quote}. @ref{Expression Syntax, quoting,, guile, GNU Guile +Reference Manual} enthält weitere Details. Hierbei ist also der Wert des +@code{arguments}-Feldes eine Liste von Argumenten, die an das +Erstellungssystem weitergereicht werden, wie bei @code{apply} (siehe +@ref{Fly Evaluation, @code{apply},, guile, GNU Guile Reference Manual}). Ein Doppelkreuz gefolgt von einem Doppelpunkt (@code{#:}) definiert ein -Scheme-@dfn{Schlüsselwort} (@pxref{Keywords,,, guile, GNU Guile Reference -Manual}) und @code{#:configure-flags} ist ein Schlüsselwort, um eine -Befehlszeilenoption an das Erstellungssystem mitzugeben (@pxref{Coding With -Keywords,,, guile, GNU Guile Reference Manual}). +Scheme-@dfn{Schlüsselwort} (siehe @ref{Keywords,,, guile, GNU Guile +Reference Manual}) und @code{#:configure-flags} ist ein Schlüsselwort, um +eine Befehlszeilenoption an das Erstellungssystem mitzugeben (siehe +@ref{Coding With Keywords,,, guile, GNU Guile Reference Manual}). @item -Das Feld @code{inputs} legt Eingaben an den Erstellungsprozess fest — -d.h. Abhängigkeiten des Pakets zur Erstellungs- oder Laufzeit. Hier -definieren wir eine Eingabe namens @code{"gawk"}, deren Wert wir auf den -Wert der @var{gawk}-Variablen festlegen; @var{gawk} ist auch selbst wiederum -an ein @code{<package>}-Objekt als Variablenwert gebunden. +Das Feld @code{inputs} legt Eingaben an den Erstellungsprozess fest — d.h.@: +Abhängigkeiten des Pakets zur Erstellungs- oder Laufzeit. Hier definieren +wir eine Eingabe namens @code{"gawk"}, deren Wert wir auf den Wert der +@var{gawk}-Variablen festlegen; @var{gawk} ist auch selbst wiederum an ein +@code{<package>}-Objekt als Variablenwert gebunden. @cindex Backquote (Quasimaskierung) @findex ` @@ -5362,12 +5553,13 @@ Synonym @code{quasiquote} schreiben) können wir eine wörtlich als Daten interpretierte Liste im @code{inputs}-Feld einführen, aber bei dieser »Quasimaskierung« kann @code{,} (ein Komma, oder dessen Synonym @code{unquote}) benutzt werden, um den ausgewerteten Wert eines Ausdrucks in -diese Liste einzufügen (@pxref{Expression Syntax, unquote,, guile, GNU Guile -Reference Manual}). +diese Liste einzufügen (siehe @ref{Expression Syntax, unquote,, guile, GNU +Guile Reference Manual}). Beachten Sie, dass GCC, Coreutils, Bash und andere essenzielle Werkzeuge hier nicht als Eingaben aufgeführt werden müssen. Stattdessen sorgt schon -@var{gnu-build-system} dafür, dass diese vorhanden sein müssen (@pxref{Erstellungssysteme}). +@var{gnu-build-system} dafür, dass diese vorhanden sein müssen (siehe +@ref{Erstellungssysteme}). Sämtliche anderen Abhängigkeiten müssen aber im @code{inputs}-Feld aufgezählt werden. Jede hier nicht angegebene Abhängigkeit wird während des @@ -5375,41 +5567,43 @@ Erstellungsprozesses schlicht nicht verfügbar sein, woraus ein Erstellungsfehler resultieren kann. @end itemize -Siehe @xref{»package«-Referenz} für eine umfassende Beschreibung aller +Siehe @ref{»package«-Referenz} für eine umfassende Beschreibung aller erlaubten Felder. Sobald eine Paketdefinition eingesetzt wurde, können Sie das Paket mit Hilfe des Befehlszeilenwerkzeugs @code{guix build} dann auch tatsächlich erstellen -(@pxref{Aufruf von guix build}) und dabei jegliche Erstellungsfehler, auf die -Sie stoßen, beseitigen (@pxref{Fehlschläge beim Erstellen untersuchen}). Sie können den -Befehl @command{guix edit} benutzen, um leicht zur Paketdefinition -zurückzuspringen (@pxref{Aufruf von guix edit}). Unter @xref{Paketrichtlinien} finden Sie mehr Informationen darüber, wie Sie Paketdefinitionen -testen, und unter @ref{Aufruf von guix lint} finden Sie Informationen, wie Sie -prüfen, ob eine Definition alle Stilkonventionen einhält. +(siehe @ref{Aufruf von guix build}) und dabei jegliche Erstellungsfehler, auf +die Sie stoßen, beseitigen (siehe @ref{Fehlschläge beim Erstellen untersuchen}). Sie +können den Befehl @command{guix edit} benutzen, um leicht zur +Paketdefinition zurückzuspringen (siehe @ref{Aufruf von guix edit}). Unter +@ref{Paketrichtlinien} finden Sie mehr Informationen darüber, wie Sie +Paketdefinitionen testen, und unter @ref{Aufruf von guix lint} finden Sie +Informationen, wie Sie prüfen, ob eine Definition alle Stilkonventionen +einhält. @vindex GUIX_PACKAGE_PATH -Zuletzt finden Sie unter @pxref{Kanäle} Informationen, wie Sie die +Zuletzt finden Sie unter @ref{Kanäle} Informationen, wie Sie die Distribution um Ihre eigenen Pakete in einem »Kanal« erweitern. Zu all dem sei auch erwähnt, dass Sie das Aktualisieren einer Paketdefinition auf eine vom Anbieter neu veröffentlichte Version mit dem -Befehl @command{guix refresh} teilweise automatisieren können -(@pxref{Aufruf von guix refresh}). +Befehl @command{guix refresh} teilweise automatisieren können (siehe +@ref{Aufruf von guix refresh}). Hinter den Kulissen wird die einem @code{<package>}-Objekt entsprechende Ableitung zuerst durch @code{package-derivation} berechnet. Diese Ableitung wird in der @code{.drv}-Datei unter @file{/gnu/store} gespeichert. Die von ihr vorgeschriebenen Erstellungsaktionen können dann durch die Prozedur -@code{build-derivations} umgesetzt werden (@pxref{Der Store}). +@code{build-derivations} umgesetzt werden (siehe @ref{Der Store}). @deffn {Scheme-Prozedur} package-derivation @var{Store} @var{Paket} [@var{System}] Das @code{<derivation>}-Objekt zum @var{Paket} für das angegebene -@var{System} liefern (@pxref{Ableitungen}). +@var{System} liefern (siehe @ref{Ableitungen}). Als @var{Paket} muss ein gültiges @code{<package>}-Objekt angegeben werden und das @var{System} muss eine Zeichenkette sein, die das Zielsystem angibt -— z.B. @code{"x86_64-linux"} für ein auf x86_64 laufendes Linux-basiertes +— z.B.@: @code{"x86_64-linux"} für ein auf x86_64 laufendes, Linux-basiertes GNU-System. @var{Store} muss eine Verbindung zum Daemon sein, der die -Operationen auf dem Store durchführt (@pxref{Der Store}). +Operationen auf dem Store durchführt (siehe @ref{Der Store}). @end deffn @noindent @@ -5423,8 +5617,8 @@ ein anderes System cross-erstellt. @var{System} aus für das @var{Ziel}-System. Als @var{Ziel} muss ein gültiges GNU-Tripel angegeben werden, was die -Ziel-Hardware und das zugehörige Betriebssystem beschreibt, wie -z.B. @code{"mips64el-linux-gnu"} (@pxref{Configuration Names, GNU +Ziel-Hardware und das zugehörige Betriebssystem beschreibt, wie z.B.@: +@code{"mips64el-linux-gnu"} (siehe @ref{Configuration Names, GNU configuration triplets,, configure, GNU Configure and Build System}). @end deffn @@ -5466,8 +5660,31 @@ Betrachten Sie dieses Beispiel: Hier definieren wir zuerst eine Umschreibeprozedur, die @var{openssl} durch @var{libressl} ersetzt. Dann definieren wir damit eine @dfn{Variante} des @var{git}-Pakets, die @var{libressl} statt @var{openssl} benutzt. Das ist -genau, was auch die Befehlszeilenoption @option{--with-input} tut -(@pxref{Paketumwandlungsoptionen, @option{--with-input}}). +genau, was auch die Befehlszeilenoption @option{--with-input} tut (siehe +@ref{Paketumwandlungsoptionen, @option{--with-input}}). + +The following variant of @code{package-input-rewriting} can match packages +to be replaced by name rather than by identity. + +@deffn {Scheme-Prozedur} package-input-rewriting/spec @var{Ersetzungen} +Return a procedure that, given a package, applies the given +@var{replacements} to all the package graph (excluding implicit inputs). +@var{replacements} is a list of spec/procedures pair; each spec is a package +specification such as @code{"gcc"} or @code{"guile@@2"}, and each procedure +takes a matching package and returns a replacement for that package. +@end deffn + +The example above could be rewritten this way: + +@example +(define libressl-statt-openssl + ;; Rekursiv alle Pakete namens "openssl" durch LibreSSL ersetzen. + (package-input-rewriting/spec `(("openssl" . ,(const libressl))))) +@end example + +The key difference here is that, this time, packages are matched by spec and +not by identity. In other words, any package in the graph that is called +@code{openssl} will be replaced. Eine allgemeiner anwendbare Prozedur, um den Abhängigkeitsgraphen eines Pakets umzuschreiben, ist @code{package-mapping}. Sie unterstützt beliebige @@ -5491,7 +5708,7 @@ findet kein rekursiver Abstieg in dessen Abhängigkeiten statt. @subsection @code{package}-Referenz Dieser Abschnitt fasst alle in @code{package}-Deklarationen zur Verfügung -stehenden Optionen zusammen (@pxref{Pakete definieren}). +stehenden Optionen zusammen (siehe @ref{Pakete definieren}). @deftp {Datentyp} package Dieser Datentyp steht für ein Paketrezept. @@ -5506,13 +5723,14 @@ Die Version des Pakets als Zeichenkette. @item @code{source} Ein Objekt, das beschreibt, wie der Quellcode des Pakets bezogen werden soll. Meistens ist es ein @code{origin}-Objekt, welches für eine aus dem -Internet heruntergeladene Datei steht (@pxref{»origin«-Referenz}). Es kann -aber auch ein beliebiges anderes »dateiähnliches« Objekt sein, wie z.B. ein -@code{local-file}, was eine Datei im lokalen Dateisystem bezeichnet -(@pxref{G-Ausdrücke, @code{local-file}}). +Internet heruntergeladene Datei steht (siehe @ref{»origin«-Referenz}). Es +kann aber auch ein beliebiges anderes »dateiähnliches« Objekt sein, wie +z.B.@: ein @code{local-file}, was eine Datei im lokalen Dateisystem +bezeichnet (siehe @ref{G-Ausdrücke, @code{local-file}}). @item @code{build-system} -Das Erstellungssystem, mit dem das Paket erstellt werden soll (@pxref{Erstellungssysteme}). +Das Erstellungssystem, mit dem das Paket erstellt werden soll (siehe +@ref{Erstellungssysteme}). @item @code{arguments} (Vorgabe: @code{'()}) Die Argumente, die an das Erstellungssystem übergeben werden sollen. Dies @@ -5528,7 +5746,7 @@ Bezeichnung für die Eingabe (als Zeichenkette) als erstes Element, dann ein »package«-, »origin«- oder »derivation«-Objekt (Paket, Ursprung oder Ableitung) als zweites Element und optional die Benennung der davon zu benutzenden Ausgabe umfasst; letztere hat als Vorgabewert @code{"out"} -(siehe @pxref{Pakete mit mehreren Ausgaben.} für mehr Informationen zu +(siehe @ref{Pakete mit mehreren Ausgaben.} für mehr Informationen zu Paketausgaben). Im folgenden Beispiel etwa werden drei Eingaben festgelegt: @example @@ -5549,13 +5767,13 @@ der erstellenden Maschine (@emph{build}) erstellt. der Erstellung gebraucht werden, aber nicht zur Laufzeit des Programms gebraucht werden. Beispiele sind Autoconf, Automake, pkg-config, Gettext oder Bison. @command{guix lint} kann melden, ob wahrscheinlich Fehler in der -Auflistung sind (@pxref{Aufruf von guix lint}). +Auflistung sind (siehe @ref{Aufruf von guix lint}). @anchor{package-propagated-inputs} Schließlich ist @code{propagated-inputs} ähnlich wie @code{inputs}, aber die angegebenen Pakete werden automatisch mit ins Profil installiert, wenn das Paket installiert wird, zu dem sie gehören (siehe -@pxref{package-cmd-propagated-inputs, @command{guix package}}, für +@ref{package-cmd-propagated-inputs, @command{guix package}} für Informationen darüber, wie @command{guix package} mit propagierten Eingaben umgeht). @@ -5572,13 +5790,9 @@ Bibliotheken zur Laufzeit den von ihnen benötigten Code finden können, müssen deren Laufzeit-Abhängigkeiten in @code{propagated-inputs} statt in @code{inputs} aufgeführt werden. -@item @code{self-native-input?} (Vorgabe: @code{#f}) -Dieses boolesche Feld gibt an, ob das Paket sich selbst als eine native -Eingabe beim Cross-Kompilieren braucht. - @item @code{outputs} (Vorgabe: @code{'("out")}) Die Liste der Benennungen der Ausgaben des Pakets. Der Abschnitt -@xref{Pakete mit mehreren Ausgaben.} beschreibt übliche Nutzungen +@ref{Pakete mit mehreren Ausgaben.} beschreibt übliche Nutzungen zusätzlicher Ausgaben. @item @code{native-search-paths} (Vorgabe: @code{'()}) @@ -5590,7 +5804,7 @@ beschreiben. @item @code{replacement} (Vorgabe: @code{#f}) Dies muss entweder @code{#f} oder ein package-Objekt sein, das als Ersatz (@dfn{replacement}) dieses Pakets benutzt werden soll. Im Abschnitt -@xref{Sicherheitsaktualisierungen, grafts}, wird dies erklärt. +@ref{Sicherheitsaktualisierungen, grafts} wird dies erklärt. @item @code{synopsis} Eine einzeilige Beschreibung des Pakets. @@ -5621,12 +5835,33 @@ dieses Feld nicht automatisch berichtigt wird. @end table @end deftp +@deffn {Scheme Syntax} this-package +When used in the @emph{lexical scope} of a package field definition, this +identifier resolves to the package being defined. + +The example below shows how to add a package as a native input of itself +when cross-compiling: + +@example +(package + (name "guile") + ;; ... + + ;; When cross-compiled, Guile, for example, depends on + ;; a native version of itself. Add it here. + (native-inputs (if (%current-target-system) + `(("self" ,this-package)) + '()))) +@end example + +It is an error to refer to @code{this-package} outside a package definition. +@end deffn @node »origin«-Referenz @subsection @code{origin}-Referenz Dieser Abschnitt fasst alle Optionen zusammen, die in -@code{origin}-Deklarationen zur Verfügung stehen (@pxref{Pakete definieren}). +@code{origin}-Deklarationen zur Verfügung stehen (siehe @ref{Pakete definieren}). @deftp {Datentyp} origin Mit diesem Datentyp wird ein Ursprung, von dem Quellcode geladen werden @@ -5643,7 +5878,7 @@ eine Liste solcher URLs. @item @code{method} Eine Prozedur, die die URI verwertet. -Beispiele sind unter Anderem: +Beispiele sind unter anderem: @table @asis @item @var{url-fetch} aus @code{(guix download)} @@ -5669,8 +5904,8 @@ Ein Bytevektor, der den SHA-256-Hash der Quelldateien enthält. Typischerweise wird hier mit der @code{base32}-Form der Bytevektor aus einer Base-32-Zeichenkette generiert. -Diese Informationen liefert Ihnen der Befehl @code{guix download} -(@pxref{Aufruf von guix download}) oder @code{guix hash} (@pxref{Aufruf von guix hash}). +Diese Informationen liefert Ihnen der Befehl @code{guix download} (siehe +@ref{Aufruf von guix download}) oder @code{guix hash} (siehe @ref{Aufruf von guix hash}). @item @code{file-name} (Vorgabe: @code{#f}) Der Dateiname, unter dem der Quellcode abgespeichert werden sollte. Wenn er @@ -5681,8 +5916,8 @@ empfiehlt es sich, den Dateinamen ausdrücklich anzugeben, weil dann keine sprechende Benennung automatisch gefunden werden kann. @item @code{patches} (Vorgabe: @code{'()}) -Eine Liste von Dateinamen, Ursprüngen oder dateiähnlichen Objekten -(@pxref{G-Ausdrücke, file-like objects}) mit Patches, welche auf den +Eine Liste von Dateinamen, Ursprüngen oder dateiähnlichen Objekten (siehe +@ref{G-Ausdrücke, file-like objects}) mit Patches, welche auf den Quellcode anzuwenden sind. Die Liste von Patches kann nicht von Parametern der Erstellung @@ -5690,8 +5925,8 @@ abhängen. Insbesondere kann sie nicht vom Wert von @code{%current-system} oder @code{%current-target-system} abḧängen. @item @code{snippet} (Vorgabe: @code{#f}) -Ein im Quellcode-Verzeichnis auszuführender G-Ausdruck -(@pxref{G-Ausdrücke}) oder S-Ausdruck. Hiermit kann der Quellcode bequem +Ein im Quellcode-Verzeichnis auszuführender G-Ausdruck (siehe +@ref{G-Ausdrücke}) oder S-Ausdruck. Hiermit kann der Quellcode bequem modifiziert werden, manchmal ist dies bequemer als mit einem Patch. @item @code{patch-flags} (Vorgabe: @code{'("-p1")}) @@ -5718,7 +5953,7 @@ Welches Guile-Paket für den Patch-Prozess benutzt werden sollte. Bei @cindex Erstellungssystem Jede Paketdefinition legt ein @dfn{Erstellungssystem} (»build system«) sowie -dessen Argumente fest (@pxref{Pakete definieren}). Das +dessen Argumente fest (siehe @ref{Pakete definieren}). Das @code{build-system}-Feld steht für die Erstellungsprozedur des Pakets sowie für weitere implizite Eingaben für die Erstellungsprozedur. @@ -5733,16 +5968,17 @@ Intern funktionieren Erstellungssysteme, indem erst Paketobjekte zu Paket, aber mit weniger Zierrat — anders gesagt ist eine Bag eine systemnähere Darstellung eines Pakets, die sämtliche Eingaben des Pakets einschließlich vom Erstellungssystem hinzugefügter Eingaben enthält. Diese -Zwischendarstellung wird dann zur eigentlichen Ableitung kompiliert -(@pxref{Ableitungen}). +Zwischendarstellung wird dann zur eigentlichen Ableitung kompiliert (siehe +@ref{Ableitungen}). Erstellungssysteme akzeptieren optional eine Liste von @dfn{Argumenten}. In Paketdefinitionen werden diese über das @code{arguments}-Feld übergeben -(@pxref{Pakete definieren}). Sie sind in der Regel Schlüsselwort-Argumente -(@pxref{Optional Arguments, keyword arguments in Guile,, guile, GNU Guile -Reference Manual}). Der Wert dieser Argumente wird normalerweise vom -Erstellungssystem in der @dfn{Erstellungsschicht} ausgewertet, d.h. von -einem durch den Daemon gestarteten Guile-Prozess (@pxref{Ableitungen}). +(siehe @ref{Pakete definieren}). Sie sind in der Regel +Schlüsselwort-Argumente (siehe @ref{Optional Arguments, keyword arguments in +Guile,, guile, GNU Guile Reference Manual}). Der Wert dieser Argumente wird +normalerweise vom Erstellungssystem in der @dfn{Erstellungsschicht} +ausgewertet, d.h.@: von einem durch den Daemon gestarteten Guile-Prozess +(siehe @ref{Ableitungen}). Das häufigste Erstellungssystem ist @var{gnu-build-system}, was die übliche Erstellungsprozedur für GNU-Pakete und viele andere Pakete darstellt. Es @@ -5750,8 +5986,8 @@ wird vom Modul @code{(guix build-system gnu)} bereitgestellt. @defvr {Scheme-Variable} gnu-build-system @var{gnu-build-system} steht für das GNU-Erstellungssystem und Varianten -desselben (@pxref{Configuration, configuration and makefile conventions,, -standards, GNU Coding Standards}). +desselben (siehe @ref{Configuration, configuration and makefile +conventions,, standards, GNU Coding Standards}). @cindex Erstellungsphasen Kurz gefasst werden Pakete, die es benutzen, konfiguriert, erstellt und @@ -5775,8 +6011,8 @@ Store-Dateipfade beziehen. Zum Beispiel könnte @code{#!/bin/sh} zu @item configure Das Skript @file{configure} mit einigen vorgegebenen Befehlszeilenoptionen -ausführen, wie z.B. mit @code{--prefix=/gnu/store/@dots{}}, sowie mit den im -@code{#:configure-flags}-Argument angegebenen Optionen. +ausführen, wie z.B.@: mit @code{--prefix=/gnu/store/@dots{}}, sowie mit den +im @code{#:configure-flags}-Argument angegebenen Optionen. @item build @code{make} ausführen mit den Optionen aus der Liste in @@ -5800,7 +6036,8 @@ Shebangs in den installierten ausführbaren Dateien beheben. @item strip Symbole zur Fehlerbehebung aus ELF-Dateien entfernen (außer @code{#:strip-binaries?} ist auf falsch gesetzt) und in die -@code{debug}-Ausgabe kopieren, falls diese verfügbar ist (@pxref{Dateien zur Fehlersuche installieren}). +@code{debug}-Ausgabe kopieren, falls diese verfügbar ist (siehe +@ref{Dateien zur Fehlersuche installieren}). @end table @vindex %standard-phases @@ -5910,8 +6147,8 @@ erzeugen oder um Lisp-Abbilder mit einem vorab geladenen Satz von Paketen zu erzeugen. Das Erstellungssystem benutzt gewisse Namenskonventionen. Bei Binärpaketen -sollte dem Paketnamen die Lispimplementierung als Präfix vorangehen, -z.B.@code{sbcl-} für @code{asdf-build-system/sbcl}. +sollte dem Paketnamen die Lispimplementierung als Präfix vorangehen, z.B.@: +@code{sbcl-} für @code{asdf-build-system/sbcl}. Zudem sollte das entsprechende Quellcode-Paket mit der Konvention wie bei Python-Paketen (siehe @ref{Python-Module}) ein @code{cl-} als Präfix @@ -6038,21 +6275,23 @@ Befehlszeilenoptionen aufgefasst, die an den Befehl @command{cmake} übergeben werden. Der Parameter @code{#:build-type} abstrahiert, welche Befehlszeilenoptionen dem Compiler übergeben werden; der Vorgabewert ist @code{"RelWithDebInfo"} (kurz für »release mode with debugging -information«), d.h. kompiliert wird für eine Produktionsumgebung und +information«), d.h.@: kompiliert wird für eine Produktionsumgebung und Informationen zur Fehlerbehebung liegen bei, was ungefähr @code{-O2 -g} entspricht, wie bei der Vorgabe für Autoconf-basierte Pakete. @end defvr -@defvr {Scheme Variable} dune-build-system -This variable is exported by @code{(guix build-system dune)}. It supports -builds of packages using @uref{https://dune.build/, Dune}, a build tool for -the OCaml programming language. It is implemented as an extension of the -@code{ocaml-build-system} which is described below. As such, the -@code{#:ocaml} and @code{#:findlib} parameters can be passed to this build -system. +@defvr {Scheme-Variable} dune-build-system +Diese Variable wird vom Modul @code{(guix build-system dune)} +exportiert. Sie unterstützt es, Pakete mit @uref{https://dune.build/, Dune} +zu erstellen, einem Erstellungswerkzeug für die Programmiersprache OCaml, +und ist als Erweiterung des unten beschriebenen OCaml-Erstellungssystems +@code{ocaml-build-system} implementiert. Als solche können auch die +Parameter @code{#:ocaml} und @code{#:findlib} an dieses Erstellungssystem +übergeben werden. -It automatically adds the @code{dune} package to the set of inputs. Which -package is used can be specified with the @code{#:dune} parameter. +Das Erstellungssystem fügt automatisch das Paket @code{dune} zu den Eingaben +hinzu. Welches Paket benutzt wird, kann mit dem Parameter @code{#:dune} +geändert werden. There is no @code{configure} phase because dune packages typically don't need to be configured. The @code{#:build-flags} parameter is taken as a @@ -6061,6 +6300,11 @@ list of flags passed to the @code{dune} command during the build. The @code{#:jbuild?} parameter can be passed to use the @code{jbuild} command instead of the more recent @code{dune} command while building a package. Its default value is @code{#f}. + +The @code{#:package} parameter can be passed to specify a package name, +which is useful when a package contains multiple packages and you want to +build only one of them. This is equivalent to passing the @code{-p} +argument to @code{dune}. @end defvr @defvr {Scheme-Variable} go-build-system @@ -6081,11 +6325,11 @@ zusammen. Manchmal ist es nötig, den Paketquellcode in ein anderes als das vom »import path« bezeichnete Verzeichnis zu entpacken; diese andere Verzeichnisstruktur sollte dann als @code{#:unpack-path} angegeben werden. -Pakete, die Go-Bibliotheken zur Verfügung stellen, sollten zusammen mit -ihrem Quellcode installiert werden. Der Schlüssel @code{#:install-source?}, -sein Vorgabewert ist @code{#t}, steuert, ob Quellcode installiert wird. Bei -Paketen, die nur ausführbare Dateien liefern, kann der Wert auf @code{#f} -gesetzt werden. +Pakete, die Go-Bibliotheken zur Verfügung stellen, sollten ihren Quellcode +auch in die Erstellungsausgabe installieren. Der Schlüssel +@code{#:install-source?}, sein Vorgabewert ist @code{#t}, steuert, ob +Quellcode installiert wird. Bei Paketen, die nur ausführbare Dateien +liefern, kann der Wert auf @code{#f} gesetzt werden. @end defvr @defvr {Scheme-Variable} glib-or-gtk-build-system @@ -6128,10 +6372,10 @@ Beide Phasen finden nach der @code{install}-Phase statt. Dieses Erstellungssystem ist für Guile-Pakete gedacht, die nur aus Scheme-Code bestehen und so schlicht sind, dass sie nicht einmal ein Makefile und erst recht keinen @file{configure}-Skript enthalten. Hierzu -wird Scheme-Code mit @command{guild compile} kompiliert -(@pxref{Compilation,,, guile, GNU Guile Reference Manual}) und die -@file{.scm}- und @file{.go}-Dateien an den richtigen Pfad installiert. Auch -Dokumentation wird installiert. +wird Scheme-Code mit @command{guild compile} kompiliert (siehe +@ref{Compilation,,, guile, GNU Guile Reference Manual}) und die @file{.scm}- +und @file{.go}-Dateien an den richtigen Pfad installiert. Auch Dokumentation +wird installiert. Das Erstellungssystem unterstützt Cross-Kompilieren durch die Befehlszeilenoption @code{--target} für @command{guild compile}. @@ -6211,7 +6455,7 @@ zeigt auf @file{lib/ocaml/site-lib/stubslibs} und dorthin sollten @defvr {Scheme-Variable} python-build-system Diese Variable wird vom Modul @code{(guix build-system python)} exportiert. Sie implementiert mehr oder weniger die konventionelle -Erstellungsprozedur, wie sie für Python-Pakete üblich ist, d.h. erst wird +Erstellungsprozedur, wie sie für Python-Pakete üblich ist, d.h.@: erst wird @code{python setup.py build} ausgeführt und dann @code{python setup.py install --prefix=/gnu/store/@dots{}}. @@ -6266,6 +6510,23 @@ Paketeingaben enthält. Tests werden nach der Installation mit der R-Funktion @code{tools::testInstalledPackage} ausgeführt. @end defvr +@defvr {Scheme-Variable} rakudo-build-system +This variable is exported by @code{(guix build-system rakudo)} It implements +the build procedure used by @uref{https://rakudo.org/, Rakudo} for +@uref{https://perl6.org/, Perl6} packages. It installs the package to +@code{/gnu/store/@dots{}/NAME-VERSION/share/perl6} and installs the +binaries, library files and the resources, as well as wrap the files under +the @code{bin/} directory. Tests can be skipped by passing @code{#f} to the +@code{tests?} parameter. + +Which rakudo package is used can be specified with @code{rakudo}. Which +perl6-tap-harness package used for the tests can be specified with +@code{#:prove6} or removed by passing @code{#f} to the @code{with-prove6?} +parameter. Which perl6-zef package used for tests and installing can be +specified with @code{#:zef} or removed by passing @code{#f} to the +@code{with-zef?} parameter. +@end defvr + @defvr {Scheme-Variable} texlive-build-system Diese Variable wird vom Modul @code{(guix build-system texlive)} exportiert. Mit ihr werden TeX-Pakete in Stapelverarbeitung (»batch mode«) @@ -6370,8 +6631,8 @@ festgelegt werden, was als Vorgabewert @code{ldc} benutzt. @defvr {Scheme-Variable} emacs-build-system Diese Variable wird vom Modul @code{(guix build-system emacs)} exportiert. Darin wird eine Installationsprozedur ähnlich der des -Paketsystems von Emacs selbst implementiert (@pxref{Packages,,, emacs, The -GNU Emacs Manual}). +Paketsystems von Emacs selbst implementiert (siehe @ref{Packages,,, emacs, +The GNU Emacs Manual}). Zunächst wird eine Datei @code{@var{Paket}-autoloads.el} erzeugt, dann werden alle Emacs-Lisp-Dateien zu Bytecode kompiliert. Anders als beim @@ -6382,11 +6643,12 @@ gelöscht. Jedes Paket wird in sein eigenes Verzeichnis unter @end defvr @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 -copied into place. It copies font files to standard locations in the output -directory. +Diese Variable wird vom Modul @code{(guix build-system font)} +exportiert. Mit ihr steht eine Installationsprozedur für Schriftarten-Pakete +zur Verfügung für vom Anbieter vorkompilierte TrueType-, OpenType- und +andere Schriftartendateien, die nur an die richtige Stelle kopiert werden +müssen. Dieses Erstellungssystem kopiert die Schriftartendateien an den +Konventionen folgende Orte im Ausgabeverzeichnis. @end defvr @defvr {Scheme-Variable} meson-build-system @@ -6456,6 +6718,33 @@ durchlaufen. Wenn sie gebraucht wird, kann sie mit dem Parameter @end table @end defvr +@defvr {Scheme Variable} linux-module-build-system +@var{linux-module-build-system} allows building Linux kernel modules. + +@cindex Erstellungsphasen +This build system is an extension of @var{gnu-build-system}, but with the +following phases changed: + +@table @code + +@item configure +This phase configures the environment so that the Linux kernel's Makefile +can be used to build the external kernel module. + +@item build +This phase uses the Linux kernel's Makefile in order to build the external +kernel module. + +@item install +This phase uses the Linux kernel's Makefile in order to install the external +kernel module. +@end table + +It is possible and useful to specify the Linux kernel to use for building +the module (in the "arguments" form of a package using the +linux-module-build-system, use the key #:linux to specify it). +@end defvr + Letztlich gibt es für die Pakete, die bei weitem nichts so komplexes brauchen, ein »triviales« Erstellungssystem. Es ist in dem Sinn trivial, dass es praktisch keine Hilfestellungen gibt: Es fügt keine impliziten @@ -6466,7 +6755,7 @@ Diese Variable wird vom Modul @code{(guix build-system trivial)} exportiert. Diesem Erstellungssystem muss im Argument @code{#:builder} ein Scheme-Ausdruck übergeben werden, der die Paketausgabe(n) erstellt — wie bei -@code{build-expression->derivation} (@pxref{Ableitungen, +@code{build-expression->derivation} (siehe @ref{Ableitungen, @code{build-expression->derivation}}). @end defvr @@ -6490,7 +6779,7 @@ Ausführung von »configure« angegebene Zustandsverzeichnis ist, normalerweise @file{/var}. Auf den Store wird @emph{nur} durch den Daemon im Auftrag seiner Clients -zugegriffen (@pxref{Aufruf des guix-daemon}). Um den Store zu verändern, +zugegriffen (siehe @ref{Aufruf des guix-daemon}). Um den Store zu verändern, verbinden sich Clients über einen Unix-Socket mit dem Daemon, senden ihm entsprechende Anfragen und lesen dann dessen Antwort — so etwas nennt sich entfernter Prozeduraufruf (englisch »Remote Procedure Call« oder kurz RPC). @@ -6499,11 +6788,11 @@ entfernter Prozeduraufruf (englisch »Remote Procedure Call« oder kurz RPC). Benutzer dürfen @emph{niemals} Dateien in @file{/gnu/store} direkt verändern, sonst wären diese nicht mehr konsistent und die Grundannahmen im funktionalen Modell von Guix, dass die Objekte unveränderlich sind, wären -dahin (@pxref{Einführung}). +dahin (siehe @ref{Einführung}). -Siehe @xref{Aufruf von guix gc, @command{guix gc --verify}}, für -Informationen, wie die Integrität des Stores überprüft und nach -versehentlichen Veränderungen unter Umständen wiederhergestellt werden kann. +Siehe @ref{Aufruf von guix gc, @command{guix gc --verify}} für Informationen, +wie die Integrität des Stores überprüft und nach versehentlichen +Veränderungen unter Umständen wiederhergestellt werden kann. @end quotation Das Modul @code{(guix store)} bietet Prozeduren an, um sich mit dem Daemon @@ -6543,23 +6832,23 @@ guix://master.guix.example.org:1234 Diese Konfiguration ist für lokale Netzwerke wie etwa in Rechen-Clustern geeignet, wo sich nur vertrauenswürdige Knoten mit dem Erstellungs-Daemon -z.B. unter @code{master.guix.example.org} verbinden können. +z.B.@: unter @code{master.guix.example.org} verbinden können. Die Befehlszeilenoption @code{--listen} von @command{guix-daemon} kann -benutzt werden, damit er auf TCP-Verbindungen lauscht (@pxref{Aufruf des guix-daemon, @code{--listen}}). +benutzt werden, damit er auf TCP-Verbindungen lauscht (siehe @ref{Aufruf des guix-daemon, @code{--listen}}). @item ssh @cindex SSH-Zugriff auf Erstellungs-Daemons Mit solchen URIs kann eine Verbindung zu einem entfernten Daemon über SSH hergestellt werden@footnote{Diese Funktionalitäts setzt Guile-SSH voraus -(@pxref{Voraussetzungen}).}. Eine typische URL sieht so aus: +(siehe @ref{Voraussetzungen}).}. Eine typische URL sieht so aus: @example ssh://charlie@@guix.example.org:22 @end example Was @command{guix copy} betrifft, richtet es sich nach den üblichen -OpenSSH-Client-Konfigurationsdateien (@pxref{Aufruf von guix copy}). +OpenSSH-Client-Konfigurationsdateien (siehe @ref{Aufruf von guix copy}). @end table In Zukunft könnten weitere URI-Schemata unterstützt werden. @@ -6569,8 +6858,8 @@ In Zukunft könnten weitere URI-Schemata unterstützt werden. @quotation Anmerkung Die Fähigkeit, sich mit entfernten Erstellungs-Daemons zu verbinden, sehen wir als experimentell an, Stand @value{VERSION}. Bitte diskutieren Sie mit -uns jegliche Probleme oder Vorschläge, die Sie haben könnten -(@pxref{Mitwirken}). +uns jegliche Probleme oder Vorschläge, die Sie haben könnten (siehe +@ref{Mitwirken}). @end quotation @end defvr @@ -6607,8 +6896,9 @@ und sonst @code{#f} (ein ungültiges Objekt kann auf der Platte gespeichert sein, tatsächlich aber ungültig sein, zum Beispiel weil es das Ergebnis einer abgebrochenen oder fehlgeschlagenen Erstellung ist). -A @code{&store-protocol-error} condition is raised if @var{path} is not -prefixed by the store directory (@file{/gnu/store}). +Ein @code{&store-protocol-error}-Fehlerzustand wird ausgelöst, wenn der +@var{Pfad} nicht mit dem Store-Verzeichnis als Präfix beginnt +(@file{/gnu/store}). @end deffn @deffn {Scheme-Prozedur} add-text-to-store @var{Server} @var{Name} @var{Text} [@var{Referenzen}] @@ -6626,7 +6916,7 @@ Erstellung. Es sei erwähnt, dass im Modul @code{(guix monads)} eine Monade sowie monadische Versionen obiger Prozeduren angeboten werden, damit an Code, der -auf den Store zugreift, bequemer gearbeitet werden kann (@pxref{Die Store-Monade}). +auf den Store zugreift, bequemer gearbeitet werden kann (siehe @ref{Die Store-Monade}). @c FIXME @i{Dieser Abschnitt ist im Moment noch unvollständig.} @@ -6645,15 +6935,15 @@ Die Ausgaben, die die Ableitung hat. Ableitungen erzeugen mindestens eine Datei bzw. ein Verzeichnis im Store, können aber auch mehrere erzeugen. @item -@cindex build-time dependencies -@cindex dependencies, build-time -The inputs of the derivations---i.e., its build-time dependencies---which -may be other derivations or plain files in the store (patches, build -scripts, etc.) +@cindex Erstellungszeitabhängigkeiten +@cindex Abhängigkeiten zur Erstellungszeit +Die Eingaben der Ableitung, also Abhängigkeiten zur Zeit ihrer Erstellung, +die entweder andere Ableitungen oder einfache Dateien im Store sind (wie +Patches, Erstellungsskripts usw.). @item -Das System, wofür mit der Ableitung erstellt wird, also ihr Ziel — -z.B. @code{x86_64-linux}. +Das System, wofür mit der Ableitung erstellt wird, also ihr Ziel — z.B.@: +@code{x86_64-linux}. @item Der Dateiname eines Erstellungsskripts im Store, zusammen mit den @@ -6671,27 +6961,28 @@ sowohl Darstellungen im Arbeitsspeicher jeweils für Client und Daemon, als auch Dateien im Store, deren Namen auf @code{.drv} enden — diese Dateien werden als @dfn{Ableitungspfade} bezeichnet. Ableitungspfade können an die Prozedur @code{build-derivations} übergeben werden, damit die darin -niedergeschriebenen Erstellungsaktionen durchgeführt werden (@pxref{Der Store}). +niedergeschriebenen Erstellungsaktionen durchgeführt werden (siehe @ref{Der Store}). @cindex Ableitungen mit fester Ausgabe Operationen wie das Herunterladen von Dateien und Checkouts von unter Versionskontrolle stehenden Quelldateien, bei denen der Hash des Inhalts im Voraus bekannt ist, werden als @dfn{Ableitungen mit fester Ausgabe} modelliert. Anders als reguläre Ableitungen sind die Ausgaben von -Ableitungen mit fester Ausgabe unabhängig von ihren Eingaben — z.B. liefert -das Herunterladen desselben Quellcodes dasselbe Ergebnis unabhängig davon, -mit welcher Methode und welchen Werkzeugen er heruntergeladen wurde. +Ableitungen mit fester Ausgabe unabhängig von ihren Eingaben — z.B.@: +liefert das Herunterladen desselben Quellcodes dasselbe Ergebnis unabhängig +davon, mit welcher Methode und welchen Werkzeugen er heruntergeladen wurde. @cindex references -@cindex run-time dependencies -@cindex dependencies, run-time -The outputs of derivations---i.e., the build results---have a set of -@dfn{references}, as reported by the @code{references} RPC or the -@command{guix gc --references} command (@pxref{Aufruf von guix gc}). -References are the set of run-time dependencies of the build results. -References are a subset of the inputs of the derivation; this subset is -automatically computed by the build daemon by scanning all the files in the -outputs. +@cindex Laufzeitabhängigkeiten +@cindex Abhängigkeiten, zur Laufzeit +Den Ausgaben von Ableitungen — d.h.@: Erstellungergebnissen — ist eine Liste +von @dfn{Referenzen} zugeordnet, die auch der entfernte Prozeduraufruf +@code{references} oder der Befehl @command{guix gc --references} liefert +(siehe @ref{Aufruf von guix gc}). Referenzen sind die Menge der +Laufzeitabhängigkeiten von Erstellungsergebnissen. Referenzen sind eine +Teilmenge der Eingaben von Ableitungen; die Teilmenge wird automatisch +ermittelt, indem der Erstellungsdaemon alle Dateien unter den Ausgaben nach +Referenzen durchsucht. Das Modul @code{(guix derivations)} stellt eine Repräsentation von Ableitungen als Scheme-Objekte zur Verfügung, zusammen mit Prozeduren, um @@ -6708,9 +6999,9 @@ Methode, eine Ableitung zu erzeugen, ist mit der Prozedur @code{derivation}: liefern. Wurden @var{hash} und @var{hash-algo} angegeben, wird eine @dfn{Ableitung -mit fester Ausgabe} erzeugt — d.h. eine, deren Ausgabe schon im Voraus -bekannt ist, wie z.B. beim Herunterladen einer Datei. Wenn des Weiteren auch -@var{recursive?} wahr ist, darf die Ableitung mit fester Ausgabe eine +mit fester Ausgabe} erzeugt — d.h.@: eine, deren Ausgabe schon im Voraus +bekannt ist, wie z.B.@: beim Herunterladen einer Datei. Wenn des Weiteren +auch @var{recursive?} wahr ist, darf die Ableitung mit fester Ausgabe eine ausführbare Datei oder ein Verzeichnis sein und @var{hash} muss die Prüfsumme eines Archivs mit dieser Ausgabe sein. @@ -6734,14 +7025,14 @@ ist. So ein Leck kann zum Beispiel benutzt werden, um Variable wie herunterladen. Ist @var{local-build?} wahr, wird die Ableitung als schlechter Kandidat für -das Auslagern deklariert, der besser lokal erstellt werden sollte -(@pxref{Auslagern des Daemons einrichten}). Dies betrifft kleine Ableitungen, wo das +das Auslagern deklariert, der besser lokal erstellt werden sollte (siehe +@ref{Auslagern des Daemons einrichten}). Dies betrifft kleine Ableitungen, wo das Übertragen der Daten aufwendiger als ihre Erstellung ist. Ist @var{substitutable?} falsch, wird deklariert, dass für die Ausgabe der -Ableitung keine Substitute benutzt werden sollen (@pxref{Substitute}). Das -ist nützlich, wenn Pakete erstellt werden, die Details über den -Prozessorbefehlssatz des Wirtssystems auslesen. +Ableitung keine Substitute benutzt werden sollen (siehe +@ref{Substitute}). Das ist nützlich, wenn Pakete erstellt werden, die +Details über den Prozessorbefehlssatz des Wirtssystems auslesen. @var{properties} muss eine assoziative Liste enthalten, die »Eigenschaften« der Ableitungen beschreibt. Sie wird genau so, wie sie ist, in der Ableitung @@ -6772,7 +7063,7 @@ Wie man sehen kann, ist es umständlich, diese grundlegende Methode direkt zu benutzen. Natürlich ist es besser, Erstellungsskripts in Scheme zu schreiben! Am besten schreibt man den Erstellungscode als »G-Ausdruck« und übergibt ihn an @code{gexp->derivation}. Mehr Informationen finden Sie im -Abschnitt @pxref{G-Ausdrücke}. +Abschnitt @ref{G-Ausdrücke}. Doch es gab einmal eine Zeit, zu der @code{gexp->derivation} noch nicht existiert hatte und wo das Zusammenstellen von Ableitungen mit @@ -6793,8 +7084,8 @@ jeweils als Tupel @code{(Name Ableitungspfad Unterableitung)}; wird keine @var{Unterableitung} angegeben, wird @code{"out"} angenommen. @var{Module} ist eine Liste der Namen von Guile-Modulen im momentanen Suchpfad, die in den Store kopiert, kompiliert und zur Verfügung gestellt werden, wenn der -@var{Ausdruck} ausgeführt wird — z.B. @code{((guix build utils) (guix build -gnu-build-system))}. +@var{Ausdruck} ausgeführt wird — z.B.@: @code{((guix build utils) (guix +build gnu-build-system))}. Der @var{Ausdruck} wird in einer Umgebung ausgewertet, in der @code{%outputs} an eine Liste von Ausgabe-/Pfad-Paaren gebunden wurde und in @@ -6897,7 +7188,7 @@ gelieferte monadische Wert wurde mit @code{mlet} statt einem einfachen Wie sich herausstellt, muss man den Aufruf von @code{package->derivation} nicht einmal aufschreiben, weil er implizit geschieht, wie wir später sehen -werden (siehe @pxref{G-Ausdrücke}): +werden (siehe @ref{G-Ausdrücke}): @example (define (sh-symlink) @@ -6999,7 +7290,8 @@ Ausdruck sein und dessen Ergebnis wird das Ergebnis von @code{mlet} oder @code{mlet*} werden, wenn es durch die @var{Monad} laufen gelassen wurde. @code{mlet*} verhält sich gegenüber @code{mlet} wie @code{let*} gegenüber -@code{let} (@pxref{Local Bindings,,, guile, GNU Guile Reference Manual}). +@code{let} (siehe @ref{Local Bindings,,, guile, GNU Guile Reference +Manual}). @end deffn @deffn {Scheme-System} mbegin @var{Monade} @var{mAusdruck} ... @@ -7159,7 +7451,7 @@ Zielsystem bezeichnendes Tripel zum Cross-Kompilieren benutzt. @deffn {Monadische Prozedur} package->derivation @var{Paket} [@var{System}] @deffnx {Monadische Prozedur} package->cross-derivation @var{Paket} @ @var{Ziel} [@var{System}] Monadische Version von @code{package-derivation} -und @code{package-cross-derivation} (@pxref{Pakete definieren}). +und @code{package-cross-derivation} (siehe @ref{Pakete definieren}). @end deffn @@ -7170,10 +7462,10 @@ und @code{package-cross-derivation} (@pxref{Pakete definieren}). @cindex Erstellungscode maskieren Es gibt also »Ableitungen«, die eine Abfolge von Erstellungsaktionen repräsentieren, die durchgeführt werden müssen, um ein Objekt im Store zu -erzeugen (@pxref{Ableitungen}). Diese Erstellungsaktionen werden +erzeugen (siehe @ref{Ableitungen}). Diese Erstellungsaktionen werden durchgeführt, nachdem der Daemon gebeten wurde, die Ableitungen tatsächlich zu erstellen; dann führt der Daemon sie in einer isolierten Umgebung (einem -sogenannten Container) aus (@pxref{Aufruf des guix-daemon}). +sogenannten Container) aus (siehe @ref{Aufruf des guix-daemon}). @cindex Schichten von Code Wenig überraschend ist, dass wir diese Erstellungsaktionen gerne in Scheme @@ -7185,7 +7477,7 @@ an Hop geprägt. Oleg Kiselyov, der aufschlussreiche diesem Thema} geschrieben hat, nennt diese Art der Code-Generierung @dfn{Staging}, deutsch etwa Inszenierung bzw.@: Aufführung.}: den »wirtsseitigen Code« (»host code«) — also Code, der Pakete definiert, mit -dem Daemon kommuniziert etc. — und den »erstellungsseitigen Code« (»build +dem Daemon kommuniziert etc.@: — und den »erstellungsseitigen Code« (»build code«) — also Code, der die Erstellungsaktionen auch wirklich umsetzt, indem Dateien erstellt werden, @command{make} aufgerufen wird etc. @@ -7203,7 +7495,7 @@ S-Ausdrücken, die zu Erstellungsausdrücken angepasst wurden. G-Ausdrücke drei syntaktischen Formen zusammen: @code{gexp}, @code{ungexp} und @code{ungexp-splicing} (alternativ einfach: @code{#~}, @code{#$} und @code{#$@@}), die jeweils mit @code{quasiquote}, @code{unquote} und -@code{unquote-splicing} vergleichbar sind (@pxref{Expression Syntax, +@code{unquote-splicing} vergleichbar sind (siehe @ref{Expression Syntax, @code{quasiquote},, guile, GNU Guile Reference Manual}). Es gibt aber auch erhebliche Unterschiede: @@ -7230,7 +7522,7 @@ Objekte auf Ableitungen oder Dateien im Store »herunterbrechen«, womit diese Objekte dann auch in G-Ausdrücken eingefügt werden können. Zum Beispiel sind »dateiartige Objekte« ein nützlicher Typ solcher abstrakter Objekte. Mit ihnen können Dateien leicht in den Store eingefügt und von Ableitungen und -Anderem referenziert werden (siehe unten @code{local-file} und +anderem referenziert werden (siehe unten @code{local-file} und @code{plain-file}). Zur Veranschaulichung dieser Idee soll uns dieses Beispiel eines G-Ausdrucks @@ -7363,7 +7655,7 @@ kann eine oder mehrere der folgenden Formen enthalten: Eine Referenz auf das @var{Objekt} einführen. Das @var{Objekt} kann einen der unterstützten Typen haben, zum Beispiel ein Paket oder eine Ableitung, so dass die @code{ungexp}-Form durch deren Ausgabedateiname ersetzt wird — -z.B. @code{"/gnu/store/@dots{}-coreutils-8.22}. +z.B.@: @code{"/gnu/store/@dots{}-coreutils-8.22}. Wenn das @var{Objekt} eine Liste ist, wird diese durchlaufen und alle unterstützten Objekte darin auf diese Weise ersetzt. @@ -7378,7 +7670,7 @@ eingefügt. @itemx (ungexp @var{Objekt} @var{Ausgabe}) Dies verhält sich wie die Form oben, bezieht sich aber ausdrücklich auf die angegebene @var{Ausgabe} des @var{Objekt}s — dies ist nützlich, wenn das -@var{Objekt} mehrere Ausgaben generiert (@pxref{Pakete mit mehreren Ausgaben.}). +@var{Objekt} mehrere Ausgaben generiert (siehe @ref{Pakete mit mehreren Ausgaben.}). @item #+@var{Objekt} @itemx #+@var{Objekt}:@var{Ausgabe} @@ -7456,7 +7748,8 @@ Liefert @code{#t}, wenn das @var{Objekt} ein G-Ausdruck ist. G-Ausdrücke sind dazu gedacht, auf die Platte geschrieben zu werden, entweder als Code, der eine Ableitung erstellt, oder als einfache Dateien im -Store. Die monadischen Prozeduren unten ermöglichen Ihnen das (@pxref{Die Store-Monade}, wenn Sie mehr Informationen über Monaden suchen). +Store. Die monadischen Prozeduren unten ermöglichen Ihnen das (siehe +@ref{Die Store-Monade}, wenn Sie mehr Informationen über Monaden suchen). @deffn {Monadische Prozedur} gexp->derivation @var{Name} @var{Ausdruck} @ [#:system (%current-system)] [#:target #f] [#:graft? #t] @ [#:hash #f] @@ -7479,12 +7772,12 @@ bezeichnete Pakete benutzt. werden; @var{modules} ist dabei eine Liste von Namen von Guile-Modulen, die im Modulpfad @var{module-path} gesucht werden, um sie in den Store zu kopieren, zu kompilieren und im Ladepfad während der Ausführung des -@var{Ausdruck}s verfügbar zu machen — z.B. @code{((guix build utils) (guix +@var{Ausdruck}s verfügbar zu machen — z.B.@: @code{((guix build utils) (guix build gnu-build-system))}. @var{effective-version} bestimmt, unter welcher Zeichenkette die Erweiterungen des @var{Ausdruck}s zum Suchpfad hinzugefügt werden (siehe -@code{with-extensions}) — z.B. @code{"2.2"}. +@code{with-extensions}) — z.B.@: @code{"2.2"}. @var{graft?} bestimmt, ob vom @var{Ausdruck} benannte Pakete veredelt werden sollen, falls Veredelungen zur Verfügung stehen. @@ -7518,8 +7811,8 @@ Warnungen angezeigt werden sollen, wenn auf als veraltet markierten Code zugegriffen wird (»deprecation warnings«). @var{deprecation-warnings} kann @code{#f}, @code{#t} oder @code{'detailed} (detailliert) sein. -Die anderen Argumente verhalten sich wie bei @code{derivation} -(@pxref{Ableitungen}). +Die anderen Argumente verhalten sich wie bei @code{derivation} (siehe +@ref{Ableitungen}). @end deffn @cindex dateiartige Objekte @@ -7563,7 +7856,7 @@ absolute Dateiname und @var{Stat} das Ergebnis von @code{lstat} ist, außer auf den Einträgen, wo @var{select?} keinen wahren Wert liefert. Dies ist das deklarative Gegenstück zur monadischen Prozedur -@code{interned-file} (@pxref{Die Store-Monade, @code{interned-file}}). +@code{interned-file} (siehe @ref{Die Store-Monade, @code{interned-file}}). @end deffn @deffn {Scheme-Prozedur} plain-file @var{Name} @var{Inhalt} @@ -7601,7 +7894,7 @@ Folgendes Beispiel erstellt ein Skript, das einfach nur den Befehl "ls")) @end example -Lässt man es durch den Store »laufen« (siehe @pxref{Die Store-Monade, +Lässt man es durch den Store »laufen« (siehe @ref{Die Store-Monade, @code{run-with-store}}), erhalten wir eine Ableitung, die eine ausführbare Datei @file{/gnu/store/@dots{}-list-files} generiert, ungefähr so: @@ -7774,12 +8067,13 @@ zum Beispiel ein @code{<package>}. @section @command{guix repl} aufrufen @cindex REPL (Lese-Auswerten-Schreiben-Schleife) -The @command{guix repl} command spawns a Guile @dfn{read-eval-print loop} -(REPL) for interactive programming (@pxref{Using Guile Interactively,,, -guile, GNU Guile Reference Manual}). Compared to just launching the -@command{guile} command, @command{guix repl} guarantees that all the Guix -modules and all its dependencies are available in the search path. You can -use it this way: +Der Befehl @command{guix repl} startet eine Guile-REPL (@dfn{Read-Eval-Print +Loop}, kurz REPL, deutsch Lese-Auswerten-Schreiben-Schleife) zur +interaktiven Programmierung (siehe @ref{Using Guile Interactively,,, guile, +GNU Guile Reference Manual}). Im Vergleich dazu, einfach den Befehl +@command{guile} aufzurufen, garantiert @command{guix repl}, dass alle +Guix-Module und deren Abhängigkeiten im Suchpfad verfügbar sind. Sie können +die REPL so benutzen: @example $ guix repl @@ -7789,37 +8083,40 @@ $1 = #<package coreutils@@8.29 gnu/packages/base.scm:327 3e28300> @end example @cindex Untergeordnete -In addition, @command{guix repl} implements a simple machine-readable REPL -protocol for use by @code{(guix inferior)}, a facility to interact with -@dfn{inferiors}, separate processes running a potentially different revision -of Guix. +@command{guix repl} implementiert zusätzlich ein einfaches maschinenlesbares +Protokoll für die REPL, das von @code{(guix inferior)} benutzt wird, um mit +@dfn{Untergeordneten} zu interagieren, also mit getrennten Prozessen einer +womöglich anderen Version von Guix. Folgende @var{Optionen} gibt es: @table @code -@item --type=@var{type} -@itemx -t @var{type} -Start a REPL of the given @var{TYPE}, which can be one of the following: +@item --type=@var{Typ} +@itemx -t @var{Typ} +Startet eine REPL des angegebenen @var{Typ}s, der einer der Folgenden sein +darf: @table @code @item guile -This is default, and it spawns a standard full-featured Guile REPL. +Die Voreinstellung, mit der eine normale, voll funktionsfähige Guile-REPL +gestartet wird. @item machine -Spawn a REPL that uses the machine-readable protocol. This is the protocol -that the @code{(guix inferior)} module speaks. +Startet eine REPL, die ein maschinenlesbares Protokoll benutzt. Dieses +Protokoll wird vom Modul @code{(guix inferior)} gesprochen. @end table @item --listen=@var{Endpunkt} -By default, @command{guix repl} reads from standard input and writes to -standard output. When this option is passed, it will instead listen for -connections on @var{endpoint}. Here are examples of valid options: +Der Vorgabe nach würde @command{guix repl} von der Standardeingabe lesen und +auf die Standardausgabe schreiben. Wird diese Befehlszeilenoption angegeben, +lauscht die REPL stattdessen auf dem @var{Endpunkt} auf Verbindungen. Hier +sind Beispiele gültiger Befehlszeilenoptionen: @table @code @item --listen=tcp:37146 -Accept connections on localhost on port 37146. +Verbindungen mit dem »localhost« auf Port 37146 akzeptieren. @item --listen=unix:/tmp/socket -Accept connections on the Unix-domain socket @file{/tmp/socket}. +Verbindungen zum Unix-Socket @file{/tmp/socket} akzeptieren. @end table @end table @@ -7838,12 +8135,12 @@ Befehle. * Aufruf von guix edit:: Paketdefinitionen bearbeiten. * Aufruf von guix download:: Herunterladen einer Datei und Ausgabe ihres Hashes. -* Aufruf von guix hash:: Den kryptographischen Hash einer Datei +* Aufruf von guix hash:: Den kryptografischen Hash einer Datei berechnen. * Aufruf von guix import:: Paketdefinitionen importieren. * Aufruf von guix refresh:: Paketdefinitionen aktualisieren. * Aufruf von guix lint:: Fehler in Paketdefinitionen finden. -* Aufruf von guix size:: Plattenverbrauch profilieren. +* Aufruf von guix size:: Plattenplatzverbrauch profilieren. * Aufruf von guix graph:: Den Paketgraphen visualisieren. * Aufruf von guix publish:: Substitute teilen. * Aufruf von guix challenge:: Die Substitut-Server anfechten. @@ -7862,9 +8159,9 @@ Befehle. Der Befehl @command{guix build} lässt Pakete oder Ableitungen samt ihrer Abhängigkeiten erstellen und gibt die resultierenden Pfade im Store aus. Beachten Sie, dass das Nutzerprofil dadurch nicht modifiziert wird — -eine solche Installation bewirkt der Befehl @command{guix package} -(@pxref{Aufruf von guix package}). @command{guix build} wird also -hauptsächlich von Entwicklern der Distribution benutzt. +eine solche Installation bewirkt der Befehl @command{guix package} (siehe +@ref{Aufruf von guix package}). @command{guix build} wird also hauptsächlich +von Entwicklern der Distribution benutzt. Die allgemeine Syntax lautet: @@ -7892,7 +8189,7 @@ Software-Distribution zu findenden Pakets, wie etwa @code{coreutils} oder @code{coreutils@@8.20}, oder eine Ableitung wie @file{/gnu/store/@dots{}-coreutils-8.19.drv} sein. Im ersten Fall wird nach einem Paket mit entsprechendem Namen (und optional der entsprechenden -Version) in den Modulen der GNU-Distribution gesucht (@pxref{Paketmodule}). +Version) in den Modulen der GNU-Distribution gesucht (siehe @ref{Paketmodule}). Alternativ kann die Befehlszeilenoption @code{--expression} benutzt werden, um einen Scheme-Ausdruck anzugeben, der zu einem Paket ausgewertet wird; @@ -7924,8 +8221,8 @@ archive}, gemeinsam. Das sind folgende: @item --load-path=@var{Verzeichnis} @itemx -L @var{Verzeichnis} -Das @var{Verzeichnis} vorne an den Suchpfad für Paketmodule anfügen -(@pxref{Paketmodule}). +Das @var{Verzeichnis} vorne an den Suchpfad für Paketmodule anfügen (siehe +@ref{Paketmodule}). Damit können Nutzer dafür sorgen, dass ihre eigenen selbstdefinierten Pakete für die Befehlszeilenwerkzeuge sichtbar sind. @@ -7936,12 +8233,13 @@ Den Verzeichnisbaum, in dem fehlgeschlagene Erstellungen durchgeführt wurden, behalten. Wenn also eine Erstellung fehlschlägt, bleibt ihr Erstellungsbaum in @file{/tmp} erhalten. Der Name dieses Unterverzeichnisses wird am Ende dem Erstellungsprotokolls ausgegeben. Dies hilft bei der Suche -nach Fehlern in Erstellungen. Der Abschnitt @xref{Fehlschläge beim Erstellen untersuchen} +nach Fehlern in Erstellungen. Der Abschnitt @ref{Fehlschläge beim Erstellen untersuchen} zeigt Ihnen Hinweise und Tricks, wie Erstellungsfehler untersucht werden können. Diese Option hat keine Auswirkungen, wenn eine Verbindung zu einem -entfernten Daemon über eine @code{guix://}-URI verwendet wurde (@pxref{Der Store, the @code{GUIX_DAEMON_SOCKET} variable}). +entfernten Daemon über eine @code{guix://}-URI verwendet wurde (siehe +@ref{Der Store, the @code{GUIX_DAEMON_SOCKET} variable}). @item --keep-going @itemx -k @@ -7959,17 +8257,17 @@ Die Ableitungen nicht erstellen. @anchor{fallback-option} @item --fallback Wenn das Substituieren vorerstellter Binärdateien fehlschlägt, diese als -»Fallback« lokal selbst erstellen (@pxref{Fehler bei der Substitution}). +»Fallback« lokal selbst erstellen (siehe @ref{Fehler bei der Substitution}). @item --substitute-urls=@var{URLs} @anchor{client-substitute-urls} Die @var{urls} als durch Leerraumzeichen getrennte Liste von Quell-URLs für Substitute anstelle der vorgegebenen URL-Liste für den @command{guix-daemon} -verwenden (@pxref{daemon-substitute-urls,, @command{guix-daemon} URLs}). +verwenden (siehe @ref{daemon-substitute-urls,, @command{guix-daemon} URLs}). Das heißt, die Substitute dürfen von den @var{urls} heruntergeladen werden, sofern sie mit einem durch den Systemadministrator autorisierten Schlüssel -signiert worden sind (@pxref{Substitute}). +signiert worden sind (siehe @ref{Substitute}). Wenn als @var{urls} eine leere Zeichenkette angegeben wurde, verhält es sich, als wären Substitute abgeschaltet. @@ -7977,12 +8275,12 @@ sich, als wären Substitute abgeschaltet. @item --no-substitutes Benutze keine Substitute für Erstellungsergebnisse. Das heißt, dass alle Objekte lokal erstellt werden müssen, und kein Herunterladen von vorab -erstellten Binärdateien erlaubt ist (@pxref{Substitute}). +erstellten Binärdateien erlaubt ist (siehe @ref{Substitute}). @item --no-grafts Pakete nicht »veredeln« (engl. »graft«). Praktisch heißt das, dass als Veredelungen verfügbare Paketaktualisierungen nicht angewandt werden. Der -Abschnitt @xref{Sicherheitsaktualisierungen} hat weitere Informationen zu Veredelungen. +Abschnitt @ref{Sicherheitsaktualisierungen} hat weitere Informationen zu Veredelungen. @item --rounds=@var{n} Jede Ableitung @var{n}-mal nacheinander erstellen und einen Fehler melden, @@ -7993,17 +8291,17 @@ Das ist eine nützliche Methode, um nicht-deterministische Erstellungsprozesse zu erkennen. Nicht-deterministische Erstellungsprozesse sind ein Problem, weil Nutzer dadurch praktisch nicht @emph{verifizieren} können, ob von Drittanbietern bereitgestellte Binärdateien echt sind. Der -Abschnitt @xref{Aufruf von guix challenge} erklärt dies genauer. +Abschnitt @ref{Aufruf von guix challenge} erklärt dies genauer. Beachten Sie, dass die sich unterscheidenden Erstellungsergebnisse nicht erhalten bleiben, so dass Sie eventuelle Fehler manuell untersuchen müssen, -z.B. indem Sie eines oder mehrere der Erstellungsergebnisse @code{guix -archive --export} auslagern (@pxref{Aufruf von guix archive}), dann neu +z.B.@: indem Sie eines oder mehrere der Erstellungsergebnisse @code{guix +archive --export} auslagern (siehe @ref{Aufruf von guix archive}), dann neu erstellen und letztlich die beiden Erstellungsergebnisse vergleichen. @item --no-build-hook Nicht versuchen, Erstellungen über den »Build-Hook« des Daemons auszulagern -(@pxref{Auslagern des Daemons einrichten}). Somit wird lokal erstellt, statt +(siehe @ref{Auslagern des Daemons einrichten}). Somit wird lokal erstellt, statt Erstellungen auf entfernte Maschinen auszulagern. @item --max-silent-time=@var{Sekunden} @@ -8011,24 +8309,27 @@ Wenn der Erstellungs- oder Substitutionsprozess länger als @var{Sekunden}-lang keine Ausgabe erzeugt, wird er abgebrochen und ein Fehler beim Erstellen gemeldet. -Standardmäßig wird die Einstellung für den Daemon benutzt (@pxref{Aufruf des guix-daemon, @code{--max-silent-time}}). +Standardmäßig wird die Einstellung für den Daemon benutzt (siehe +@ref{Aufruf des guix-daemon, @code{--max-silent-time}}). @item --timeout=@var{Sekunden} Entsprechend wird hier der Erstellungs- oder Substitutionsprozess abgebrochen und als Fehlschlag gemeldet, wenn er mehr als @var{Sekunden}-lang dauert. -Standardmäßig wird die Einstellung für den Daemon benutzt (@pxref{Aufruf des guix-daemon, @code{--timeout}}). +Standardmäßig wird die Einstellung für den Daemon benutzt (siehe +@ref{Aufruf des guix-daemon, @code{--timeout}}). @c Note: This option is actually not part of %standard-build-options but @c most programs honor it. -@cindex verbosity, of the command-line tools -@cindex build logs, verbosity -@item -v @var{level} +@cindex Ausführlichkeit der Befehlszeilenwerkzeuge +@cindex Erstellungsprotokolle, Ausführlichkeit +@item -v @var{Stufe} @itemx --verbosity=@var{Stufe} -Use the given verbosity @var{level}, an integer. Choosing 0 means that no -output is produced, 1 is for quiet output, and 2 shows all the build log -output on standard error. +Die angegebene Ausführlichkeitsstufe verwenden. Als @var{Stufe} muss eine +ganze Zahl angegeben werden. Wird 0 gewählt, wird keine Ausgabe zur +Fehlersuche angezeigt, 1 bedeutet eine knappe Ausgabe und 2 lässt alle +Erstellungsprotokollausgaben auf die Standardfehlerausgabe schreiben. @item --cores=@var{n} @itemx -c @var{n} @@ -8039,14 +8340,15 @@ benutzt werden. @item --max-jobs=@var{n} @itemx -M @var{n} Höchstens @var{n} gleichzeitige Erstellungsaufträge erlauben. Im Abschnitt -@xref{Aufruf des guix-daemon, @code{--max-jobs}}, finden Sie Details zu dieser +@ref{Aufruf des guix-daemon, @code{--max-jobs}} finden Sie Details zu dieser Option und der äquivalenten Option des @command{guix-daemon}. -@item --debug=@var{level} -Produce debugging output coming from the build daemon. @var{level} must be -an integer between 0 and 5; higher means more verbose output. Setting a -level of 4 or more may be helpful when debugging setup issues with the build -daemon. +@item --debug=@var{Stufe} +Ein Protokoll zur Fehlersuche ausgeben, das vom Erstellungsdaemon kommt. Als +@var{Stufe} muss eine ganze Zahl zwischen 0 und 5 angegeben werden; höhere +Zahlen stehen für ausführlichere Ausgaben. Stufe 4 oder höher zu wählen, +kann bei der Suche nach Fehlern, wie der Erstellungs-Daemon eingerichtet +ist, helfen. @end table @@ -8085,7 +8387,7 @@ auch @command{guix package} unterstützen, sind @dfn{Paketvarianten} zu definieren — zum Beispiel können Pakete aus einem anderen Quellcode als normalerweise erstellt werden. Damit ist es leicht, angepasste Pakete schnell zu erstellen, ohne die vollständigen Definitionen -von Paketvarianten einzutippen (@pxref{Pakete definieren}). +von Paketvarianten einzutippen (siehe @ref{Pakete definieren}). @table @code @@ -8095,11 +8397,11 @@ von Paketvarianten einzutippen (@pxref{Pakete definieren}). Den Paketquellcode für das @var{Paket} von der angegebenen @var{Quelle} holen und die @var{Version} als seine Versionsnummer verwenden. Die @var{Quelle} muss ein Dateiname oder eine URL sein wie bei @command{guix -download} (@pxref{Aufruf von guix download}). +download} (siehe @ref{Aufruf von guix download}). Wird kein @var{Paket} angegeben, wird als Paketname derjenige auf der Befehlszeile angegebene Paketname angenommen, der zur Basis am Ende der -@var{Quelle} passt — wenn z.B. als @var{Quelle} die Datei +@var{Quelle} passt — wenn z.B.@: als @var{Quelle} die Datei @code{/src/guile-2.0.10.tar.gz} angegeben wurde, entspricht das dem @code{guile}-Paket. @@ -8150,7 +8452,7 @@ Die Ersetzung ist rekursiv und umfassend. In diesem Beispiel würde nicht nur @code{guile} abhängt) für @code{guile@@2.0} neu erstellt. Implementiert wird das alles mit der Scheme-Prozedur -@code{package-input-rewriting} (@pxref{Pakete definieren, +@code{package-input-rewriting} (siehe @ref{Pakete definieren, @code{package-input-rewriting}}). @item --with-graft=@var{Paket}=@var{Ersatz} @@ -8158,7 +8460,7 @@ Dies verhält sich ähnlich wie mit @code{--with-input}, aber mit dem wichtigen Unterschied, dass nicht die gesamte Abhängigkeitskette neu erstellt wird, sondern das @var{Ersatz}-Paket erstellt und die ursprünglichen Binärdateien, die auf das @var{Paket} verwiesen haben, damit -@dfn{veredelt} werden. Im Abschnitt @xref{Sicherheitsaktualisierungen} finden Sie +@dfn{veredelt} werden. Im Abschnitt @ref{Sicherheitsaktualisierungen} finden Sie weitere Informationen über Veredelungen. Zum Beispiel veredelt folgender Befehl Wget und alle Abhängigkeiten davon @@ -8178,24 +8480,24 @@ kompatibel sein. Wenn das @var{Ersatz}-Paket auf irgendeine Art inkompatibel mit dem @var{Paket} ist, könnte das Ergebnispaket unbrauchbar sein. Vorsicht ist also geboten! -@item --with-branch=@var{package}=@var{branch} -@cindex Git, using the latest commit +@item --with-git-url=@var{Paket}=@var{URL} +@cindex Git, den neuesten Commit benutzen @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}. Git -sub-modules of the repository are fetched, recursively. +Build @var{package} from the latest commit of the @code{master} branch of +the Git repository at @var{url}. Git sub-modules of the repository are +fetched, recursively. -For 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: +For example, the following command builds the NumPy Python library against +the latest commit of the master branch of Python itself: @example -guix build --with-branch=guile-sqlite3=master cuirass +guix build python-numpy \ + --with-git-url=python=https://github.com/python/cpython @end example +This option can also be combined with @code{--with-branch} or +@code{--with-commit} (see below). + @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 @@ -8207,7 +8509,23 @@ 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} +@item --with-branch=@var{Paket}=@var{Branch} +Build @var{package} from the latest commit of @var{branch}. If the +@code{source} field of @var{package} is an origin with the @code{git-fetch} +method (@pxref{»origin«-Referenz}) or a @code{git-checkout} object, the +repository URL is taken from that @code{source}. Otherwise you have to use +@code{--with-git-url} to specify the URL of the Git repository. + +For instance, the following command builds @code{guile-sqlite3} from the +latest commit of its @code{master} branch, and then builds @code{guix} +(which depends on it) and @code{cuirass} (which depends on @code{guix}) +against this specific @code{guile-sqlite3} build: + +@example +guix build --with-branch=guile-sqlite3=master cuirass +@end example + +@item --with-commit=@var{Paket}=@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. @@ -8223,19 +8541,19 @@ Die unten aufgeführten Befehlszeilenoptionen funktionieren nur mit @item --quiet @itemx -q -Build quietly, without displaying the build log; this is equivalent to -@code{--verbosity=0}. Upon completion, the build log is kept in @file{/var} -(or similar) and can always be retrieved using the @option{--log-file} -option. +Schweigend erstellen, ohne das Erstellungsprotokoll anzuzeigen — dies ist +äquivalent zu @code{--verbosity=0}. Nach Abschluss der Erstellung ist das +Protokoll in @file{/var} (oder einem entsprechenden Ort) einsehbar und kann +jederzeit mit der Befehlszeilenoption @option{--log-file} gefunden werden. @item --file=@var{Datei} @itemx -f @var{Datei} Das Paket, die Ableitung oder das dateiähnliche Objekt erstellen, zu dem der -Code in der @var{Datei} ausgewertet wird (@pxref{G-Ausdrücke, file-like -objects}). +Code in der @var{Datei} ausgewertet wird (siehe @ref{G-Ausdrücke, +file-like objects}). -Zum Beispiel könnte in der @var{Datei} so eine Paketdefinition stehen -(@pxref{Pakete definieren}): +Zum Beispiel könnte in der @var{Datei} so eine Paketdefinition stehen (siehe +@ref{Pakete definieren}): @example @verbatiminclude package-hello.scm @@ -8243,63 +8561,68 @@ Zum Beispiel könnte in der @var{Datei} so eine Paketdefinition stehen @item --expression=@var{Ausdruck} @itemx -e @var{Ausdruck} -Build the package or derivation @var{expr} evaluates to. +Das Paket oder die Ableitung erstellen, zu der der @var{Ausdruck} +ausgewertet wird. -For example, @var{expr} may be @code{(@@ (gnu packages guile) guile-1.8)}, -which unambiguously designates this specific variant of version 1.8 of -Guile. +Zum Beispiel kann der @var{Ausdruck} @code{(@@ (gnu packages guile) +guile-1.8)} sein, was diese bestimmte Variante der Version 1.8 von Guile +eindeutig bezeichnet. -Alternatively, @var{expr} may be a G-expression, in which case it is used as -a build program passed to @code{gexp->derivation} (@pxref{G-Ausdrücke}). +Alternativ kann der @var{Ausdruck} ein G-Ausdruck sein. In diesem Fall wird +er als Erstellungsprogramm an @code{gexp->derivation} übergeben (siehe +@ref{G-Ausdrücke}). -Lastly, @var{expr} may refer to a zero-argument monadic procedure -(@pxref{Die Store-Monade}). The procedure must return a derivation as a -monadic value, which is then passed through @code{run-with-store}. +Zudem kann der @var{Ausdruck} eine monadische Prozedur mit null Argumenten +bezeichnen (siehe @ref{Die Store-Monade}). Die Prozedur muss eine Ableitung +als monadischen Wert zurückliefern, die dann durch @code{run-with-store} +laufen gelassen wird. @item --source @itemx -S -Build the source derivations of the packages, rather than the packages -themselves. +Die Quellcode-Ableitung der Pakete statt die Pakete selbst erstellen. -For instance, @code{guix build -S gcc} returns something like -@file{/gnu/store/@dots{}-gcc-4.7.2.tar.bz2}, which is the GCC source -tarball. +Zum Beispiel liefert @code{guix build -S gcc} etwas in der Art von +@file{/gnu/store/@dots{}-gcc-4.7.2.tar.bz2}, also den Tarball mit dem +GCC-Quellcode. -The returned source tarball is the result of applying any patches and code -snippets specified in the package @code{origin} (@pxref{Pakete definieren}). +Der gelieferte Quell-Tarball ist das Ergebnis davon, alle Patches und +Code-Schnipsel aufzuspielen, die im @code{origin}-Objekt des Pakets +festgelegt wurden (siehe @ref{Pakete definieren}). @item --sources -Fetch and return the source of @var{package-or-derivation} and all their -dependencies, recursively. This is a handy way to obtain a local copy of -all the source code needed to build @var{packages}, allowing you to -eventually build them even without network access. It is an extension of -the @code{--source} option and can accept one of the following optional -argument values: +Den Quellcode für @var{Paket-oder-Ableitung} und alle Abhängigkeiten davon +rekursiv herunterladen und zurückliefern. Dies ist eine praktische Methode, +eine lokale Kopie des gesamten Quellcodes zu beziehen, der nötig ist, um die +Pakete zu erstellen, damit Sie diese später auch ohne Netzwerkzugang +erstellen lassen können. Es handelt sich um eine Erweiterung der +Befehlszeilenoption @code{--source}, die jeden der folgenden Argumentwerte +akzeptiert: @table @code @item package -This value causes the @code{--sources} option to behave in the same way as -the @code{--source} option. +Mit diesem Wert verhält sich die Befehlszeilenoption @code{--sources} auf +genau die gleiche Weise wie die Befehlszeilenoption @code{--source}. @item all -Build the source derivations of all packages, including any source that -might be listed as @code{inputs}. This is the default value. +Erstellt die Quellcode-Ableitungen aller Pakete einschließlich allen +Quellcodes, der als Teil der Eingaben im @code{inputs}-Feld aufgelistet +ist. Dies ist der vorgegebene Wert, wenn sonst keiner angegeben wird. @example $ guix build --sources tzdata -The following derivations will be built: +Folgende Ableitungen werden erstellt: /gnu/store/@dots{}-tzdata2015b.tar.gz.drv /gnu/store/@dots{}-tzcode2015b.tar.gz.drv @end example @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 -for later offline building. +Die Quellcode-Ableitungen aller Pakete sowie aller transitiven Eingaben der +Pakete erstellen. Damit kann z.B.@: Paket-Quellcode vorab heruntergeladen +und später offline erstellt werden. @example $ guix build --sources=transitive tzdata -The following derivations will be built: +Folgende Ableitungen werden erstellt: /gnu/store/@dots{}-tzcode2015b.tar.gz.drv /gnu/store/@dots{}-findutils-4.4.2.tar.xz.drv /gnu/store/@dots{}-grep-2.21.tar.xz.drv @@ -8314,54 +8637,55 @@ The following derivations will be built: @item --system=@var{System} @itemx -s @var{System} Versuchen, für die angegebene Art von @var{System} geeignete Binärdateien zu -erstellen — z.B. @code{i686-linux} — statt für die Art von System, das die +erstellen — z.B.@: @code{i686-linux} — statt für die Art von System, das die Erstellung durchführt. @quotation Anmerkung -The @code{--system} flag is for @emph{native} compilation and must not be -confused with cross-compilation. See @code{--target} below for information -on cross-compilation. +Die Befehlszeilenoption @code{--system} dient der @emph{nativen} +Kompilierung (nicht zu verwechseln mit Cross-Kompilierung). Siehe +@code{--target} unten für Informationen zur Cross-Kompilierung. @end quotation -An example use of this is on Linux-based systems, which can emulate -different personalities. For instance, passing @code{--system=i686-linux} -on an @code{x86_64-linux} system or @code{--system=armhf-linux} on an -@code{aarch64-linux} system allows you to build packages in a complete -32-bit environment. +Ein Beispiel sind Linux-basierte Systeme, die verschiedene Persönlichkeiten +emulieren können. Zum Beispiel können Sie @code{--system=i686-linux} auf +einem @code{x86_64-linux}-System oder @code{--system=armhf-linux} auf einem +@code{aarch64-linux}-System angeben, um Pakete in einer vollständigen +32-Bit-Umgebung zu erstellen. @quotation Anmerkung -Building for an @code{armhf-linux} system is unconditionally enabled on -@code{aarch64-linux} machines, although certain aarch64 chipsets do not -allow for this functionality, notably the ThunderX. +Das Erstellen für ein @code{armhf-linux}-System ist ungeprüft auf allen +@code{aarch64-linux}-Maschinen aktiviert, obwohl bestimmte aarch64-Chipsätze +diese Funktionalität nicht unterstützen, darunter auch ThunderX. @end quotation -Similarly, when transparent emulation with QEMU and @code{binfmt_misc} is -enabled (@pxref{Virtualisierungsdienste, @code{qemu-binfmt-service-type}}), -you can build for any system for which a QEMU @code{binfmt_misc} handler is -installed. +Ebenso können Sie, wenn transparente Emulation mit QEMU und +@code{binfmt_misc} aktiviert sind (siehe @ref{Virtualisierungsdienste, +@code{qemu-binfmt-service-type}}), für jedes System Erstellungen +durchführen, für das ein QEMU-@code{binfmt_misc}-Handler installiert ist. -Builds for a system other than that of the machine you are using can also be -offloaded to a remote machine of the right architecture. @xref{Auslagern des Daemons einrichten}, for more information on offloading. +Erstellungen für ein anderes System, das nicht dem System der Maschine, die +Sie benutzen, entspricht, können auch auf eine entfernte Maschine mit der +richtigen Architektur ausgelagert werden. Siehe @ref{Auslagern des Daemons einrichten} +für mehr Informationen über das Auslagern. @item --target=@var{Tripel} @cindex Cross-Kompilieren Lässt für das angegebene @var{Tripel} cross-erstellen, dieses muss ein -gültiges GNU-Tripel wie z.B. @code{"mips64el-linux-gnu"} sein -(@pxref{Specifying target triplets, GNU configuration triplets,, autoconf, +gültiges GNU-Tripel wie z.B.@: @code{"mips64el-linux-gnu"} sein (siehe +@ref{Specifying target triplets, GNU configuration triplets,, autoconf, Autoconf}). @anchor{build-check} @item --check -@cindex determinism, checking -@cindex reproducibility, checking -Rebuild @var{package-or-derivation}, which are already available in the -store, and raise an error if the build results are not bit-for-bit -identical. +@cindex Determinismus, Überprüfung +@cindex Reproduzierbarkeit, Überprüfung +@var{Paket-oder-Ableitung} erneut erstellen, wenn diese bereits im Store +verfügbar ist, und einen Fehler melden, wenn die Erstellungsergebnisse nicht +Bit für Bit identisch sind. -This mechanism allows you to check whether previously installed substitutes -are genuine (@pxref{Substitute}), or whether the build result of a package -is deterministic. @xref{Aufruf von guix challenge}, for more background -information and tools. +Mit diesem Mechanismus können Sie überprüfen, ob zuvor installierte +Substitute unverfälscht sind (siehe @ref{Substitute}) oder auch ob das +Erstellungsergebnis eines Pakets deterministisch ist. Siehe @ref{Aufruf von guix challenge} für mehr Hintergrundinformationen und Werkzeuge. Wenn dies zusammen mit @option{--keep-failed} benutzt wird, bleiben die sich unterscheidenden Ausgaben im Store unter dem Namen @@ -8369,36 +8693,40 @@ unterscheidenden Ausgaben im Store unter dem Namen beiden Ergebnissen leicht erkannt werden. @item --repair -@cindex repairing store items +@cindex Reparieren von Store-Objekten @cindex Datenbeschädigung, Behebung -Attempt to repair the specified store items, if they are corrupt, by -re-downloading or rebuilding them. +Versuchen, die angegebenen Store-Objekte zu reparieren, wenn sie beschädigt +sind, indem sie neu heruntergeladen oder neu erstellt werden. -This operation is not atomic and thus restricted to @code{root}. +Diese Operation ist nicht atomar und nur der Administratornutzer @code{root} +kann sie verwenden. @item --derivations @itemx -d -Return the derivation paths, not the output paths, of the given packages. - -@item --root=@var{file} -@itemx -r @var{file} -@cindex GC roots, adding -@cindex garbage collector roots, adding -Make @var{file} a symlink to the result, and register it as a garbage -collector root. - -Consequently, the results of this @command{guix build} invocation are -protected from garbage collection until @var{file} is removed. When that -option is omitted, build results are eligible for garbage collection as soon -as the build completes. @xref{Aufruf von guix gc}, for more on GC roots. +Liefert die Ableitungspfade und @emph{nicht} die Ausgabepfade für die +angegebenen Pakete. + +@item --root=@var{Datei} +@itemx -r @var{Datei} +@cindex GC-Wurzeln, Hinzufügen +@cindex Müllsammlerwurzeln, Hinzufügen +Die @var{Datei} zu einer symbolischen Verknüpfung auf das Ergebnis machen +und als Müllsammlerwurzel registrieren. + +Dadurch wird das Ergebnis dieses Aufrufs von @command{guix build} vor dem +Müllsammler geschützt, bis die @var{Datei} gelöscht wird. Wird diese +Befehlszeilenoption @emph{nicht} angegeben, können Erstellungsergebnisse vom +Müllsammler geholt werden, sobald die Erstellung abgeschlossen ist. Siehe +@ref{Aufruf von guix gc} für mehr Informationen zu Müllsammlerwurzeln. @item --log-file -@cindex build logs, access -Return the build log file names or URLs for the given -@var{package-or-derivation}, or raise an error if build logs are missing. +@cindex Erstellungsprotokolle, Zugriff +Liefert die Dateinamen oder URLs der Erstellungsprotokolle für das +angegebene @var{Paket-oder-Ableitung} oder meldet einen Fehler, falls +Protokolldateien fehlen. -This works regardless of how packages or derivations are specified. For -instance, the following invocations are equivalent: +Dies funktioniert, egal wie die Pakete oder Ableitungen angegeben +werden. Zum Beispiel sind folgende Aufrufe alle äquivalent: @example guix build --log-file `guix build -d guile` @@ -8407,40 +8735,47 @@ guix build --log-file guile guix build --log-file -e '(@@ (gnu packages guile) guile-2.0)' @end example -If a log is unavailable locally, and unless @code{--no-substitutes} is -passed, the command looks for a corresponding log on one of the substitute -servers (as specified with @code{--substitute-urls}.) +Wenn ein Protokoll lokal nicht verfügbar ist und sofern +@code{--no-substitutes} nicht übergeben wurde, sucht der Befehl nach einem +entsprechenden Protokoll auf einem der Substitutserver (die mit +@code{--substitute-urls} angegeben werden können). -So for instance, imagine you want to see the build log of GDB on MIPS, but -you are actually on an @code{x86_64} machine: +Stellen Sie sich zum Beispiel vor, sie wollten das Erstellungsprotokoll von +GDB auf einem MIPS-System sehen, benutzen aber selbst eine +@code{x86_64}-Maschine: @example $ guix build --log-file gdb -s mips64el-linux https://@value{SUBSTITUTE-SERVER}/log/@dots{}-gdb-7.10 @end example -You can freely access a huge library of build logs! +So haben Sie umsonst Zugriff auf eine riesige Bibliothek von +Erstellungsprotokollen! @end table @node Fehlschläge beim Erstellen untersuchen @subsection Fehlschläge beim Erstellen untersuchen -@cindex build failures, debugging -When defining a new package (@pxref{Pakete definieren}), you will probably -find yourself spending some time debugging and tweaking the build until it -succeeds. To do that, you need to operate the build commands yourself in an -environment as close as possible to the one the build daemon uses. +@cindex Erstellungsfehler, Fehlersuche +Wenn Sie ein neues Paket definieren (siehe @ref{Pakete definieren}), werden +Sie sich vermutlich einige Zeit mit der Fehlersuche beschäftigen und die +Erstellung so lange anpassen, bis sie funktioniert. Dazu müssen Sie die +Erstellungsbefehle selbst in einer Umgebung benutzen, die der, die der +Erstellungsdaemon aufbaut, so ähnlich wie möglich ist. -To that end, the first thing to do is to use the @option{--keep-failed} or -@option{-K} option of @command{guix build}, which will keep the failed build -tree in @file{/tmp} or whatever directory you specified as @code{TMPDIR} -(@pxref{Aufruf von guix build, @code{--keep-failed}}). +Das Erste, was Sie dafür tun müssen, ist die Befehlszeilenoption +@option{--keep-failed} oder @option{-K} von @command{guix build} +einzusetzen, wodurch Verzeichnisbäume fehlgeschlagener Erstellungen in +@file{/tmp} oder dem von Ihnen als @code{TMPDIR} ausgewiesenen Verzeichnis +erhalten und nicht gelöscht werden (siehe @ref{Aufruf von guix build, +@code{--keep-failed}}). -From there on, you can @command{cd} to the failed build tree and source the -@file{environment-variables} file, which contains all the environment -variable definitions that were in place when the build failed. So let's say -you're debugging a build failure in package @code{foo}; a typical session -would look like this: +Im Anschluss können Sie mit @command{cd} in die Verzeichnisse dieses +fehlgeschlagenen Erstellungsbaums wechseln und mit @command{source} dessen +@file{environment-variables}-Datei laden, die alle +Umgebungsvariablendefinitionen enthält, die zum Zeitpunkt des Fehlschlags +der Erstellung galten. Sagen wir, Sie suchen Fehler in einem Paket +@code{foo}, dann würde eine typische Sitzung so aussehen: @example $ guix build foo -K @@ -8450,17 +8785,18 @@ $ source ./environment-variables $ cd foo-1.2 @end example -Now, you can invoke commands as if you were the daemon (almost) and -troubleshoot your build process. +Nun können Sie Befehle (fast) so aufrufen, als wären Sie der Daemon, und +Fehlerursachen in Ihrem Erstellungsprozess ermitteln. -Sometimes it happens that, for example, a package's tests pass when you run -them manually but they fail when the daemon runs them. This can happen -because the daemon runs builds in containers where, unlike in our -environment above, network access is missing, @file{/bin/sh} does not exist, -etc. (@pxref{Einrichten der Erstellungsumgebung}). +Manchmal passiert es, dass zum Beispiel die Tests eines Pakets erfolgreich +sind, wenn Sie sie manuell aufrufen, aber scheitern, wenn der Daemon sie +ausführt. Das kann passieren, weil der Daemon Erstellungen in isolierten +Umgebungen (»Containern«) durchführt, wo, anders als in der obigen Umgebung, +kein Netzwerkzugang möglich ist, @file{/bin/sh} nicht exisiert usw.@: (siehe +@ref{Einrichten der Erstellungsumgebung}). -In such cases, you may need to run inspect the build process from within a -container similar to the one the build daemon creates: +In solchen Fällen müssen Sie den Erstellungsprozess womöglich aus einer zu +der des Daemons ähnlichen isolierten Umgebung heraus ausprobieren: @example $ guix build -K foo @@ -8471,162 +8807,176 @@ $ guix environment --no-grafts -C foo --ad-hoc strace gdb [env]# cd foo-1.2 @end example -Here, @command{guix environment -C} creates a container and spawns a new -shell in it (@pxref{Aufruf von guix environment}). The @command{--ad-hoc -strace gdb} part adds the @command{strace} and @command{gdb} commands to the -container, which would may find handy while debugging. The -@option{--no-grafts} option makes sure we get the exact same environment, -with ungrafted packages (@pxref{Sicherheitsaktualisierungen}, for more info on grafts). +Hierbei erzeugt @command{guix environment -C} eine isolierte Umgebung und +öffnet darin eine Shell (siehe @ref{Aufruf von guix environment}). Der Teil +mit @command{--ad-hoc strace gdb} fügt die Befehle @command{strace} und +@command{gdb} zur isolierten Umgebung hinzu, die Sie gut gebrauchen könnten, +während Sie Fehler suchen. Wegen der Befehlszeilenoption +@option{--no-grafts} bekommen Sie haargenau dieselbe Umgebung ohne veredelte +Pakete (siehe @ref{Sicherheitsaktualisierungen} für mehr Informationen zu +Veredelungen). -To get closer to a container like that used by the build daemon, we can -remove @file{/bin/sh}: +Um der isolierten Umgebung des Erstellungsdaemons noch näher zu kommen, +können wir @file{/bin/sh} entfernen: @example [env]# rm /bin/sh @end example -(Don't worry, this is harmless: this is all happening in the throw-away -container created by @command{guix environment}.) +(Keine Sorge, das ist harmlos: All dies passiert nur in der zuvor von +@command{guix environment} erzeugten Wegwerf-Umgebung.) -The @command{strace} command is probably not in the search path, but we can -run: +Der Befehl @command{strace} befindet sich wahrscheinlich nicht in Ihrem +Suchpfad, aber wir können ihn so benutzen: @example [env]# $GUIX_ENVIRONMENT/bin/strace -f -o log make check @end example -In this way, not only you will have reproduced the environment variables the -daemon uses, you will also be running the build process in a container -similar to the one the daemon uses. +Auf diese Weise haben Sie nicht nur die Umgebungsvariablen, die der Daemon +benutzt, nachgebildet, sondern lassen auch den Erstellungsprozess in einer +isolierten Umgebung ähnlich der des Daemons laufen. @node Aufruf von guix edit -@section Invoking @command{guix edit} +@section @command{guix edit} aufrufen @cindex @command{guix edit} -@cindex package definition, editing -So many packages, so many source files! The @command{guix edit} command -facilitates the life of users and packagers by pointing their editor at the -source file containing the definition of the specified packages. For -instance: +@cindex Paketdefinition, Bearbeiten +So viele Pakete, so viele Quelldateien! Der Befehl @command{guix edit} +erleichtert das Leben von sowohl Nutzern als auch Paketentwicklern, indem er +Ihren Editor anweist, die Quelldatei mit der Definition des jeweiligen +Pakets zu bearbeiten. Zum Beispiel startet dies: @example guix edit gcc@@4.9 vim @end example @noindent -launches the program specified in the @code{VISUAL} or in the @code{EDITOR} -environment variable to view the recipe of GCC@tie{}4.9.3 and that of Vim. +das mit der Umgebungsvariablen @code{VISUAL} ode @code{EDITOR} angegebene +Programm und lässt es das Rezept von GCC@tie{}4.9.3 und von Vim anzeigen. -If you are using a Guix Git checkout (@pxref{Erstellung aus dem Git}), or have -created your own packages on @code{GUIX_PACKAGE_PATH} (@pxref{Paketmodule}), you will be able to edit the package recipes. In other cases, -you will be able to examine the read-only recipes for packages currently in -the store. +Wenn Sie ein Git-Checkout von Guix benutzen (siehe @ref{Erstellung aus dem Git}) +oder Ihre eigenen Pakete im @code{GUIX_PACKAGE_PATH} erstellt haben (siehe +@ref{Paketmodule}), werden Sie damit die Paketrezepte auch bearbeiten +können. Andernfalls werden Sie zumindest in die Lage versetzt, die nur +lesbaren Rezepte für sich im Moment im Store befindliche Pakete zu +untersuchen. @node Aufruf von guix download -@section Invoking @command{guix download} +@section @command{guix download} aufrufen @cindex @command{guix download} -@cindex downloading package sources -When writing a package definition, developers typically need to download a -source tarball, compute its SHA256 hash, and write that hash in the package -definition (@pxref{Pakete definieren}). The @command{guix download} tool -helps with this task: it downloads a file from the given URI, adds it to the -store, and prints both its file name in the store and its SHA256 hash. - -The fact that the downloaded file is added to the store saves bandwidth: -when the developer eventually tries to build the newly defined package with -@command{guix build}, the source tarball will not have to be downloaded -again because it is already in the store. It is also a convenient way to -temporarily stash files, which may be deleted eventually (@pxref{Aufruf von guix gc}). - -The @command{guix download} command supports the same URIs as used in -package definitions. In particular, it supports @code{mirror://} URIs. -@code{https} URIs (HTTP over TLS) are supported @emph{provided} the Guile -bindings for GnuTLS are available in the user's environment; when they are -not available, an error is raised. @xref{Guile Preparations, how to install -the GnuTLS bindings for Guile,, gnutls-guile, GnuTLS-Guile}, for more -information. - -@command{guix download} verifies HTTPS server certificates by loading the -certificates of X.509 authorities from the directory pointed to by the -@code{SSL_CERT_DIR} environment variable (@pxref{X.509-Zertifikate}), -unless @option{--no-check-certificate} is used. - -The following options are available: +@cindex Paketquellcode herunterladen +Wenn Entwickler einer Paketdefinition selbige schreiben, müssen diese +normalerweise einen Quellcode-Tarball herunterladen, seinen SHA256-Hash als +Prüfsumme berechnen und diese in der Paketdefinition eintragen (siehe +@ref{Pakete definieren}). Das Werkzeug @command{guix download} hilft bei +dieser Aufgabe: Damit wird eine Datei von der angegebenen URI +heruntergeladen, in den Store eingelagert und sowohl ihr Dateiname im Store +als auch ihr SHA256-Hash als Prüfsumme angezeigt. + +Dadurch, dass die heruntergeladene Datei in den Store eingefügt wird, wird +Bandbreite gespart: Wenn der Entwickler schließlich versucht, das neu +definierte Paket mit @command{guix build} zu erstellen, muss der +Quell-Tarball nicht erneut heruntergeladen werden, weil er sich bereits im +Store befindet. Es ist auch eine bequeme Methode, Dateien temporär +aufzubewahren, die letztlich irgendwann gelöscht werden (siehe @ref{Aufruf von guix gc}). + +Der Befehl @command{guix download} unterstützt dieselben URIs, die in +Paketdefinitionen verwendet werden. Insbesondere unterstützt er +@code{mirror://}-URIs. @code{https}-URIs (HTTP über TLS) werden unterstützt, +@emph{vorausgesetzt} die Guile-Anbindungen für GnuTLS sind in der Umgebung +des Benutzers verfügbar; wenn nicht, wird ein Fehler gemeldet. Siehe +@ref{Guile Preparations, how to install the GnuTLS bindings for Guile,, +gnutls-guile, GnuTLS-Guile}, hat mehr Informationen. + +Mit @command{guix download} werden HTTPS-Serverzertifikate verifiziert, +indem die Zertifikate der X.509-Autoritäten in das durch die +Umgebungsvariable @code{SSL_CERT_DIR} bezeichnete Verzeichnis +heruntergeladen werden (siehe @ref{X.509-Zertifikate}), außer +@option{--no-check-certificate} wird benutzt. + +Folgende Befehlszeilenoptionen stehen zur Verfügung: @table @code -@item --format=@var{fmt} -@itemx -f @var{fmt} -Write the hash in the format specified by @var{fmt}. For more information -on the valid values for @var{fmt}, @pxref{Aufruf von guix hash}. +@item --format=@var{Format} +@itemx -f @var{Format} +Die Hash-Prüfsumme im angegebenen @var{Format} ausgeben. Für weitere +Informationen, was gültige Werte für das @var{Format} sind, siehe +@ref{Aufruf von guix hash}. @item --no-check-certificate -Do not validate the X.509 certificates of HTTPS servers. +X.509-Zertifikate von HTTPS-Servern @emph{nicht} validieren. -When using this option, you have @emph{absolutely no guarantee} that you are -communicating with the authentic server responsible for the given URL, which -makes you vulnerable to ``man-in-the-middle'' attacks. +Wenn Sie diese Befehlszeilenoption benutzen, haben Sie @emph{keinerlei +Garantie}, dass Sie tatsächlich mit dem authentischen Server, der für die +angegebene URL verantwortlich ist, kommunizieren. Das macht Sie anfällig +gegen sogenannte »Man-in-the-Middle«-Angriffe. -@item --output=@var{file} -@itemx -o @var{file} -Save the downloaded file to @var{file} instead of adding it to the store. +@item --output=@var{Datei} +@itemx -o @var{Datei} +Die heruntergeladene Datei @emph{nicht} in den Store, sondern in die +angegebene @var{Datei} abspeichern. @end table @node Aufruf von guix hash -@section Invoking @command{guix hash} +@section @command{guix hash} aufrufen @cindex @command{guix hash} -The @command{guix hash} command computes the SHA256 hash of a file. It is -primarily a convenience tool for anyone contributing to the distribution: it -computes the cryptographic hash of a file, which can be used in the -definition of a package (@pxref{Pakete definieren}). +Der Befehl @command{guix hash} berechnet den SHA256-Hash einer Datei. Er ist +primär ein Werkzeug, dass es bequemer macht, etwas zur Distribution +beizusteuern: Damit wird die kryptografische Hash-Prüfsumme berechnet, die +bei der Definition eines Pakets benutzt werden kann (siehe @ref{Pakete definieren}). Die allgemeine Syntax lautet: @example -guix hash @var{option} @var{file} +guix hash @var{Option} @var{Datei} @end example -When @var{file} is @code{-} (a hyphen), @command{guix hash} computes the -hash of data read from standard input. @command{guix hash} has the -following options: +Wird als @var{Datei} ein Bindestrich @code{-} angegeben, berechnet +@command{guix hash} den Hash der von der Standardeingabe gelesenen +Daten. @command{guix hash} unterstützt die folgenden Optionen: @table @code -@item --format=@var{fmt} -@itemx -f @var{fmt} -Write the hash in the format specified by @var{fmt}. +@item --format=@var{Format} +@itemx -f @var{Format} +Gibt die Prüfsumme im angegebenen @var{Format} aus. -Supported formats: @code{nix-base32}, @code{base32}, @code{base16} -(@code{hex} and @code{hexadecimal} can be used as well). +Unterstützte Formate: @code{nix-base32}, @code{base32}, @code{base16} +(@code{hex} und @code{hexadecimal} können auch benutzt werden). -If the @option{--format} option is not specified, @command{guix hash} will -output the hash in @code{nix-base32}. This representation is used in the -definitions of packages. +Wird keine Befehlszeilenoption @option{--format} angegeben, wird +@command{guix hash} die Prüfsumme im @code{nix-base32}-Format +ausgeben. Diese Darstellung wird bei der Definition von Paketen benutzt. @item --recursive @itemx -r -Compute the hash on @var{file} recursively. +Die Prüfsumme der @var{Datei} rekursiv berechnen. @c FIXME: Replace xref above with xref to an ``Archive'' section when @c it exists. -In this case, the hash is computed on an archive containing @var{file}, -including its children if it is a directory. Some of the metadata of -@var{file} is part of the archive; for instance, when @var{file} is a -regular file, the hash is different depending on whether @var{file} is -executable or not. Metadata such as time stamps has no impact on the hash -(@pxref{Aufruf von guix archive}). +In diesem Fall wird die Prüfsumme eines Archivs berechnet, das die +@var{Datei} enthält, und auch ihre Kinder, wenn es sich um ein Verzeichnis +handelt. Einige der Metadaten der @var{Datei} sind Teil dieses Archivs. Zum +Beispiel unterscheidet sich die berechnete Prüfsumme, wenn die @var{Datei} +eine reguläre Datei ist, je nachdem, ob die @var{Datei} ausführbar ist oder +nicht. Metadaten wie der Zeitstempel haben keinen Einfluss auf die Prüfsumme +(siehe @ref{Aufruf von guix archive}). @item --exclude-vcs @itemx -x -When combined with @option{--recursive}, exclude version control system -directories (@file{.bzr}, @file{.git}, @file{.hg}, etc.) +Wenn dies zusammen mit der Befehlszeilenoption @option{--recursive} +angegeben wird, werden Verzeichnisse zur Versionskontrolle (@file{.bzr}, +@file{.git}, @file{.hg}, etc.)@: vom Archiv ausgenommen. @vindex git-fetch -As an example, here is how you would compute the hash of a Git checkout, -which is useful when using the @code{git-fetch} method (@pxref{»origin«-Referenz}): +Zum Beispiel würden Sie auf diese Art die Prüfsumme eines Git-Checkouts +berechnen, was nützlich ist, wenn Sie die Prüfsumme für die Methode +@code{git-fetch} benutzen (siehe @ref{»origin«-Referenz}): @example $ git clone http://example.org/foo.git @@ -8636,64 +8986,70 @@ $ guix hash -rx . @end table @node Aufruf von guix import -@section Invoking @command{guix import} - -@cindex importing packages -@cindex package import -@cindex package conversion -@cindex Invoking @command{guix import} -The @command{guix import} command is useful for people who would like to add -a package to the distribution with as little work as possible---a legitimate -demand. The command knows of a few repositories from which it can -``import'' package metadata. The result is a package definition, or a -template thereof, in the format we know (@pxref{Pakete definieren}). +@section @command{guix import} aufrufen + +@cindex Pakete importieren +@cindex Paketimport +@cindex Pakete an Guix anpassen +@cindex @command{guix import} aufrufen +Der Befehl @command{guix import} ist für Leute hilfreich, die ein Paket +gerne mit so wenig Arbeit wie möglich zur Distribution hinzufügen würden — +ein legitimer Anspruch. Der Befehl kennt ein paar Sammlungen, aus denen mit +ihm Paketmetadaten »importiert« werden können. Das Ergebnis ist eine +Paketdefinition oder eine Vorlage dafür in dem uns bekannten Format (siehe +@ref{Pakete definieren}). Die allgemeine Syntax lautet: @example -guix import @var{importer} @var{options}@dots{} +guix import @var{Importer} @var{Optionen}@dots{} @end example -@var{importer} specifies the source from which to import package metadata, -and @var{options} specifies a package identifier and other options specific -to @var{importer}. Currently, the available ``importers'' are: +Der @var{Importer} gibt die Quelle an, aus der Paketmetadaten importiert +werden, und die @var{Optionen} geben eine Paketbezeichnung und andere vom +@var{Importer} abhängige Daten an. Derzeit sind folgende »Importer« +verfügbar: @table @code @item gnu -Import metadata for the given GNU package. This provides a template for the -latest version of that GNU package, including the hash of its source -tarball, and its canonical synopsis and description. +Metadaten für das angegebene GNU-Paket importieren. Damit wird eine Vorlage +für die neueste Version dieses GNU-Pakets zur Verfügung gestellt, +einschließlich der Prüfsumme seines Quellcode-Tarballs, seiner kanonischen +Zusammenfassung und seiner Beschreibung. -Additional information such as the package dependencies and its license -needs to be figured out manually. +Zusätzliche Informationen wie Paketabhängigkeiten und seine Lizenz müssen +noch manuell ermittelt werden. -For example, the following command returns a package definition for +Zum Beispiel liefert der folgende Befehl eine Paketdefinition für GNU@tie{}Hello: @example guix import gnu hello @end example -Specific command-line options are: +Speziell für diesen Importer stehen noch folgende Befehlszeilenoptionen zur +Verfügung: @table @code -@item --key-download=@var{policy} -As for @code{guix refresh}, specify the policy to handle missing OpenPGP -keys when verifying the package signature. @xref{Aufruf von guix refresh, +@item --key-download=@var{Richtlinie} +Die Richtlinie zum Umgang mit fehlenden OpenPGP-Schlüsseln beim Verifizieren +der Paketsignatur (auch »Beglaubigung« genannt) festlegen, wie bei +@code{guix refresh}. Siehe @ref{Aufruf von guix refresh, @code{--key-download}}. @end table @item pypi @cindex pypi -Import metadata from the @uref{https://pypi.python.org/, Python Package -Index}. Information is taken from the JSON-formatted description available -at @code{pypi.python.org} and usually includes all the relevant information, -including package dependencies. For maximum efficiency, it is recommended -to install the @command{unzip} utility, so that the importer can unzip -Python wheels and gather data from them. +Metadaten aus dem @uref{https://pypi.python.org/, Python Package Index} +importieren. Informationen stammen aus der JSON-formatierten Beschreibung, +die unter @code{pypi.python.org} verfügbar ist, und enthalten meistens alle +relevanten Informationen einschließlich der Abhängigkeiten des Pakets. Für +maximale Effizienz wird empfohlen, das Hilfsprogramm @command{unzip} zu +installieren, damit der Importer »Python Wheels« entpacken und daraus Daten +beziehen kann. -The command below imports metadata for the @code{itsdangerous} Python -package: +Der folgende Befehl importiert Metadaten für das Python-Paket namens +@code{itsdangerous}: @example guix import pypi itsdangerous @@ -8702,22 +9058,25 @@ guix import pypi itsdangerous @table @code @item --recursive @itemx -r -Traverse the dependency graph of the given upstream package recursively and -generate package expressions for all those packages that are not yet in -Guix. +Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv +durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in +Guix noch nicht gibt. @end table @item gem @cindex gem -Import metadata from @uref{https://rubygems.org/, RubyGems}. Information is -taken from the JSON-formatted description available at @code{rubygems.org} -and includes most relevant information, including runtime dependencies. -There are some caveats, however. The metadata doesn't distinguish between -synopses and descriptions, so the same string is used for both fields. -Additionally, the details of non-Ruby dependencies required to build native -extensions is unavailable and left as an exercise to the packager. +Metadaten von @uref{https://rubygems.org/, RubyGems} +importieren. Informationen kommen aus der JSON-formatierten Beschreibung, +die auf @code{rubygems.org} verfügbar ist, und enthält die relevantesten +Informationen einschließlich der Laufzeitabhängigkeiten. Dies hat aber auch +Schattenseiten — die Metadaten unterscheiden nicht zwischen +Zusammenfassungen und Beschreibungen, daher wird dieselbe Zeichenkette für +beides eingesetzt. Zudem fehlen Informationen zu nicht in Ruby geschriebenen +Abhängigkeiten, die benötigt werden, um native Erweiterungen zu in Ruby +geschriebenem Code zu erstellen. Diese herauszufinden bleibt dem +Paketentwickler überlassen. -The command below imports metadata for the @code{rails} Ruby package: +Der folgende Befehl importiert Metadaten aus dem Ruby-Paket @code{rails}. @example guix import gem rails @@ -8726,23 +9085,24 @@ guix import gem rails @table @code @item --recursive @itemx -r -Traverse the dependency graph of the given upstream package recursively and -generate package expressions for all those packages that are not yet in -Guix. +Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv +durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in +Guix noch nicht gibt. @end table @item cpan @cindex CPAN -Import metadata from @uref{https://www.metacpan.org/, MetaCPAN}. -Information is taken from the JSON-formatted metadata provided through -@uref{https://fastapi.metacpan.org/, MetaCPAN's API} and includes most -relevant information, such as module dependencies. License information -should be checked closely. If Perl is available in the store, then the -@code{corelist} utility will be used to filter core modules out of the list -of dependencies. +Importiert Metadaten von @uref{https://www.metacpan.org/, +MetaCPAN}. Informationen werden aus den JSON-formatierten Metadaten +genommen, die über die @uref{https://fastapi.metacpan.org/, +Programmierschnittstelle (»API«) von MetaCPAN} angeboten werden, und +enthalten die relevantesten Informationen wie zum Beispiel +Modulabhängigkeiten. Lizenzinformationen sollten genau nachgeprüft +werden. Wenn Perl im Store verfügbar ist, wird das Werkzeug @code{corelist} +benutzt, um Kernmodule in der Abhängigkeitsliste wegzulassen. -The command command below imports metadata for the @code{Acme::Boolean} Perl -module: +Folgender Befehl importiert Metadaten für das Perl-Modul +@code{Acme::Boolean}: @example guix import cpan Acme::Boolean @@ -8751,31 +9111,35 @@ guix import cpan Acme::Boolean @item cran @cindex CRAN @cindex Bioconductor -Import metadata from @uref{https://cran.r-project.org/, CRAN}, the central -repository for the @uref{http://r-project.org, GNU@tie{}R statistical and -graphical environment}. +Metadaten aus dem @uref{https://cran.r-project.org/, CRAN} importieren, der +zentralen Sammlung für die @uref{http://r-project.org, statistische und +grafische Umgebung GNU@tie{}R}. -Information is extracted from the @code{DESCRIPTION} file of the package. +Informationen werden aus der Datei namens @code{DESCRIPTION} des Pakets +extrahiert. -The command command below imports metadata for the @code{Cairo} R package: +Der folgende Befehl importiert Metadaten für das @code{Cairo}-R-Paket: @example guix import cran Cairo @end example -When @code{--recursive} is added, the importer will traverse the dependency -graph of the given upstream package recursively and generate package -expressions for all those packages that are not yet in Guix. +Wird zudem @code{--recursive} angegeben, wird der Importer den +Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv +durchlaufen und Paketausdrücke für all die Pakete erzeugen, die noch nicht +Teil von Guix sind. -When @code{--archive=bioconductor} is added, metadata is imported from -@uref{https://www.bioconductor.org/, Bioconductor}, a repository of R -packages for for the analysis and comprehension of high-throughput genomic -data in bioinformatics. +Wird @code{--archive=bioconductor} angegeben, werden Metadaten vom +@uref{https://www.bioconductor.org/, Bioconductor} importiert, einer +Sammlung von R-Paketen zur Analyse und zum Verständnis von großen Mengen +genetischer Daten in der Bioinformatik. -Information is extracted from the @code{DESCRIPTION} file of a package -published on the web interface of the Bioconductor SVN repository. +Informationen werden aus der @code{DESCRIPTION}-Datei im Paket extrahiert, +das auf der Weboberfläche des Bioconductor-SVN-Repositorys veröffentlicht +wurde. -The command below imports metadata for the @code{GenomicRanges} R package: +Der folgende Befehl importiert Metadaten für das R-Paket +@code{GenomicRanges}: @example guix import cran --archive=bioconductor GenomicRanges @@ -8784,38 +9148,39 @@ guix import cran --archive=bioconductor GenomicRanges @item texlive @cindex TeX Live @cindex CTAN -Import metadata from @uref{http://www.ctan.org/, CTAN}, the comprehensive -TeX archive network for TeX packages that are part of the -@uref{https://www.tug.org/texlive/, TeX Live distribution}. +Metadaten aus @uref{http://www.ctan.org/, CTAN}, dem umfassenden +TeX-Archivnetzwerk, herunterladen, was für TeX-Pakete benutzt wird, die Teil +der @uref{https://www.tug.org/texlive/, TeX-Live-Distribution} sind. -Information about the package is obtained through the XML API provided by -CTAN, while the source code is downloaded from the SVN repository of the Tex -Live project. This is done because the CTAN does not keep versioned -archives. +Informationen über das Paket werden über die von CTAN angebotene +XML-Programmierschnittstelle bezogen, wohingegen der Quellcode aus dem +SVN-Repository des TeX-Live-Projekts heruntergeladen wird. Das wird so +gemacht, weil CTAN keine versionierten Archive vorhält. -The command command below imports metadata for the @code{fontspec} TeX -package: +Der folgende Befehl importiert Metadaten für das TeX-Paket @code{fontspec}: @example guix import texlive fontspec @end example -When @code{--archive=DIRECTORY} is added, the source code is downloaded not -from the @file{latex} sub-directory of the @file{texmf-dist/source} tree in -the TeX Live SVN repository, but from the specified sibling directory under -the same root. +Wenn @code{--archive=VERZEICHNIS} angegeben wird, wird der Quellcode +@emph{nicht} aus dem Unterverzeichnis @file{latex} des +@file{texmf-dist/source}-Baums im SVN-Repository von TeX Live +heruntergeladen, sondern aus dem angegebenen Schwesterverzeichnis im selben +Wurzelverzeichnis. -The command below imports metadata for the @code{ifxetex} package from CTAN -while fetching the sources from the directory @file{texmf/source/generic}: +Der folgende Befehl importiert Metadaten für das Paket @code{ifxetex} aus +CTAN und lädt die Quelldateien aus dem Verzeichnis +@file{texmf/source/generic}: @example guix import texlive --archive=generic ifxetex @end example @item json -@cindex JSON, import -Import package metadata from a local JSON file. Consider the following -example package definition in JSON format: +@cindex JSON, Import +Paketmetadaten aus einer lokalen JSON-Datei importieren. Betrachten Sie +folgende Beispiel-Paketdefinition im JSON-Format: @example @{ @@ -8831,13 +9196,13 @@ example package definition in JSON format: @} @end example -The field names are the same as for the @code{<package>} record -(@xref{Pakete definieren}). References to other packages are provided as -JSON lists of quoted package specification strings such as @code{guile} or -@code{guile@@2.0}. +Die Felder sind genauso benannt wie bei einem @code{<package>}-Verbundstyp +(siehe @ref{Pakete definieren}). Referenzen zu anderen Paketen stehen darin +als JSON-Liste von mit Anführungszeichen quotierten Zeichenketten wie +@code{guile} oder @code{guile@@2.0}. -The importer also supports a more explicit source definition using the -common fields for @code{<origin>} records: +Der Importer unterstützt auch eine ausdrücklichere Definition der +Quelldateien mit den üblichen Feldern eines @code{<origin>}-Verbunds: @example @{ @@ -8853,37 +9218,38 @@ common fields for @code{<origin>} records: @} @end example -The command below reads metadata from the JSON file @code{hello.json} and -outputs a package expression: +Der folgende Befehl liest Metadaten aus der JSON-Datei @code{hello.json} und +gibt einen Paketausdruck aus: @example guix import json hello.json @end example @item nix -Import metadata from a local copy of the source of the -@uref{http://nixos.org/nixpkgs/, Nixpkgs distribution}@footnote{This relies -on the @command{nix-instantiate} command of @uref{http://nixos.org/nix/, -Nix}.}. Package definitions in Nixpkgs are typically written in a mixture -of Nix-language and Bash code. This command only imports the high-level -package structure that is written in the Nix language. It normally includes -all the basic fields of a package definition. +Metadaten aus einer lokalen Kopie des Quellcodes der +@uref{http://nixos.org/nixpkgs/, Nixpkgs-Distribution} +importieren@footnote{Dazu wird der Befehl @command{nix-instantiate} von +@uref{http://nixos.org/nix/, Nix} verwendet.}. Paketdefinitionen in Nixpkgs +werden typischerweise in einer Mischung aus der Sprache von Nix und aus +Bash-Code geschrieben. Dieser Befehl wird nur die abstrakte Paketstruktur, +die in der Nix-Sprache geschrieben ist, importieren. Dazu gehören +normalerweise alle grundlegenden Felder einer Paketdefinition. -When importing a GNU package, the synopsis and descriptions are replaced by -their canonical upstream variant. +Beim Importieren eines GNU-Pakets werden Zusammenfassung und Beschreibung +stattdessen durch deren kanonische Variante bei GNU ersetzt. -Usually, you will first need to do: +Normalerweise würden Sie zunächst dies ausführen: @example export NIX_REMOTE=daemon @end example @noindent -so that @command{nix-instantiate} does not try to open the Nix database. +damit @command{nix-instantiate} nicht versucht, die Nix-Datenbank zu öffnen. -As an example, the command below imports the package definition of -LibreOffice (more precisely, it imports the definition of the package bound -to the @code{libreoffice} top-level attribute): +Zum Beispiel importiert der Befehl unten die Paketdefinition von LibreOffice +(genauer gesagt importiert er die Definition des an das Attribut +@code{libreoffice} auf oberster Ebene gebundenen Pakets): @example guix import nix ~/path/to/nixpkgs libreoffice @@ -8891,47 +9257,50 @@ guix import nix ~/path/to/nixpkgs libreoffice @item hackage @cindex hackage -Import metadata from the Haskell community's central package archive -@uref{https://hackage.haskell.org/, Hackage}. Information is taken from -Cabal files and includes all the relevant information, including package -dependencies. +Metadaten aus @uref{https://hackage.haskell.org/, Hackage}, dem zentralen +Paketarchiv der Haskell-Gemeinde, importieren. Informationen werden aus +Cabal-Dateien ausgelesen. Darin sind alle relevanten Informationen +einschließlich der Paketabhängigkeiten enthalten. -Specific command-line options are: +Speziell für diesen Importer stehen noch folgende Befehlszeilenoptionen zur +Verfügung: @table @code @item --stdin @itemx -s -Read a Cabal file from standard input. +Eine Cabal-Datei von der Standardeingabe lesen. @item --no-test-dependencies @itemx -t -Do not include dependencies required only by the test suites. -@item --cabal-environment=@var{alist} -@itemx -e @var{alist} -@var{alist} is a Scheme alist defining the environment in which the Cabal -conditionals are evaluated. The accepted keys are: @code{os}, @code{arch}, -@code{impl} and a string representing the name of a flag. The value -associated with a flag has to be either the symbol @code{true} or -@code{false}. The value associated with other keys has to conform to the -Cabal file format definition. The default value associated with the keys -@code{os}, @code{arch} and @code{impl} is @samp{linux}, @samp{x86_64} and -@samp{ghc}, respectively. +Keine Abhängigkeiten übernehmen, die nur von Testkatalogen benötigt werden. +@item --cabal-environment=@var{Aliste} +@itemx -e @var{Aliste} +@var{Aliste} muss eine assoziative Liste der Scheme-Programmiersprache sein, +die die Umgebung definiert, in der bedingte Ausdrücke von Cabal ausgewertet +werden. Dabei werden folgende Schlüssel akzeptiert: @code{os}, @code{arch}, +@code{impl} und eine Zeichenkette, die dem Namen einer Option (einer »Flag«) +entspricht. Der mit einer »Flag« assoziierte Wert muss entweder das Symbol +@code{true} oder @code{false} sein. Der anderen Schlüsseln zugeordnete Wert +muss mit der Definition des Cabal-Dateiformats konform sein. Der vorgegebene +Wert zu den Schlüsseln @code{os}, @code{arch} and @code{impl} ist jeweils +@samp{linux}, @samp{x86_64} bzw. @samp{ghc}. @item --recursive @itemx -r -Traverse the dependency graph of the given upstream package recursively and -generate package expressions for all those packages that are not yet in -Guix. +Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv +durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in +Guix noch nicht gibt. @end table -The command below imports metadata for the latest version of the @code{HTTP} -Haskell package without including test dependencies and specifying the value -of the flag @samp{network-uri} as @code{false}: +Der folgende Befehl importiert Metadaten für die neuste Version des +Haskell-@code{HTTP}-Pakets, ohne Testabhängigkeiten zu übernehmen und bei +Übergabe von @code{false} als Wert der Flag @samp{network-uri}: @example guix import hackage -t -e "'((\"network-uri\" . false))" HTTP @end example -A specific package version may optionally be specified by following the -package name by an at-sign and a version number as in the following example: +Eine ganz bestimmte Paketversion kann optional ausgewählt werden, indem man +nach dem Paketnamen anschließend ein At-Zeichen und eine Versionsnummer +angibt wie in folgendem Beispiel: @example guix import hackage mtl@@2.1.3.1 @@ -8939,31 +9308,36 @@ guix import hackage mtl@@2.1.3.1 @item stackage @cindex stackage -The @code{stackage} importer is a wrapper around the @code{hackage} one. It -takes a package name, looks up the package version included in a long-term -support (LTS) @uref{https://www.stackage.org, Stackage} release and uses the -@code{hackage} importer to retrieve its metadata. Note that it is up to you -to select an LTS release compatible with the GHC compiler used by Guix. - -Specific command-line options are: +Der @code{stackage}-Importer ist ein Wrapper um den +@code{hackage}-Importer. Er nimmt einen Paketnamen und schaut dafür die +Paketversion nach, die Teil einer @uref{https://www.stackage.org, +Stackage}-Veröffentlichung mit Langzeitunterstützung (englisch »Long-Term +Support«, kurz LTS) ist, deren Metadaten er dann mit dem +@code{hackage}-Importer bezieht. Beachten Sie, dass es Ihre Aufgabe ist, +eine LTS-Veröffentlichung auszuwählen, die mit dem von Guix benutzten +GHC-Compiler kompatibel ist. + +Speziell für diesen Importer stehen noch folgende Befehlszeilenoptionen zur +Verfügung: @table @code @item --no-test-dependencies @itemx -t -Do not include dependencies required only by the test suites. -@item --lts-version=@var{version} +Keine Abhängigkeiten übernehmen, die nur von Testkatalogen benötigt werden. +@item --lts-version=@var{Version} @itemx -l @var{Version} -@var{version} is the desired LTS release version. If omitted the latest -release is used. +@var{Version} ist die gewünschte Version der LTS-Veröffentlichung. Wird +keine angegeben, wird die neueste benutzt. @item --recursive @itemx -r -Traverse the dependency graph of the given upstream package recursively and -generate package expressions for all those packages that are not yet in -Guix. +Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv +durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in +Guix noch nicht gibt. @end table -The command below imports metadata for the @code{HTTP} Haskell package -included in the LTS Stackage release version 7.18: +Der folgende Befehl importiert Metadaten für dasjenige +@code{HTTP}-Haskell-Paket, das in der LTS-Stackage-Veröffentlichung mit +Version 7.18 vorkommt: @example guix import stackage --lts-version=7.18 HTTP @@ -8971,67 +9345,67 @@ guix import stackage --lts-version=7.18 HTTP @item elpa @cindex elpa -Import metadata from an Emacs Lisp Package Archive (ELPA) package repository -(@pxref{Packages,,, emacs, The GNU Emacs Manual}). +Metadaten aus der Paketsammlung »Emacs Lisp Package Archive« (ELPA) +importieren (siehe @ref{Packages,,, emacs, The GNU Emacs Manual}). -Specific command-line options are: +Speziell für diesen Importer stehen noch folgende Befehlszeilenoptionen zur +Verfügung: @table @code -@item --archive=@var{repo} -@itemx -a @var{repo} -@var{repo} identifies the archive repository from which to retrieve the -information. Currently the supported repositories and their identifiers -are: +@item --archive=@var{Repo} +@itemx -a @var{Repo} +Mit @var{Repo} wird die Archiv-Sammlung (ein »Repository«) bezeichnet, von +dem die Informationen bezogen werden sollen. Derzeit sind die unterstützten +Repositorys und ihre Bezeichnungen folgende: @itemize - @item -@uref{http://elpa.gnu.org/packages, GNU}, selected by the @code{gnu} -identifier. This is the default. +@uref{http://elpa.gnu.org/packages, GNU}, bezeichnet mit @code{gnu}. Dies +ist die Vorgabe. -Packages from @code{elpa.gnu.org} are signed with one of the keys contained -in the GnuPG keyring at @file{share/emacs/25.1/etc/package-keyring.gpg} (or -similar) in the @code{emacs} package (@pxref{Package Installation, ELPA -package signatures,, emacs, The GNU Emacs Manual}). +Pakete aus @code{elpa.gnu.org} wurden mit einem der Schlüssel im +GnuPG-Schlüsselbund in @file{share/emacs/25.1/etc/package-keyring.gpg} (oder +einem ähnlichen Pfad) des @code{emacs}-Pakets signiert (siehe @ref{Package +Installation, ELPA package signatures,, emacs, The GNU Emacs Manual}). @item -@uref{http://stable.melpa.org/packages, MELPA-Stable}, selected by the -@code{melpa-stable} identifier. +@uref{http://stable.melpa.org/packages, MELPA-Stable}, bezeichnet mit +@code{melpa-stable}. @item -@uref{http://melpa.org/packages, MELPA}, selected by the @code{melpa} -identifier. +@uref{http://melpa.org/packages, MELPA}, bezeichnet mit @code{melpa}. @end itemize @item --recursive @itemx -r -Traverse the dependency graph of the given upstream package recursively and -generate package expressions for all those packages that are not yet in -Guix. +Den Abhängigkeitsgraphen des angegebenen Pakets beim Anbieter rekursiv +durchlaufen und Paketausdrücke für alle solchen Pakete erzeugen, die es in +Guix noch nicht gibt. @end table @item crate @cindex crate -Import metadata from the crates.io Rust package repository +Metadaten aus der Paketsammlung crates.io für Rust importieren @uref{https://crates.io, crates.io}. @item opam @cindex OPAM @cindex OCaml -Import metadata from the @uref{https://opam.ocaml.org/, OPAM} package -repository used by the OCaml community. +Metadaten aus der Paketsammlung @uref{https://opam.ocaml.org/, OPAM} der +OCaml-Gemeinde importieren. @end table -The structure of the @command{guix import} code is modular. It would be -useful to have more importers for other package formats, and your help is -welcome here (@pxref{Mitwirken}). +@command{guix import} verfügt über eine modulare Code-Struktur. Mehr +Importer für andere Paketformate zu haben, wäre nützlich, und Ihre Hilfe ist +hierbei gerne gesehen (siehe @ref{Mitwirken}). @node Aufruf von guix refresh -@section Invoking @command{guix refresh} +@section @command{guix refresh} aufrufen @cindex @command{guix refresh} -The primary audience of the @command{guix refresh} command is developers of -the GNU software distribution. By default, it reports any packages provided -by the distribution that are outdated compared to the latest upstream -version, like this: +Die Zielgruppe des Befehls @command{guix refresh} zum Auffrischen von +Paketen sind in erster Linie Entwickler der GNU-Software-Distribution. Nach +Vorgabe werden damit alle Pakete in der Distribution gemeldet, die nicht der +neuesten Version des Anbieters entsprechen, indem Sie dies ausführen: @example $ guix refresh @@ -9039,8 +9413,9 @@ gnu/packages/gettext.scm:29:13: gettext would be upgraded from 0.18.1.1 to 0.18. gnu/packages/glib.scm:77:12: glib would be upgraded from 2.34.3 to 2.37.0 @end example -Alternately, one can specify packages to consider, in which case a warning -is emitted for packages that lack an updater: +Alternativ können die zu betrachtenden Pakete dabei angegeben werden, was +zur Ausgabe einer Warnung führt, wenn es für Pakete kein +Aktualisierungsprogramm gibt: @example $ guix refresh coreutils guile guile-ssh @@ -9048,13 +9423,15 @@ gnu/packages/ssh.scm:205:2: warning: no updater for guile-ssh gnu/packages/guile.scm:136:12: guile would be upgraded from 2.0.12 to 2.0.13 @end example -@command{guix refresh} browses the upstream repository of each package and -determines the highest version number of the releases therein. The command -knows how to update specific types of packages: GNU packages, ELPA packages, -etc.---see the documentation for @option{--type} below. There are many -packages, though, for which it lacks a method to determine whether a new -upstream release is available. However, the mechanism is extensible, so -feel free to get in touch with us to add a new method! +@command{guix refresh} durchsucht die Paketsammlung beim Anbieter jedes +Pakets und bestimmt, was die höchste Versionsnummer ist, zu der es dort eine +Veröffentlichung gibt. Zum Befehl gehören Aktualisierungsprogramme, mit +denen bestimmte Typen von Paketen automatisch aktualisiert werden können: +GNU-Pakete, ELPA-Pakete usw.@: — siehe die Dokumentation von @option{--type} +unten. Es gibt jedoch auch viele Pakete, für die noch keine Methode +enthalten ist, um das Vorhandensein einer neuen Veröffentlichung zu +prüfen. Der Mechanismus ist aber erweiterbar, also können Sie gerne mit uns +in Kontakt treten, wenn Sie eine neue Methode hinzufügen möchten! @table @code @@ -9073,10 +9450,11 @@ gnu/packages/multiprecision.scm:40:12: info: 6.1.2 is already the latest version @end table -Sometimes the upstream name differs from the package name used in Guix, and -@command{guix refresh} needs a little help. Most updaters honor the -@code{upstream-name} property in package definitions, which can be used to -that effect: +Manchmal unterscheidet sich der vom Anbieter benutzte Name von dem +Paketnamen, der in Guix verwendet wird, so dass @command{guix refresh} etwas +Unterstützung braucht. Die meisten Aktualisierungsprogramme folgen der +Eigenschaft @code{upstream-name} in Paketdefinitionen, die diese +Unterstützung bieten kann. @example (define-public network-manager @@ -9086,18 +9464,20 @@ that effect: (properties '((upstream-name . "NetworkManager"))))) @end example -When passed @code{--update}, it modifies distribution source files to update -the version numbers and source tarball hashes of those package recipes -(@pxref{Pakete definieren}). This is achieved by downloading each package's -latest source tarball and its associated OpenPGP signature, authenticating -the downloaded tarball against its signature using @command{gpg}, and -finally computing its hash. When the public key used to sign the tarball is -missing from the user's keyring, an attempt is made to automatically -retrieve it from a public key server; when this is successful, the key is -added to the user's keyring; otherwise, @command{guix refresh} reports an -error. +Wenn @code{--update} übergeben wird, werden die Quelldateien der +Distribution verändert, so dass für diese Paketrezepte die aktuelle Version +und die aktuelle Hash-Prüfsumme des Quellcode-Tarballs eingetragen wird +(siehe @ref{Pakete definieren}). Dazu werden der neueste Quellcode-Tarball +jedes Pakets sowie die jeweils zugehörige OpenPGP-Signatur heruntergeladen; +mit Letzterer wird der heruntergeladene Tarball gegen seine Signatur mit +@command{gpg} authentifiziert und schließlich dessen Hash berechnet. Wenn +der öffentliche Schlüssel, mit dem der Tarball signiert wurde, im +Schlüsselbund des Benutzers fehlt, wird versucht, ihn automatisch von einem +Schlüssel-Server zu holen; wenn das klappt, wird der Schlüssel zum +Schlüsselbund des Benutzers hinzugefügt, ansonsten meldet @command{guix +refresh} einen Fehler. -The following options are supported: +Die folgenden Befehlszeilenoptionen werden unterstützt: @table @code @@ -9105,88 +9485,99 @@ The following options are supported: @itemx -e @var{Ausdruck} Als Paket benutzen, wozu der @var{Ausdruck} ausgewertet wird. -This is useful to precisely refer to a package, as in this example: +Dies ist nützlich, um genau ein bestimmtes Paket zu referenzieren, wie in +diesem Beispiel: @example guix refresh -l -e '(@@@@ (gnu packages commencement) glibc-final)' @end example -This command lists the dependents of the ``final'' libc (essentially all the -packages.) +Dieser Befehls listet auf, was alles von der »endgültigen« Erstellung von +libc abhängt (praktisch alle Pakete). @item --update @itemx -u -Update distribution source files (package recipes) in place. This is -usually run from a checkout of the Guix source tree (@pxref{Guix vor der Installation ausführen}): +Die Quelldateien der Distribution (die Paketrezepte) werden direkt »in +place« verändert. Normalerweise führen Sie dies aus einem Checkout des +Guix-Quellbaums heraus aus (siehe @ref{Guix vor der Installation ausführen}): @example $ ./pre-inst-env guix refresh -s non-core -u @end example -@xref{Pakete definieren}, for more information on package definitions. +Siehe @ref{Pakete definieren} für mehr Informationen zu Paketdefinitionen. -@item --select=[@var{subset}] -@itemx -s @var{subset} -Select all the packages in @var{subset}, one of @code{core} or -@code{non-core}. +@item --select=[@var{Teilmenge}] +@itemx -s @var{Teilmenge} +Wählt alle Pakete aus der @var{Teilmenge} aus, die entweder @code{core} oder +@code{non-core} sein muss. -The @code{core} subset refers to all the packages at the core of the -distribution---i.e., packages that are used to build ``everything else''. -This includes GCC, libc, Binutils, Bash, etc. Usually, changing one of -these packages in the distribution entails a rebuild of all the others. -Thus, such updates are an inconvenience to users in terms of build time or -bandwidth used to achieve the upgrade. +Die @code{core}-Teilmenge bezieht sich auf alle Pakete, die den Kern der +Distribution ausmachen, d.h.@: Pakete, aus denen heraus »alles andere« +erstellt wird. Dazu gehören GCC, libc, Binutils, Bash und so weiter. In der +Regel ist die Folge einer Änderung an einem dieser Pakete in der +Distribution, dass alle anderen neu erstellt werden müssen. Daher sind +solche Änderungen unangenehm für Nutzer, weil sie einiges an Erstellungszeit +oder Bandbreite investieren müssen, um die Aktualisierung abzuschließen. -The @code{non-core} subset refers to the remaining packages. It is -typically useful in cases where an update of the core packages would be -inconvenient. +Die @code{non-core}-Teilmenge bezieht sich auf die übrigen Pakete. Sie wird +typischerweise dann benutzt, wenn eine Aktualisierung der Kernpakete zu +viele Umstände machen würde. @item --manifest=@var{Datei} @itemx -m @var{Datei} -Select all the packages from the manifest in @var{file}. This is useful to -check if any packages of the user manifest can be updated. - -@item --type=@var{updater} -@itemx -t @var{updater} -Select only packages handled by @var{updater} (may be a comma-separated list -of updaters). Currently, @var{updater} may be one of: +Wählt alle Pakete im in der @var{Datei} stehenden Manifest aus. Das ist +nützlich, um zu überprüfen, welche Pakete aus dem Manifest des Nutzers +aktualisiert werden können. + +@item --type=@var{Aktualisierungsprogramm} +@itemx -t @var{Aktualisierungsprogramm} +Nur solche Pakete auswählen, die vom angegebenen +@var{Aktualisierungsprogramm} behandelt werden. Es darf auch eine +kommagetrennte Liste mehrerer Aktualisierungsprogramme angegeben werden. Zur +Zeit kann als @var{Aktualisierungsprogramm} eines der folgenden angegeben +werden: @table @code @item gnu -the updater for GNU packages; +Aktualisierungsprogramm für GNU-Pakete, @item gnome -the updater for GNOME packages; +Aktualisierungsprogramm für GNOME-Pakete, @item kde -the updater for KDE packages; +Aktualisierungsprogramm für KDE-Pakete, @item xorg -the updater for X.org packages; +Aktualisierungsprogramm für X.org-Pakete, @item kernel.org -the updater for packages hosted on kernel.org; +Aktualisierungsprogramm auf kernel.org angebotener Pakete, @item elpa -the updater for @uref{http://elpa.gnu.org/, ELPA} packages; +Aktualisierungsprogramm für @uref{http://elpa.gnu.org/, ELPA-Pakete}, @item cran -the updater for @uref{https://cran.r-project.org/, CRAN} packages; +Aktualisierungsprogramm für @uref{https://cran.r-project.org/, CRAN-Pakete}, @item bioconductor -the updater for @uref{https://www.bioconductor.org/, Bioconductor} R -packages; +Aktualisierungsprogramm für R-Pakete vom +@uref{https://www.bioconductor.org/, Bioconductor}, @item cpan -the updater for @uref{http://www.cpan.org/, CPAN} packages; +Aktualisierungsprogramm für @uref{http://www.cpan.org/, CPAN-Pakete}, @item pypi -the updater for @uref{https://pypi.python.org, PyPI} packages. +Aktualisierungsprogramm für @uref{https://pypi.python.org, PyPI-Pakete}, @item gem -the updater for @uref{https://rubygems.org, RubyGems} packages. +Aktualisierungsprogramm für @uref{https://rubygems.org, RubyGems-Pakete}. @item github -the updater for @uref{https://github.com, GitHub} packages. +Aktualisierungsprogramm für @uref{https://github.com, GitHub-Pakete}. @item hackage -the updater for @uref{https://hackage.haskell.org, Hackage} packages. +Aktualisierungsprogramm für @uref{https://hackage.haskell.org, +Hackage-Pakete}. @item stackage -the updater for @uref{https://www.stackage.org, Stackage} packages. +Aktualisierungsprogramm für @uref{https://www.stackage.org, +Stackage-Pakete}. @item crate -the updater for @uref{https://crates.io, Crates} packages. +Aktualisierungsprogramm für @uref{https://crates.io, Crates-Pakete}. +@item launchpad +Aktualisierungsprogramm für @uref{https://launchpad.net, Launchpad}. @end table -For instance, the following command only checks for updates of Emacs -packages hosted at @code{elpa.gnu.org} and for updates of CRAN packages: +Zum Beispiel prüft folgender Befehl nur auf mögliche Aktualisierungen von +auf @code{elpa.gnu.org} angebotenen Emacs-Paketen und von CRAN-Paketen: @example $ guix refresh --type=elpa,cran @@ -9196,45 +9587,50 @@ gnu/packages/emacs.scm:856:13: emacs-auctex would be upgraded from 11.88.6 to 11 @end table -In addition, @command{guix refresh} can be passed one or more package names, -as in this example: +An @command{guix refresh} können auch ein oder mehrere Paketnamen übergeben +werden wie in diesem Beispiel: @example $ ./pre-inst-env guix refresh -u emacs idutils gcc@@4.8 @end example @noindent -The command above specifically updates the @code{emacs} and @code{idutils} -packages. The @code{--select} option would have no effect in this case. +Der Befehl oben aktualisiert speziell das @code{emacs}- und das +@code{idutils}-Paket. Eine Befehlszeilenoption @code{--select} hätte dann +keine Wirkung. -When considering whether to upgrade a package, it is sometimes convenient to -know which packages would be affected by the upgrade and should be checked -for compatibility. For this the following option may be used when passing -@command{guix refresh} one or more package names: +Wenn Sie sich fragen, ob ein Paket aktualisiert werden sollte oder nicht, +kann es helfen, sich anzuschauen, welche Pakete von der Aktualisierung +betroffen wären und auf Kompatibilität hin geprüft werden sollten. Dazu kann +die folgende Befehlszeilenoption zusammen mit einem oder mehreren Paketnamen +an @command{guix refresh} übergeben werden: @table @code @item --list-updaters @itemx -L -List available updaters and exit (see @option{--type} above.) +Eine Liste verfügbarer Aktualisierungsprogramme anzeigen und terminieren +(siehe @option{--type} oben). -For each updater, display the fraction of packages it covers; at the end, -display the fraction of packages covered by all these updaters. +Für jedes Aktualisierungsprogramm den Anteil der davon betroffenen Pakete +anzeigen; zum Schluss wird der Gesamtanteil von irgendeinem +Aktualisierungsprogramm betroffener Pakete angezeigt. @item --list-dependent @itemx -l -List top-level dependent packages that would need to be rebuilt as a result -of upgrading one or more packages. +Auflisten, welche abhängigen Pakete auf oberster Ebene neu erstellt werden +müssten, wenn eines oder mehrere Pakete aktualisiert würden. -@xref{Aufruf von guix graph, the @code{reverse-package} type of @command{guix -graph}}, for information on how to visualize the list of dependents of a -package. +Siehe @ref{Aufruf von guix graph, den @code{reverse-package}-Typ von +@command{guix graph}} für Informationen dazu, wie Sie die Liste der +Abhängigen eines Pakets visualisieren können. @end table -Be aware that the @code{--list-dependent} option only @emph{approximates} -the rebuilds that would be required as a result of an upgrade. More -rebuilds might be required under some circumstances. +Bedenken Sie, dass die Befehlszeilenoption @code{--list-dependent} das +Ausmaß der nach einer Aktualisierungen benötigten Neuerstellungen nur +@emph{annähert}. Es könnten auch unter Umständen mehr Neuerstellungen +anfallen. @example $ guix refresh --list-dependent flex @@ -9242,13 +9638,14 @@ Building the following 120 packages would ensure 213 dependent packages are rebu hop@@2.4.0 geiser@@0.4 notmuch@@0.18 mu@@0.9.9.5 cflow@@1.4 idutils@@4.6 @dots{} @end example -The command above lists a set of packages that could be built to check for -compatibility with an upgraded @code{flex} package. +Der oben stehende Befehl gibt einen Satz von Paketen aus, die Sie erstellen +wollen könnten, um die Kompatibilität einer Aktualisierung des +@code{flex}-Pakets beurteilen zu können. @table @code @item --list-transitive -List all the packages which one or more packages depend upon. +Die Pakete auflisten, von denen eines oder mehrere Pakete abhängen. @example $ guix refresh --list-transitive flex @@ -9258,110 +9655,123 @@ bison@@3.0.5 indent@@2.2.10 tar@@1.30 gzip@@1.9 bzip2@@1.0.6 xz@@5.2.4 file@@5.3 @end table -The command above lists a set of packages which, when changed, would cause -@code{flex} to be rebuilt. +Der oben stehende Befehl gibt einen Satz von Paketen aus, die, wenn sie +geändert würden, eine Neuerstellung des @code{flex}-Pakets auslösen würden. -The following options can be used to customize GnuPG operation: +Mit den folgenden Befehlszeilenoptionen können Sie das Verhalten von GnuPG +anpassen: @table @code -@item --gpg=@var{command} -Use @var{command} as the GnuPG 2.x command. @var{command} is searched for -in @code{$PATH}. +@item --gpg=@var{Befehl} +Den @var{Befehl} als GnuPG-2.x-Befehl einsetzen. Der @var{Befehl} wird im +@code{$PATH} gesucht. @item --keyring=@var{Datei} -Use @var{file} as the keyring for upstream keys. @var{file} must be in the -@dfn{keybox format}. Keybox files usually have a name ending in @file{.kbx} -and the GNU@tie{}Privacy Guard (GPG) can manipulate these files -(@pxref{kbxutil, @command{kbxutil},, gnupg, Using the GNU Privacy Guard}, -for information on a tool to manipulate keybox files). +Die @var{Datei} als Schlüsselbund mit Anbieterschlüsseln verwenden. Die +@var{Datei} muss im @dfn{Keybox-Format} vorliegen. Keybox-Dateien haben +normalerweise einen Namen, der auf @file{.kbx} endet. Sie können mit Hilfe +von GNU@tie{}Privacy Guard (GPG) bearbeitet werden (siehe @ref{kbxutil, +@command{kbxutil},, gnupg, Using the GNU Privacy Guard} für Informationen +über ein Werkzeug zum Bearbeiten von Keybox-Dateien). -When this option is omitted, @command{guix refresh} uses -@file{~/.config/guix/upstream/trustedkeys.kbx} as the keyring for upstream -signing keys. OpenPGP signatures are checked against keys from this -keyring; missing keys are downloaded to this keyring as well (see -@option{--key-download} below.) +Wenn diese Befehlszeilenoption nicht angegeben wird, benutzt @command{guix +refresh} die Keybox-Datei @file{~/.config/guix/upstream/trustedkeys.kbx} als +Schlüsselbund für Signierschlüssel von Anbietern. OpenPGP-Signaturen werden +mit Schlüsseln aus diesem Schlüsselbund überprüft; fehlende Schlüssel werden +auch in diesen Schlüsselbund heruntergeladen (siehe @option{--key-download} +unten). -You can export keys from your default GPG keyring into a keybox file using -commands like this one: +Sie können Schlüssel aus Ihrem normalerweise benutzten GPG-Schlüsselbund in +eine Keybox-Datei exportieren, indem Sie Befehle wie diesen benutzen: @example gpg --export rms@@gnu.org | kbxutil --import-openpgp >> mykeyring.kbx @end example -Likewise, you can fetch keys to a specific keybox file like this: +Ebenso können Sie wie folgt Schlüssel in eine bestimmte Keybox-Datei +herunterladen: @example gpg --no-default-keyring --keyring mykeyring.kbx \ --recv-keys @value{OPENPGP-SIGNING-KEY-ID} @end example -@ref{GPG Configuration Options, @option{--keyring},, gnupg, Using the GNU -Privacy Guard}, for more information on GPG's @option{--keyring} option. +Siehe @ref{GPG Configuration Options, @option{--keyring},, gnupg, Using the +GNU Privacy Guard} für mehr Informationen zur Befehlszeilenoption +@option{--keyring} von GPG. -@item --key-download=@var{policy} -Handle missing OpenPGP keys according to @var{policy}, which may be one of: +@item --key-download=@var{Richtlinie} +Fehlende OpenPGP-Schlüssel gemäß dieser @var{Richtlinie} behandeln, für die +eine der Folgenden angegeben werden kann: @table @code @item always -Always download missing OpenPGP keys from the key server, and add them to -the user's GnuPG keyring. +Immer fehlende OpenPGP-Schlüssel herunterladen und zum GnuPG-Schlüsselbund +des Nutzers hinzufügen. @item never -Never try to download missing OpenPGP keys. Instead just bail out. +Niemals fehlende OpenPGP-Schlüssel herunterladen, sondern einfach abbrechen. @item interactive -When a package signed with an unknown OpenPGP key is encountered, ask the -user whether to download it or not. This is the default behavior. +Ist ein Paket mit einem unbekannten OpenPGP-Schlüssel signiert, wird der +Nutzer gefragt, ob der Schlüssel heruntergeladen werden soll oder +nicht. Dies entspricht dem vorgegebenen Verhalten. @end table -@item --key-server=@var{host} -Use @var{host} as the OpenPGP key server when importing a public key. +@item --key-server=@var{Host} +Den mit @var{Host} bezeichneten Rechner als Schlüsselserver für OpenPGP +benutzen, wenn ein öffentlicher Schlüssel importiert wird. @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 -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. -Authentication with GitHub through the use of an API token alleviates these -limits. To use an API token, set the environment variable -@code{GUIX_GITHUB_TOKEN} to a token procured from -@uref{https://github.com/settings/tokens} or otherwise. +Das @code{github}-Aktualisierungsprogramm benutzt die +@uref{https://developer.github.com/v3/, GitHub-Programmierschnittstelle} +(die »Github-API«), um Informationen über neue Veröffentlichungen +einzuholen. Geschieht dies oft, z.B.@: beim Auffrischen aller Pakete, so +wird GitHub irgendwann aufhören, weitere API-Anfragen zu +beantworten. Normalerweise sind 60 API-Anfragen pro Stunde erlaubt, für eine +vollständige Auffrischung aller GitHub-Pakete in Guix werden aber mehr +benötigt. Wenn Sie sich bei GitHub mit Ihrem eigenen API-Token +authentisieren, gelten weniger einschränkende Grenzwerte. Um einen API-Token +zu benutzen, setzen Sie die Umgebungsvariable @code{GUIX_GITHUB_TOKEN} auf +einen von @uref{https://github.com/settings/tokens} oder anderweitig +bezogenen API-Token. @node Aufruf von guix lint -@section Invoking @command{guix lint} +@section @command{guix lint} aufrufen @cindex @command{guix lint} -@cindex package, checking for errors -The @command{guix lint} command is meant to help package developers avoid -common errors and use a consistent style. It runs a number of checks on a -given set of packages in order to find common mistakes in their -definitions. Available @dfn{checkers} include (see @code{--list-checkers} -for a complete list): +@cindex Pakete, auf Fehler prüfen +Den Befehl @command{guix lint} gibt es, um Paketentwicklern beim Vermeiden +häufiger Fehler und bei der Einhaltung eines konsistenten Code-Stils zu +helfen. Er führt eine Reihe von Prüfungen auf einer angegebenen Menge von +Paketen durch, um in deren Definition häufige Fehler aufzuspüren. Zu den +verfügbaren @dfn{Prüfern} gehören (siehe @code{--list-checkers} für eine +vollständige Liste): @table @code @item synopsis @itemx description -Validate certain typographical and stylistic rules about package -descriptions and synopses. +Überprüfen, ob bestimmte typografische und stilistische Regeln in +Paketbeschreibungen und -zusammenfassungen eingehalten wurden. @item inputs-should-be-native -Identify inputs that should most likely be native inputs. +Eingaben identifizieren, die wahrscheinlich native Eingaben sein sollten. @item source @itemx home-page @itemx mirror-url @itemx github-url @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. If the -@code{source} URL redirects to a GitHub URL, recommend usage of the GitHub -URL. Check that the 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}). +Die URLs für die Felder @code{home-page} und @code{source} anrufen und nicht +erreichbare URLs melden. Wenn passend, wird eine @code{mirror://}-URL +vorgeschlagen. Wenn die Quell-URL auf eine GitHub-URL weiterleitet, wird +eine Empfehlung ausgegeben, direkt letztere zu verwenden. Es wird geprüft, +dass der Quell-Dateiname aussagekräftig ist, dass er also z.B.@: nicht nur +aus einer Versionsnummer besteht oder als »git-checkout« angegeben wurde, +ohne dass ein @code{Dateiname} deklariert wurde (siehe @ref{»origin«-Referenz}). @item source-unstable-tarball Parse the @code{source} URL to determine if a tarball from GitHub is @@ -9369,13 +9779,15 @@ autogenerated or if it is a release tarball. Unfortunately GitHub's autogenerated tarballs are sometimes regenerated. @item cve -@cindex security vulnerabilities +@cindex Sicherheitslücken @cindex CVE, Common Vulnerabilities and Exposures -Report known vulnerabilities found in the Common Vulnerabilities and -Exposures (CVE) databases of the current and past year -@uref{https://nvd.nist.gov/download.cfm#CVE_FEED, published by the US NIST}. +Bekannte Sicherheitslücken melden, die in den Datenbanken der »Common +Vulnerabilities and Exposures« (CVE) aus diesem und dem letzten Jahr +vorkommen, @uref{https://nvd.nist.gov/download.cfm#CVE_FEED, wie sie von der +US-amerikanischen NIST veröffentlicht werden}. -To view information about a particular vulnerability, visit pages such as: +Um Informationen über eine bestimmte Sicherheitslücke angezeigt zu bekommen, +besuchen Sie Webseiten wie: @itemize @item @@ -9385,87 +9797,90 @@ To view information about a particular vulnerability, visit pages such as: @end itemize @noindent -where @code{CVE-YYYY-ABCD} is the CVE identifier---e.g., +wobei Sie statt @code{CVE-YYYY-ABCD} die CVE-Kennnummer angeben — z.B.@: @code{CVE-2015-7554}. -Package developers can specify in package recipes the -@uref{https://nvd.nist.gov/cpe.cfm,Common Platform Enumeration (CPE)} name -and version of the package when they differ from the name or version that -Guix uses, as in this example: +Paketentwickler können in ihren Paketrezepten den Namen und die Version des +Pakets in der @uref{https://nvd.nist.gov/cpe.cfm,Common Platform Enumeration +(CPE)} angeben, falls sich diese von dem in Guix benutzten Namen und der +Version unterscheiden, zum Beispiel so: @example (package (name "grub") ;; @dots{} - ;; CPE calls this package "grub2". + ;; CPE bezeichnet das Paket als "grub2". (properties '((cpe-name . "grub2") (cpe-version . "2.3"))) @end example @c See <http://www.openwall.com/lists/oss-security/2017/03/15/3>. -Some entries in the CVE database do not specify which version of a package -they apply to, and would thus ``stick around'' forever. Package developers -who found CVE alerts and verified they can be ignored can declare them as in -this example: +Manche Einträge in der CVE-Datenbank geben die Version des Pakets nicht an, +auf das sie sich beziehen, und würden daher bis in alle Ewigkeit Warnungen +auslösen. Paketentwickler, die CVE-Warnmeldungen gefunden und geprüft haben, +dass diese ignoriert werden können, können sie wie in diesem Beispiel +deklarieren: @example (package (name "t1lib") ;; @dots{} - ;; These CVEs no longer apply and can be safely ignored. + ;; Diese CVEs treffen nicht mehr zu und können bedenkenlos ignoriert + ;; werden. (properties `((lint-hidden-cve . ("CVE-2011-0433" "CVE-2011-1553" "CVE-2011-1554" "CVE-2011-5244"))))) @end example -@item formatting -Warn about obvious source code formatting issues: trailing white space, use -of tabulations, etc. +@item Formatierung +Offensichtliche Fehler bei der Formatierung von Quellcode melden, z.B.@: +Leerraum-Zeichen am Zeilenende oder Nutzung von Tabulatorzeichen. @end table Die allgemeine Syntax lautet: @example -guix lint @var{options} @var{package}@dots{} +guix lint @var{Optionen} @var{Pakete}@dots{} @end example -If no package is given on the command line, then all packages are checked. -The @var{options} may be zero or more of the following: +Wird kein Paket auf der Befehlszeile angegeben, dann werden alle Pakete +geprüft, die es gibt. Als @var{Optionen} können null oder mehr der folgenden +Befehlszeilenoptionen übergeben werden: @table @code @item --list-checkers @itemx -l -List and describe all the available checkers that will be run on packages -and exit. +Alle verfügbaren Prüfer für die Pakete auflisten und beschreiben. @item --checkers @itemx -c -Only enable the checkers specified in a comma-separated list using the names -returned by @code{--list-checkers}. +Nur die Prüfer aktivieren, die hiernach in einer kommagetrennten Liste aus +von @code{--list-checkers} aufgeführten Prüfern vorkommen. @end table @node Aufruf von guix size -@section Invoking @command{guix size} +@section @command{guix size} aufrufen -@cindex size -@cindex package size +@cindex Größe +@cindex Paketgröße @cindex Abschluss @cindex @command{guix size} -The @command{guix size} command helps package developers profile the disk -usage of packages. It is easy to overlook the impact of an additional -dependency added to a package, or the impact of using a single output for a -package that could easily be split (@pxref{Pakete mit mehreren Ausgaben.}). Such are the typical issues that @command{guix size} can -highlight. +Der Befehl @command{guix size} hilft Paketentwicklern dabei, den +Plattenplatzverbrauch von Paketen zu profilieren. Es ist leicht, die +Auswirkungen zu unterschätzen, die das Hinzufügen zusätzlicher +Abhängigkeiten zu einem Paket hat oder die das Verwenden einer einzelnen +Ausgabe für ein leicht aufteilbares Paket ausmacht (siehe @ref{Pakete mit mehreren Ausgaben.}). Das sind typische Probleme, auf die @command{guix size} +aufmerksam machen kann. -The command can be passed one or more package specifications such as -@code{gcc@@4.8} or @code{guile:debug}, or a file name in the store. -Consider this example: +Dem Befehl können eine oder mehrere Paketspezifikationen wie @code{gcc@@4.8} +oder @code{guile:debug} übergeben werden, oder ein Dateiname im +Store. Betrachten Sie dieses Beispiel: @example $ guix size coreutils -store item total self +Store-Objekt Gesamt Selbst /gnu/store/@dots{}-gcc-5.5.0-lib 60.4 30.1 38.1% /gnu/store/@dots{}-glibc-2.27 30.3 28.8 36.6% /gnu/store/@dots{}-coreutils-8.28 78.9 15.0 19.0% @@ -9474,270 +9889,303 @@ store item total self /gnu/store/@dots{}-acl-2.2.52 61.1 0.4 0.5% /gnu/store/@dots{}-attr-2.4.47 60.6 0.2 0.3% /gnu/store/@dots{}-libcap-2.25 60.5 0.2 0.2% -total: 78.9 MiB +Gesamt: 78.9 MiB @end example @cindex Abschluss -The store items listed here constitute the @dfn{transitive closure} of -Coreutils---i.e., Coreutils and all its dependencies, recursively---as would -be returned by: +Die hier aufgelisteten Store-Objekte bilden den @dfn{transitiven Abschluss} +der Coreutils — d.h.@: die Coreutils und all ihre Abhängigkeiten und deren +Abhängigkeiten, rekursiv —, wie sie hiervon angezeigt würden:<f @example $ guix gc -R /gnu/store/@dots{}-coreutils-8.23 @end example -Here the output shows three columns next to store items. The first column, -labeled ``total'', shows the size in mebibytes (MiB) of the closure of the -store item---that is, its own size plus the size of all its dependencies. -The next column, labeled ``self'', shows the size of the item itself. The -last column shows the ratio of the size of the item itself to the space -occupied by all the items listed here. +Hier zeigt die Ausgabe neben den Store-Objekten noch drei Spalten. Die erste +Spalte namens »Gesamt« gibt wieder, wieviele Mebibytes (MiB) der Abschluss +des Store-Objekts groß ist — das heißt, dessen eigene Größe plus die Größe +all seiner Abhängigkeiten. Die nächste Spalte, bezeichnet mit »Selbst«, +zeigt die Größe nur dieses Objekts an. Die letzte Spalte zeigt das +Verhältnis der Größe des Objekts zur Gesamtgröße aller hier aufgelisteten +Objekte an. -In this example, we see that the closure of Coreutils weighs in at -79@tie{}MiB, most of which is taken by libc and GCC's run-time support -libraries. (That libc and GCC's libraries represent a large fraction of the -closure is not a problem @i{per se} because they are always available on the -system anyway.) +In diesem Beispiel sehen wir, dass der Abschluss der Coreutils 79@tie{}MiB +schwer ist, wovon das meiste durch libc und die Bibliotheken zur +Laufzeitunterstützung von GCC ausgemacht wird. (Dass libc und die +Bibliotheken vom GCC einen großen Anteil am Abschluss ausmachen, ist aber an +sich noch kein Problem, weil es Bibliotheken sind, die auf dem System +sowieso immer verfügbar sein müssen.) -When the package(s) passed to @command{guix size} are available in the -store@footnote{More precisely, @command{guix size} looks for the -@emph{ungrafted} variant of the given package(s), as returned by @code{guix -build @var{package} --no-grafts}. @xref{Sicherheitsaktualisierungen}, for information -on grafts.}, @command{guix size} queries the daemon to determine its -dependencies, and measures its size in the store, similar to @command{du -ms ---apparent-size} (@pxref{du invocation,,, coreutils, GNU Coreutils}). +Wenn das oder die Paket(e), die an @command{guix size} übergeben wurden, im +Store verfügbar sind@footnote{Genauer gesagt braucht @command{guix size} die +@emph{nicht veredelte} Variante des angegebenen Pakets bzw. der Pakete, wie +@code{guix build @var{Paket} --no-grafts} sie liefert. Siehe @ref{Sicherheitsaktualisierungen} für Informationen über Veredelungen.}, beauftragen Sie mit +@command{guix size} den Daemon, die Abhängigkeiten davon zu bestimmen und +deren Größe im Store zu messen, ähnlich wie es mit @command{du -ms +--apparent-size} geschehen würde (siehe @ref{du invocation,,, coreutils, GNU +Coreutils}). -When the given packages are @emph{not} in the store, @command{guix size} -reports information based on the available substitutes -(@pxref{Substitute}). This makes it possible it to profile disk usage of -store items that are not even on disk, only available remotely. +Wenn die übergebenen Pakete @emph{nicht} im Store liegen, erstattet +@command{guix size} Bericht mit Informationen, die aus verfügbaren +Substituten herausgelesen werden (siehe @ref{Substitute}). Dadurch kann die +Plattenausnutzung von Store-Objekten profiliert werden, die gar nicht auf +der Platte liegen und nur auf entfernten Rechnern vorhanden sind. -You can also specify several package names: +Sie können auch mehrere Paketnamen angeben: @example $ guix size coreutils grep sed bash -store item total self +Store-Objekt Gesamt Selbst /gnu/store/@dots{}-coreutils-8.24 77.8 13.8 13.4% /gnu/store/@dots{}-grep-2.22 73.1 0.8 0.8% /gnu/store/@dots{}-bash-4.3.42 72.3 4.7 4.6% /gnu/store/@dots{}-readline-6.3 67.6 1.2 1.2% @dots{} -total: 102.3 MiB +Gesamt: 102.3 MiB @end example @noindent -In this example we see that the combination of the four packages takes -102.3@tie{}MiB in total, which is much less than the sum of each closure -since they have a lot of dependencies in common. +In diesem Beispiel sehen wir, dass die Kombination der vier Pakete insgesamt +102,3@tie{}MiB Platz verbraucht, was wesentlich weniger als die Summe der +einzelnen Abschlüsse ist, weil diese viele Abhängigkeiten gemeinsam +verwenden. -The available options are: +Die verfügbaren Befehlszeilenoptionen sind: @table @option @item --substitute-urls=@var{URLs} -Use substitute information from @var{urls}. @xref{client-substitute-urls, -the same option for @code{guix build}}. +Substitutinformationen von den @var{URLs} benutzen. Siehe +@ref{client-substitute-urls, dieselbe Option bei @code{guix build}}. -@item --sort=@var{key} -Sort lines according to @var{key}, one of the following options: +@item --sort=@var{Schlüssel} +Zeilen anhand des @var{Schlüssel}s sortieren, der eine der folgenden +Alternativen sein muss: @table @code @item self -the size of each item (the default); +die Größe jedes Objekts (die Vorgabe), @item Abschluss -the total size of the item's closure. +die Gesamtgröße des Abschlusses des Objekts. @end table -@item --map-file=@var{file} -Write a graphical map of disk usage in PNG format to @var{file}. +@item --map-file=@var{Datei} +Eine grafische Darstellung des Plattenplatzverbrauchs als eine +PNG-formatierte Karte in die @var{Datei} schreiben. -For the example above, the map looks like this: +Für das Beispiel oben sieht die Karte so aus: -@image{images/coreutils-size-map,5in,, map of Coreutils disk usage produced -by @command{guix size}} +@image{images/coreutils-size-map,5in,, Karte der Plattenausnutzung der +Coreutils, erzeugt mit @command{guix size}} -This option requires that -@uref{http://wingolog.org/software/guile-charting/, Guile-Charting} be -installed and visible in Guile's module search path. When that is not the -case, @command{guix size} fails as it tries to load it. +Diese Befehlszeilenoption setzt voraus, dass +@uref{http://wingolog.org/software/guile-charting/, Guile-Charting} +installiert und im Suchpfad für Guile-Module sichtbar ist. Falls nicht, +schlägt @command{guix size} beim Versuch fehl, dieses Modul zu laden. @item --system=@var{System} @itemx -s @var{System} -Consider packages for @var{system}---e.g., @code{x86_64-linux}. +Pakete für dieses @var{System} betrachten — z.B.@: für @code{x86_64-linux}. @end table @node Aufruf von guix graph -@section Invoking @command{guix graph} +@section @command{guix graph} aufrufen @cindex DAG @cindex @command{guix graph} @cindex Paketabhängigkeiten -Packages and their dependencies form a @dfn{graph}, specifically a directed -acyclic graph (DAG). It can quickly become difficult to have a mental model -of the package DAG, so the @command{guix graph} command provides a visual -representation of the DAG. By default, @command{guix graph} emits a DAG -representation in the input format of @uref{http://www.graphviz.org/, -Graphviz}, so its output can be passed directly to the @command{dot} command -of Graphviz. It can also emit an HTML page with embedded JavaScript code to -display a ``chord diagram'' in a Web browser, using the -@uref{https://d3js.org/, d3.js} library, or emit Cypher queries to construct -a graph in a graph database supporting the @uref{http://www.opencypher.org/, -openCypher} query language. The general syntax is: +Pakete und ihre Abhängigkeiten bilden einen @dfn{Graphen}, genauer gesagt +einen gerichteten azyklischen Graphen (englisch »Directed Acyclic Graph«, +kurz DAG). Es kann schnell schwierig werden, ein Modell eines Paket-DAGs vor +dem geistigen Auge zu behalten, weshalb der Befehl @command{guix graph} eine +visuelle Darstellung des DAGs bietet. Das vorgegebene Verhalten von +@command{guix graph} ist, eine DAG-Darstellung im Eingabeformat von +@uref{http://www.graphviz.org/, Graphviz} auszugeben, damit die Ausgabe +direkt an den Befehl @command{dot} aus Graphviz weitergeleitet werden +kann. Es kann aber auch eine HTML-Seite mit eingebettetem JavaScript-Code +ausgegeben werden, um ein »Sehnendiagramm« (englisch »Chord Diagram«) in +einem Web-Browser anzuzeigen, mit Hilfe der Bibliothek +@uref{https://d3js.org/, d3.js}, oder es können Cypher-Anfragen ausgegeben +werden, mit denen eine die Anfragesprache @uref{http://www.opencypher.org/, +openCypher} unterstützende Graph-Datenbank einen Graphen konstruieren +kann. Die allgemeine Syntax ist: @example -guix graph @var{options} @var{package}@dots{} +guix graph @var{Optionen} @var{Pakete}@dots{} @end example -For example, the following command generates a PDF file representing the -package DAG for the GNU@tie{}Core Utilities, showing its build-time -dependencies: +Zum Beispiel erzeugt der folgende Befehl eine PDF-Datei, die den Paket-DAG +für die GNU@tie{}Core Utilities darstellt, welcher ihre Abhängigkeiten zur +Erstellungszeit anzeigt: @example guix graph coreutils | dot -Tpdf > dag.pdf @end example -The output looks like this: +Die Ausgabe sieht so aus: -@image{images/coreutils-graph,2in,,Dependency graph of the GNU Coreutils} +@image{images/coreutils-graph,2in,,Abhängigkeitsgraph der GNU Coreutils} -Nice little graph, no? +Ein netter, kleiner Graph, oder? -But there is more than one graph! The one above is concise: it is the graph -of package objects, omitting implicit inputs such as GCC, libc, grep, etc. -It is often useful to have such a concise graph, but sometimes one may want -to see more details. @command{guix graph} supports several types of graphs, -allowing you to choose the level of detail: +Aber es gibt mehr als eine Art von Graph! Der Graph oben ist kurz und knapp: +Es ist der Graph der Paketobjekte, ohne implizite Eingaben wie GCC, libc, +grep und so weiter. Oft möchte man einen knappen Graphen sehen, aber +manchmal will man auch mehr Details sehen. @command{guix graph} unterstützt +mehrere Typen von Graphen; Sie können den Detailgrad auswählen. @table @code @item package -This is the default type used in the example above. It shows the DAG of -package objects, excluding implicit dependencies. It is concise, but -filters out many details. +Der vorgegebene Typ aus dem Beispiel oben. Er zeigt den DAG der Paketobjekte +ohne implizite Abhängigkeiten. Er ist knapp, filtert aber viele Details +heraus. @item reverse-package -This shows the @emph{reverse} DAG of packages. For example: +Dies zeigt den @emph{umgekehrten} DAG der Pakete. Zum Beispiel: @example guix graph --type=reverse-package ocaml @end example -...@: yields the graph of packages that depend on OCaml. +...@: yields the graph of packages that @emph{explicitly} depend on OCaml +(if you are also interested in cases where OCaml is an implicit dependency, +see @code{reverse-bag} below.) -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 -@command{guix refresh --list-dependent} (@pxref{Aufruf von guix refresh, +Beachten Sie, dass für Kernpakete damit gigantische Graphen entstehen +können. Wenn Sie nur die Anzahl der Pakete wissen wollen, die von einem +gegebenen Paket abhängen, benutzen Sie @command{guix refresh +--list-dependent} (siehe @ref{Aufruf von guix refresh, @option{--list-dependent}}). @item bag-emerged -This is the package DAG, @emph{including} implicit inputs. +Dies ist der Paket-DAG @emph{einschließlich} impliziter Eingaben. -For instance, the following command: +Zum Beispiel liefert der folgende Befehl: @example guix graph --type=bag-emerged coreutils | dot -Tpdf > dag.pdf @end example -...@: yields this bigger graph: +…@: diesen größeren Graphen: -@image{images/coreutils-bag-graph,,5in,Detailed dependency graph of the GNU -Coreutils} +@image{images/coreutils-bag-graph,,5in,Detaillierter Abhängigkeitsgraph der +GNU Coreutils} -At the bottom of the graph, we see all the implicit inputs of -@var{gnu-build-system} (@pxref{Erstellungssysteme, @code{gnu-build-system}}). +Am unteren Rand des Graphen sehen wir alle impliziten Eingaben des +@var{gnu-build-system} (siehe @ref{Erstellungssysteme, @code{gnu-build-system}}). -Now, note that the dependencies of these implicit inputs---that is, the -@dfn{bootstrap dependencies} (@pxref{Bootstrapping})---are not shown here, -for conciseness. +Beachten Sie dabei aber, dass auch hier die Abhängigkeiten dieser impliziten +Eingaben — d.h.@: die @dfn{Bootstrap-Abhängigkeiten} (siehe +@ref{Bootstrapping}) — nicht gezeigt werden, damit der Graph knapper bleibt. @item bag -Similar to @code{bag-emerged}, but this time including all the bootstrap -dependencies. +Ähnlich wie @code{bag-emerged}, aber diesmal mit allen +Bootstrap-Abhängigkeiten. @item bag-with-origins -Similar to @code{bag}, but also showing origins and their dependencies. +Ähnlich wie @code{bag}, aber auch mit den Ursprüngen und deren +Abhängigkeiten. + +@item reverse-bag +This shows the @emph{reverse} DAG of packages. Unlike +@code{reverse-package}, it also takes implicit dependencies into account. +For example: + +@example +guix graph -t reverse-bag dune +@end example + +@noindent +...@: yields the graph of all packages that depend on Dune, directly or +indirectly. Since Dune is an @emph{implicit} dependency of many packages +@i{via} @code{dune-build-system}, this shows a large number of packages, +whereas @code{reverse-package} would show very few if any. @item Ableitung -This is the most detailed representation: It shows the DAG of derivations -(@pxref{Ableitungen}) and plain store items. Compared to the above -representation, many additional nodes are visible, including build scripts, -patches, Guile modules, etc. +Diese Darstellung ist am detailliertesten: Sie zeigt den DAG der Ableitungen +(siehe @ref{Ableitungen}) und der einfachen Store-Objekte. Verglichen mit +obiger Darstellung sieht man viele zusätzliche Knoten einschließlich +Erstellungs-Skripts, Patches, Guile-Module usw. -For this type of graph, it is also possible to pass a @file{.drv} file name -instead of a package name, as in: +Für diesen Typ Graph kann auch der Name einer @file{.drv}-Datei anstelle +eines Paketnamens angegeben werden, etwa so: @example guix graph -t derivation `guix system build -d my-config.scm` @end example @item module -This is the graph of @dfn{package modules} (@pxref{Paketmodule}). For -example, the following command shows the graph for the package module that -defines the @code{guile} package: +Dies ist der Graph der @dfn{Paketmodule} (siehe @ref{Paketmodule}). Zum +Beispiel zeigt der folgende Befehl den Graph für das Paketmodul an, das das +@code{guile}-Paket definiert: @example -guix graph -t module guile | dot -Tpdf > module-graph.pdf +guix graph -t module guile | dot -Tpdf > modul-graph.pdf @end example @end table -All the types above correspond to @emph{build-time dependencies}. The -following graph type represents the @emph{run-time dependencies}: +Alle oben genannten Typen entsprechen @emph{Abhängigkeiten zur +Erstellungszeit}. Der folgende Graphtyp repräsentiert die +@emph{Abhängigkeiten zur Laufzeit}: @table @code @item references -This is the graph of @dfn{references} of a package output, as returned by -@command{guix gc --references} (@pxref{Aufruf von guix gc}). +Dies ist der Graph der @dfn{Referenzen} einer Paketausgabe, wie +@command{guix gc --references} sie liefert (siehe @ref{Aufruf von guix gc}). -If the given package output is not available in the store, @command{guix -graph} attempts to obtain dependency information from substitutes. +Wenn die angegebene Paketausgabe im Store nicht verfügbar ist, versucht +@command{guix graph}, die Abhängigkeitsinformationen aus Substituten zu +holen. -Here you can also pass a store file name instead of a package name. For -example, the command below produces the reference graph of your profile -(which can be big!): +Hierbei können Sie auch einen Store-Dateinamen statt eines Paketnamens +angeben. Zum Beispiel generiert der Befehl unten den Referenzgraphen Ihres +Profils (der sehr groß werden kann!): @example guix graph -t references `readlink -f ~/.guix-profile` @end example @item referrers -This is the graph of the @dfn{referrers} of a store item, as returned by -@command{guix gc --referrers} (@pxref{Aufruf von guix gc}). +Dies ist der Graph der ein Store-Objekt @dfn{referenzierenden} Objekte, wie +@command{guix gc --referrers} sie liefern würde (siehe @ref{Aufruf von guix gc}). -This relies exclusively on local information from your store. For instance, -let us suppose that the current Inkscape is available in 10 profiles on your -machine; @command{guix graph -t referrers inkscape} will show a graph rooted -at Inkscape and with those 10 profiles linked to it. +Er basiert ausschließlich auf lokalen Informationen aus Ihrem Store. Nehmen +wir zum Beispiel an, dass das aktuelle Inkscape in 10 Profilen verfügbar +ist, dann wird @command{guix graph -t referrers inkscape} einen Graph +zeigen, der bei Inkscape gewurzelt ist und Kanten zu diesen 10 Profilen hat. -It can help determine what is preventing a store item from being garbage -collected. +Ein solcher Graph kann dabei helfen, herauszufinden, weshalb ein +Store-Objekt nicht vom Müllsammler abgeholt werden kann. @end table -The available options are the following: +Folgendes sind die verfügbaren Befehlszeilenoptionen: @table @option -@item --type=@var{type} -@itemx -t @var{type} -Produce a graph output of @var{type}, where @var{type} must be one of the -values listed above. +@item --type=@var{Typ} +@itemx -t @var{Typ} +Eine Graph-Ausgabe dieses @var{Typ}s generieren. Dieser @var{Typ} muss einer +der oben genannten Werte sein. @item --list-types -List the supported graph types. +Die unterstützten Graph-Typen auflisten. -@item --backend=@var{backend} -@itemx -b @var{backend} -Produce a graph using the selected @var{backend}. +@item --backend=@var{Backend} +@itemx -b @var{Backend} +Einen Graph mit Hilfe des ausgewählten @var{Backend}s generieren. @item --list-backends -List the supported graph backends. +Die unterstützten Graph-Backends auflisten. -Currently, the available backends are Graphviz and d3.js. +Derzeit sind die verfügbaren Backends Graphviz und d3.js. @item --expression=@var{Ausdruck} @itemx -e @var{Ausdruck} Als Paket benutzen, wozu der @var{Ausdruck} ausgewertet wird. -This is useful to precisely refer to a package, as in this example: +Dies ist nützlich, um genau ein bestimmtes Paket zu referenzieren, wie in +diesem Beispiel: @example guix graph -e '(@@@@ (gnu packages commencement) gnu-make-final)' @@ -9745,11 +10193,11 @@ guix graph -e '(@@@@ (gnu packages commencement) gnu-make-final)' @item --system=@var{System} @itemx -s @var{System} -Display the graph for @var{system}---e.g., @code{i686-linux}. +Den Graphen für das @var{System} anzeigen — z.B.@: @code{i686-linux}. -The package dependency graph is largely architecture-independent, but there -are some architecture-dependent bits that this option allows you to -visualize. +Der Abhängigkeitsgraph ist größtenteils von der Systemarchitektur +unabhängig, aber ein paar architekturabhängige Teile können Ihnen mit dieser +Befehlszeilenoption visualisiert werden. @end table @@ -9760,17 +10208,18 @@ visualize. @cindex @command{guix publish} Der Zweck von @command{guix publish} ist, es Nutzern zu ermöglichen, ihren Store auf einfache Weise mit anderen zu teilen, die ihn dann als -Substitutserver einsetzen können (@pxref{Substitute}). +Substitutserver einsetzen können (siehe @ref{Substitute}). -When @command{guix publish} runs, it spawns an HTTP server which allows -anyone with network access to obtain substitutes from it. This means that -any machine running Guix can also act as if it were a build farm, since the -HTTP interface is compatible with Hydra, the software behind the -@code{@value{SUBSTITUTE-SERVER}} build farm. +Wenn @command{guix publish} ausgeführt wird, wird dadurch ein HTTP-Server +gestartet, so dass jeder mit Netzwerkzugang davon Substitute beziehen +kann. Das bedeutet, dass jede Maschine, auf der Guix läuft, auch als +Build-Farm fungieren kann, weil die HTTP-Schnittstelle mit Hydra, der +Software, mit der die offizielle Build-Farm @code{@value{SUBSTITUTE-SERVER}} +betrieben wird, kompatibel ist. Um Sicherheit zu gewährleisten, wird jedes Substitut signiert, so dass Empfänger dessen Authentizität und Integrität nachprüfen können (siehe -@pxref{Substitute}). Weil @command{guix publish} den Signierschlüssel des +@ref{Substitute}). Weil @command{guix publish} den Signierschlüssel des Systems benutzt, der nur vom Systemadministrator gelesen werden kann, muss es als der Administratornutzer »root« gestartet werden. Mit der Befehlszeilenoption @code{--user} werden Administratorrechte bald nach dem @@ -9778,7 +10227,7 @@ Start wieder abgelegt. Das Schlüsselpaar zum Signieren muss erzeugt werden, bevor @command{guix publish} gestartet wird. Dazu können Sie @command{guix archive ---generate-key} ausführen (@pxref{Aufruf von guix archive}). +--generate-key} ausführen (siehe @ref{Aufruf von guix archive}). Die allgemeine Syntax lautet: @@ -9793,7 +10242,7 @@ ein HTTP-Server gestartet, der auf Port 8080 lauscht: guix publish @end example -Sobald ein Server zum Veröffentlichen autorisiert wurde (@pxref{Aufruf von guix archive}), kann der Daemon davon Substitute herunterladen: +Sobald ein Server zum Veröffentlichen autorisiert wurde (siehe @ref{Aufruf von guix archive}), kann der Daemon davon Substitute herunterladen: @example guix-daemon --substitute-urls=http://example.org:8080 @@ -9807,15 +10256,15 @@ Sie die Befehlszeilenoption @option{--cache} benutzen, die das Zwischenspeichern der komprimierten Archive aktiviert, bevor diese an die Clients geschickt werden — siehe unten für Details. Mit dem Befehl @command{guix weather} haben Sie eine praktische Methode zur Hand, zu -überprüfen, was so ein Server anbietet (@pxref{Aufruf von guix weather}). +überprüfen, was so ein Server anbietet (siehe @ref{Aufruf von guix weather}). Als Bonus dient @command{guix publish} auch als inhaltsadressierbarer Spiegelserver für Quelldateien, die in @code{origin}-Verbundsobjekten -eingetragen sind (@pxref{»origin«-Referenz}). Wenn wir zum Beispiel annehmen, -dass @command{guix publish} auf @code{example.org} läuft, liefert folgende -URL die rohe @file{hello-2.10.tar.gz}-Datei mit dem angegebenen SHA256-Hash -als ihre Prüfsumme (dargestellt im @code{nix-base32}-Format, siehe -@pxref{Aufruf von guix hash}): +eingetragen sind (siehe @ref{»origin«-Referenz}). Wenn wir zum Beispiel +annehmen, dass @command{guix publish} auf @code{example.org} läuft, liefert +folgende URL die rohe @file{hello-2.10.tar.gz}-Datei mit dem angegebenen +SHA256-Hash als ihre Prüfsumme (dargestellt im @code{nix-base32}-Format, +siehe @ref{Aufruf von guix hash}): @example http://example.org/file/hello-2.10.tar.gz/sha256/0ssi1@dots{}ndq1i @@ -9834,14 +10283,14 @@ http://example.org/log/gwspk@dots{}-guile-2.2.3 @noindent Ist der @command{guix-daemon} so eingestellt, dass er Erstellungsprotokolle -komprimiert abspeichert, wie es voreingestellt ist (@pxref{Aufruf des guix-daemon}), liefern @code{/log}-URLs das unveränderte komprimierte +komprimiert abspeichert, wie es voreingestellt ist (siehe @ref{Aufruf des guix-daemon}), liefern @code{/log}-URLs das unveränderte komprimierte Protokoll, mit einer entsprechenden @code{Content-Type}- und/oder @code{Content-Encoding}-Kopfzeile. Wir empfehlen dabei, dass Sie den @command{guix-daemon} mit @code{--log-compression=gzip} ausführen, weil Web-Browser dieses Format automatisch dekomprimieren können, was bei bzip2-Kompression nicht der Fall ist. -The following options are available: +Folgende Befehlszeilenoptionen stehen zur Verfügung: @table @code @item --port=@var{Port} @@ -9856,7 +10305,7 @@ Schnittstelle zu akzeptieren. @item --user=@var{Benutzer} @itemx -u @var{Benutzer} So früh wie möglich alle über die Berechtigungen des @var{Benutzer}s -hinausgehenden Berechtigungen ablegen — d.h. sobald der Server-Socket +hinausgehenden Berechtigungen ablegen — d.h.@: sobald der Server-Socket geöffnet und der Signierschlüssel gelesen wurde. @item --compression[=@var{Stufe}] @@ -9897,7 +10346,7 @@ Im Gegensatz dazu liefert, wenn @option{--cache} benutzt wird, die erste Anfrage nach einem Store-Objekt (über dessen @code{.narinfo}-URL) den Fehlercode 404, und im Hintergrund wird ein Prozess gestartet, der das Archiv in den Zwischenspeicher einlagert (auf Englisch sagen wir »@dfn{bake} -the archive«), d.h. seine @code{.narinfo} wird berechnet und das Archiv, +the archive«), d.h.@: seine @code{.narinfo} wird berechnet und das Archiv, falls nötig, komprimiert. Sobald das Archiv im @var{Verzeichnis} zwischengespeichert wurde, werden nachfolgende Anfragen erfolgreich sein und direkt aus dem Zwischenspeicher bedient, der garantiert, dass Clients @@ -9931,8 +10380,8 @@ nicht zugegriffen wurde und kein ihnen entsprechendes Objekt mehr im Store existiert. @item --nar-path=@var{Pfad} -Den @var{Pfad} als Präfix für die URLs von »nar«-Dateien benutzen -(@pxref{Aufruf von guix archive, normalized archives}). +Den @var{Pfad} als Präfix für die URLs von »nar«-Dateien benutzen (siehe +@ref{Aufruf von guix archive, normalized archives}). Vorgegeben ist, dass Nars unter einer URL mit @code{/nar/gzip/@dots{}-coreutils-8.25} angeboten werden. Mit dieser @@ -9948,21 +10397,22 @@ Die Dateien müssen demselben Schlüsselpaar entsprechen (der private Schlüssel wird zum Signieren benutzt, der öffentliche Schlüssel wird lediglich in den Metadaten der Signatur aufgeführt). Die Dateien müssen Schlüssel im kanonischen (»canonical«) S-Ausdruck-Format enthalten, wie es -von @command{guix archive --generate-key} erzeugt wird (@pxref{Aufruf von guix archive}). Vorgegeben ist, dass @file{/etc/guix/signing-key.pub} und +von @command{guix archive --generate-key} erzeugt wird (siehe @ref{Aufruf von guix archive}). Vorgegeben ist, dass @file{/etc/guix/signing-key.pub} und @file{/etc/guix/signing-key.sec} benutzt werden. @item --repl[=@var{Port}] @itemx -r [@var{Port}] -Einen Guile-REPL-Server (@pxref{REPL Servers,,, guile, GNU Guile Reference -Manual}) auf diesem @var{Port} starten (37146 ist voreingestellt). Dies kann -zur Fehlersuche auf einem laufenden »@command{guix publish}«-Server benutzt -werden. +Einen Guile-REPL-Server (siehe @ref{REPL Servers,,, guile, GNU Guile +Reference Manual}) auf diesem @var{Port} starten (37146 ist +voreingestellt). Dies kann zur Fehlersuche auf einem laufenden +»@command{guix publish}«-Server benutzt werden. @end table -Enabling @command{guix publish} on Guix System is a one-liner: just -instantiate a @code{guix-publish-service-type} service in the -@code{services} field of the @code{operating-system} declaration -(@pxref{guix-publish-service-type, @code{guix-publish-service-type}}). +@command{guix publish} auf einem »Guix System«-System zu aktivieren ist ein +Einzeiler: Instanziieren Sie einfach einen +@code{guix-publish-service-type}-Dienst im @code{services}-Feld Ihres +@code{operating-system}-Objekts zur Betriebssystemdeklaration (siehe +@ref{guix-publish-service-type, @code{guix-publish-service-type}}). Falls Sie Guix aber auf einer »Fremddistribution« laufen lassen, folgen Sie folgenden Anweisungen: @@ -9991,79 +10441,86 @@ Ihre Distribution verwendet. @end itemize @node Aufruf von guix challenge -@section Invoking @command{guix challenge} +@section @command{guix challenge} aufrufen @cindex Reproduzierbare Erstellungen -@cindex verifiable builds +@cindex verifizierbare Erstellungen @cindex @command{guix challenge} -@cindex challenge -Do the binaries provided by this server really correspond to the source code -it claims to build? Is a package build process deterministic? These are the -questions the @command{guix challenge} command attempts to answer. - -The former is obviously an important question: Before using a substitute -server (@pxref{Substitute}), one had better @emph{verify} that it provides -the right binaries, and thus @emph{challenge} it. The latter is what -enables the former: If package builds are deterministic, then independent -builds of the package should yield the exact same result, bit for bit; if a -server provides a binary different from the one obtained locally, it may be -either corrupt or malicious. - -We know that the hash that shows up in @file{/gnu/store} file names is the -hash of all the inputs of the process that built the file or -directory---compilers, libraries, build scripts, -etc. (@pxref{Einführung}). Assuming deterministic build processes, one -store file name should map to exactly one build output. @command{guix -challenge} checks whether there is, indeed, a single mapping by comparing -the build outputs of several independent builds of any given store item. - -The command output looks like this: +@cindex Anfechten +Entsprechen die von diesem Server gelieferten Binärdateien tatsächlich dem +Quellcode, aus dem sie angeblich erzeugt wurden? Ist ein +Paketerstellungsprozess deterministisch? Diese Fragen versucht @command{guix +challenge} zu beantworten. + +Die erste Frage ist offensichtlich wichtig: Bevor man einen Substitutserver +benutzt (siehe @ref{Substitute}), @emph{verifiziert} man besser, dass er +die richtigen Binärdateien liefert, d.h.@: man @emph{fechtet sie an}. Die +letzte Frage macht die erste möglich: Wenn Paketerstellungen deterministisch +sind, müssten voneinander unabhängige Erstellungen genau dasselbe Ergebnis +liefern, Bit für Bit; wenn ein Server mit einer anderen Binärdatei als der +lokal erstellten Binärdatei antwortet, ist diese entweder beschädigt oder +bösartig. + +Wir wissen, dass die in @file{/gnu/store}-Dateinamen auftauchende +Hash-Prüfsumme der Hash aller Eingaben des Prozesses ist, mit dem die Datei +oder das Verzeichnis erstellt wurde — Compiler, Bibliotheken, +Erstellungsskripts und so weiter (siehe @ref{Einführung}). Wenn wir von +deterministischen Erstellungen ausgehen, sollte ein Store-Dateiname also auf +genau eine Erstellungsausgabe abgebildet werden. Mit @command{guix +challenge} prüft man, ob es tatsächlich eine eindeutige Abbildung gibt, +indem die Erstellungsausgaben mehrerer unabhängiger Erstellungen jedes +angegebenen Store-Objekts verglichen werden. + +Die Ausgabe des Befehls sieht so aus: @smallexample $ guix challenge --substitute-urls="https://@value{SUBSTITUTE-SERVER} https://guix.example.org" -updating list of substitutes from 'https://@value{SUBSTITUTE-SERVER}'... 100.0% -updating list of substitutes from 'https://guix.example.org'... 100.0% -/gnu/store/@dots{}-openssl-1.0.2d contents differ: - local hash: 0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q +Liste der Substitute von »https://@value{SUBSTITUTE-SERVER}« wird aktualisiert … 100.0% +Liste der Substitute von »https://guix.example.org« wird aktualisiert … 100.0% +Inhalt von /gnu/store/@dots{}-openssl-1.0.2d verschieden: + lokale Prüfsumme: 0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-openssl-1.0.2d: 0725l22r5jnzazaacncwsvp9kgf42266ayyp814v7djxs7nk963q https://guix.example.org/nar/@dots{}-openssl-1.0.2d: 1zy4fmaaqcnjrzzajkdn3f5gmjk754b43qkq47llbyak9z0qjyim -/gnu/store/@dots{}-git-2.5.0 contents differ: - local hash: 00p3bmryhjxrhpn2gxs2fy0a15lnip05l97205pgbk5ra395hyha +Inhalt von /gnu/store/@dots{}-git-2.5.0 verschieden: + lokale Prüfsumme: 00p3bmryhjxrhpn2gxs2fy0a15lnip05l97205pgbk5ra395hyha https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-git-2.5.0: 069nb85bv4d4a6slrwjdy8v1cn4cwspm3kdbmyb81d6zckj3nq9f https://guix.example.org/nar/@dots{}-git-2.5.0: 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9c73 -/gnu/store/@dots{}-pius-2.1.1 contents differ: - local hash: 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax +Inhalt von /gnu/store/@dots{}-pius-2.1.1 verschieden: + lokale Prüfsumme: 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-pius-2.1.1: 0k4v3m9z1zp8xzzizb7d8kjj72f9172xv078sq4wl73vnq9ig3ax https://guix.example.org/nar/@dots{}-pius-2.1.1: 1cy25x1a4fzq5rk0pmvc8xhwyffnqz95h2bpvqsz2mpvlbccy0gs @dots{} -6,406 store items were analyzed: - - 4,749 (74.1%) were identical - - 525 (8.2%) differed - - 1,132 (17.7%) were inconclusive +6,406 Store-Objekte wurden analysiert: + — 4,749 (74.1%) waren identisch + — 525 (8.2%) unterscheiden sich + — 1,132 (17.7%) blieben ergebnislos @end smallexample @noindent -In this example, @command{guix challenge} first scans the store to determine -the set of locally-built derivations---as opposed to store items that were -downloaded from a substitute server---and then queries all the substitute -servers. It then reports those store items for which the servers obtained a -result different from the local build. - -@cindex non-determinism, in package builds -As an example, @code{guix.example.org} always gets a different answer. -Conversely, @code{@value{SUBSTITUTE-SERVER}} agrees with local builds, -except in the case of Git. This might indicate that the build process of -Git is non-deterministic, meaning that its output varies as a function of -various things that Guix does not fully control, in spite of building -packages in isolated environments (@pxref{Funktionalitäten}). Most common sources -of non-determinism include the addition of timestamps in build results, the -inclusion of random numbers, and directory listings sorted by inode number. -See @uref{https://reproducible-builds.org/docs/}, for more information. - -To find out what is wrong with this Git binary, we can do something along -these lines (@pxref{Aufruf von guix archive}): +In diesem Beispiel wird mit @command{guix challenge} zuerst die Menge lokal +erstellter Ableitungen im Store ermittelt — im Gegensatz zu von einem +Substitserver heruntergeladenen Store-Objekten — und dann werden alle +Substitutserver angefragt. Diejenigen Store-Objekte, bei denen der Server +ein anderes Ergebnis berechnet hat als die lokale Erstellung, werden +gemeldet. + +@cindex Nichtdeterminismus, in Paketerstellungen +Nehmen wir zum Beispiel an, @code{guix.example.org} gibt uns immer eine +verschiedene Antwort, aber @code{@value{SUBSTITUTE-SERVER}} stimmt mit +lokalen Erstellungen überein, @emph{außer} im Fall von Git. Das könnte ein +Hinweis sein, dass der Erstellungsprozess von Git nichtdeterministisch ist; +das bedeutet, seine Ausgabe variiert abhängig von verschiedenen Umständen, +die Guix nicht vollends kontrollieren kann, obwohl es Pakete in isolierten +Umgebungen erstellt (siehe @ref{Funktionalitäten}). Zu den häufigsten Quellen von +Nichtdeterminismus gehören das Einsetzen von Zeitstempeln innerhalb der +Erstellungsgebnisse, das Einsetzen von Zufallszahlen und von Auflistungen +eines Verzeichnisinhalts sortiert nach der Inode-Nummer. Siehe +@uref{https://reproducible-builds.org/docs/} für mehr Informationen. + +Um herauszufinden, was mit dieser Git-Binärdatei nicht stimmt, können wir so +etwas machen (siehe @ref{Aufruf von guix archive}): @example $ wget -q -O - https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-git-2.5.0 \ @@ -10071,269 +10528,288 @@ $ wget -q -O - https://@value{SUBSTITUTE-SERVER}/nar/@dots{}-git-2.5.0 \ $ diff -ur --no-dereference /gnu/store/@dots{}-git.2.5.0 /tmp/git @end example -This command shows the difference between the files resulting from the local -build, and the files resulting from the build on -@code{@value{SUBSTITUTE-SERVER}} (@pxref{Overview, Comparing and Merging -Files,, diffutils, Comparing and Merging Files}). The @command{diff} -command works great for text files. When binary files differ, a better -option is @uref{https://diffoscope.org/, Diffoscope}, a tool that helps -visualize differences for all kinds of files. +Dieser Befehl zeigt die Unterschiede zwischen den Dateien, die sich aus der +lokalen Erstellung ergeben, und den Dateien, die sich aus der Erstellung auf +@code{@value{SUBSTITUTE-SERVER}} ergeben (siehe @ref{Overview, Comparing and +Merging Files,, diffutils, Comparing and Merging Files}). Der Befehl +@command{diff} funktioniert großartig für Textdateien. Wenn sich +Binärdateien unterscheiden, ist @uref{https://diffoscope.org/, Diffoscope} +die bessere Wahl: Es ist ein hilfreiches Werkzeug, das Unterschiede in allen +Arten von Dateien visualisiert. -Once you have done that work, you can tell whether the differences are due -to a non-deterministic build process or to a malicious server. We try hard -to remove sources of non-determinism in packages to make it easier to verify -substitutes, but of course, this is a process that involves not just Guix, -but a large part of the free software community. In the meantime, -@command{guix challenge} is one tool to help address the problem. +Sobald Sie mit dieser Arbeit fertig sind, können Sie erkennen, ob die +Unterschiede aufgrund eines nichtdeterministischen Erstellungsprozesses oder +wegen einem bösartigen Server zustande kommen. Wir geben uns Mühe, Quellen +von Nichtdeterminismus in Paketen zu entfernen, damit Substitute leichter +verifiziert werden können, aber natürlich ist an diesem Prozess nicht nur +Guix, sondern ein großer Teil der Freie-Software-Gemeinschaft beteiligt. In +der Zwischenzeit ist @command{guix challenge} eines der Werkzeuge, die das +Problem anzugehen helfen. -If you are writing packages for Guix, you are encouraged to check whether -@code{@value{SUBSTITUTE-SERVER}} and other substitute servers obtain the -same build result as you did with: +Wenn Sie ein Paket für Guix schreiben, ermutigen wir Sie, zu überprüfen, ob +@code{@value{SUBSTITUTE-SERVER}} und andere Substitutserver dasselbe +Erstellungsergebnis bekommen, das Sie bekommen haben. Das geht so: @example -$ guix challenge @var{package} +$ guix challenge @var{Paket} @end example @noindent -where @var{package} is a package specification such as @code{guile@@2.0} or -@code{glibc:debug}. +Dabei wird mit @var{Paket} eine Paketspezifikation wie @code{guile@@2.0} +oder @code{glibc:debug} bezeichnet. Die allgemeine Syntax lautet: @example -guix challenge @var{options} [@var{packages}@dots{}] +guix challenge @var{Optionen} [@var{Pakete}@dots{}] @end example -When a difference is found between the hash of a locally-built item and that -of a server-provided substitute, or among substitutes provided by different -servers, the command displays it as in the example above and its exit code -is 2 (other non-zero exit codes denote other kinds of errors.) +Wird ein Unterschied zwischen der Hash-Prüfsumme des lokal erstellten +Objekts und dem vom Server gelieferten Substitut festgestellt, oder zwischen +den Substituten von unterschiedlichen Servern, dann wird der Befehl dies wie +im obigen Beispiel anzeigen und mit dem Exit-Code 2 terminieren (andere +Exit-Codes außer null stehen für andere Arten von Fehlern). -The one option that matters is: +Die eine, wichtige Befehlszeilenoption ist: @table @code @item --substitute-urls=@var{URLs} -Consider @var{urls} the whitespace-separated list of substitute source URLs -to compare to. +Die @var{URLs} als durch Leerraumzeichen getrennte Liste von +Substitut-Quell-URLs benutzen. mit denen verglichen wird. @item --verbose @itemx -v -Show details about matches (identical contents) in addition to information -about mismatches. +Details auch zu Übereinstimmungen (deren Inhalt identisch ist) ausgeben, +zusätzlich zu Informationen über Unterschiede. @end table @node Aufruf von guix copy -@section Invoking @command{guix copy} - -@cindex copy, of store items, over SSH -@cindex SSH, copy of store items -@cindex sharing store items across machines -@cindex transferring store items across machines -The @command{guix copy} command copies items from the store of one machine -to that of another machine over a secure shell (SSH) -connection@footnote{This command is available only when Guile-SSH was -found. @xref{Voraussetzungen}, for details.}. For example, the following -command copies the @code{coreutils} package, the user's profile, and all -their dependencies over to @var{host}, logged in as @var{user}: - -@example -guix copy --to=@var{user}@@@var{host} \ +@section @command{guix copy} aufrufen + +@cindex Kopieren, von Store-Objekten, über SSH +@cindex SSH, Kopieren von Store-Objekten +@cindex Store-Objekte zwischen Maschinen teilen +@cindex Übertragen von Store-Objekten zwischen Maschinen +Der Befehl @command{guix copy} kopiert Objekte aus dem Store einer Maschine +in den Store einer anderen Maschine mittels einer Secure-Shell-Verbindung +(kurz SSH-Verbindung)@footnote{Dieser Befehl steht nur dann zur Verfügung, +wenn Guile-SSH gefunden werden kann. Siehe @ref{Voraussetzungen} für +Details.}. Zum Beispiel kopiert der folgende Befehl das Paket +@code{coreutils}, das Profil des Benutzers und all deren Abhängigkeiten auf +den anderen @var{Rechner}, dazu meldet sich Guix als @var{Benutzer} an: + +@example +guix copy --to=@var{Benutzer}@@@var{Rechner} \ coreutils `readlink -f ~/.guix-profile` @end example -If some of the items to be copied are already present on @var{host}, they -are not actually sent. +Wenn manche der zu kopierenden Objekte schon auf dem anderen @var{Rechner} +vorliegen, werden sie tatsächlich @emph{nicht} übertragen. -The command below retrieves @code{libreoffice} and @code{gimp} from -@var{host}, assuming they are available there: +Der folgende Befehl bezieht @code{libreoffice} und @code{gimp} von dem +@var{Rechner}, vorausgesetzt sie sind dort verfügbar: @example guix copy --from=@var{host} libreoffice gimp @end example -The SSH connection is established using the Guile-SSH client, which is -compatible with OpenSSH: it honors @file{~/.ssh/known_hosts} and -@file{~/.ssh/config}, and uses the SSH agent for authentication. +Die SSH-Verbindung wird mit dem Guile-SSH-Client hergestellt, der mit +OpenSSH kompatibel ist: Er berücksichtigt @file{~/.ssh/known_hosts} und +@file{~/.ssh/config} und verwendet den SSH-Agenten zur Authentifizierung. -The key used to sign items that are sent must be accepted by the remote -machine. Likewise, the key used by the remote machine to sign items you are -retrieving must be in @file{/etc/guix/acl} so it is accepted by your own -daemon. @xref{Aufruf von guix archive}, for more information about store item -authentication. +Der Schlüssel, mit dem gesendete Objekte signiert sind, muss von der +entfernten Maschine akzeptiert werden. Ebenso muss der Schlüssel, mit dem +die Objekte signiert sind, die Sie von der entfernten Maschine empfangen, in +Ihrer Datei @file{/etc/guix/acl} eingetragen sein, damit Ihr Daemon sie +akzeptiert. Siehe @ref{Aufruf von guix archive} für mehr Informationen über +die Authentifizierung von Store-Objekten. Die allgemeine Syntax lautet: @example -guix copy [--to=@var{spec}|--from=@var{spec}] @var{items}@dots{} +guix copy [--to=@var{Spezifikation}|--from=@var{Spezifikation}] @var{Objekte}@dots{} @end example -You must always specify one of the following options: +Sie müssen immer eine der folgenden Befehlszeilenoptionen angeben: @table @code -@item --to=@var{spec} -@itemx --from=@var{spec} -Specify the host to send to or receive from. @var{spec} must be an SSH spec -such as @code{example.org}, @code{charlie@@example.org}, or +@item --to=@var{Spezifikation} +@itemx --from=@var{Spezifikation} +Gibt den Rechner (den »Host«) an, an den oder von dem gesendet +bzw. empfangen wird. Die @var{Spezifikation} muss eine SSH-Spezifikation +sein wie @code{example.org}, @code{charlie@@example.org} oder @code{charlie@@example.org:2222}. @end table -The @var{items} can be either package names, such as @code{gimp}, or store -items, such as @file{/gnu/store/@dots{}-idutils-4.6}. +Die @var{Objekte} können entweder Paketnamen wie @code{gimp} oder +Store-Objekte wie @file{/gnu/store/@dots{}-idutils-4.6} sein. -When specifying the name of a package to send, it is first built if needed, -unless @option{--dry-run} was specified. Common build options are supported -(@pxref{Gemeinsame Erstellungsoptionen}). +Wenn ein zu sendendes Paket mit Namen angegeben wird, wird es erst erstellt, +falls es nicht im Store vorliegt, außer @option{--dry-run} wurde angegeben +wurde. Alle gemeinsamen Erstellungsoptionen werden unterstützt (siehe +@ref{Gemeinsame Erstellungsoptionen}). @node Aufruf von guix container -@section Invoking @command{guix container} +@section @command{guix container} aufrufen @cindex container @cindex @command{guix container} @quotation Anmerkung -As of version @value{VERSION}, this tool is experimental. The interface is -subject to radical change in the future. +Dieses Werkzeug ist noch experimentell, Stand Version @value{VERSION}. Die +Schnittstelle wird sich in Zukunft grundlegend verändern. @end quotation -The purpose of @command{guix container} is to manipulate processes running -within an isolated environment, commonly known as a ``container'', typically -created by the @command{guix environment} (@pxref{Aufruf von guix environment}) and @command{guix system container} (@pxref{Aufruf von guix system}) commands. +Der Zweck von @command{guix container} ist, in einer isolierten Umgebung +(gemeinhin als »Container« bezeichnet) laufende Prozesse zu manipulieren, +die typischerweise durch die Befehle @command{guix environment} (siehe +@ref{Aufruf von guix environment}) und @command{guix system container} (siehe +@ref{Aufruf von guix system}) erzeugt werden. Die allgemeine Syntax lautet: @example -guix container @var{action} @var{options}@dots{} +guix container @var{Aktion} @var{Optionen}@dots{} @end example -@var{action} specifies the operation to perform with a container, and -@var{options} specifies the context-specific arguments for the action. +Mit @var{Aktion} wird die Operation angegeben, die in der isolierten +Umgebung durchgeführt werden soll, und mit @var{Optionen} werden die +kontextabhängigen Argumente an die Aktion angegeben. -The following actions are available: +Folgende Aktionen sind verfügbar: @table @code @item exec -Execute a command within the context of a running container. +Führt einen Befehl im Kontext der laufenden isolierten Umgebung aus. -The syntax is: +Die Syntax ist: @example -guix container exec @var{pid} @var{program} @var{arguments}@dots{} +guix container exec @var{PID} @var{Programm} @var{Argumente}@dots{} @end example -@var{pid} specifies the process ID of the running container. @var{program} -specifies an executable file name within the root file system of the -container. @var{arguments} are the additional options that will be passed -to @var{program}. +@var{PID} gibt die Prozess-ID der laufenden isolierten Umgebung an. Als +@var{Programm} muss eine ausführbare Datei im Wurzeldateisystem der +isolierten Umgebung angegeben werden. Die @var{Argumente} sind die +zusätzlichen Befehlszeilenoptionen, die an das @var{Programm} übergeben +werden. -The following command launches an interactive login shell inside a Guix -system container, started by @command{guix system container}, and whose -process ID is 9001: +Der folgende Befehl startet eine interaktive Anmelde-Shell innerhalb einer +isolierten Guix-Systemumgebung, gestartet durch @command{guix system +container}, dessen Prozess-ID 9001 ist: @example guix container exec 9001 /run/current-system/profile/bin/bash --login @end example -Note that the @var{pid} cannot be the parent process of a container. It -must be PID 1 of the container or one of its child processes. +Beachten Sie, dass die @var{PID} nicht der Elternprozess der isolierten +Umgebung sein darf, sondern PID 1 in der isolierten Umgebung oder einer +seiner Kindprozesse sein muss. @end table @node Aufruf von guix weather -@section Invoking @command{guix weather} +@section @command{guix weather} aufrufen -Occasionally you're grumpy because substitutes are lacking and you end up -building packages by yourself (@pxref{Substitute}). The @command{guix -weather} command reports on substitute availability on the specified servers -so you can have an idea of whether you'll be grumpy today. It can sometimes -be useful info as a user, but it is primarily useful to people running -@command{guix publish} (@pxref{Aufruf von guix publish}). +Manchmal werden Sie schlecht gelaunt sein, weil es zu wenige Substitute gibt +und die Pakete bei Ihnen selbst erstellt werden müssen (siehe +@ref{Substitute}). Der Befehl @command{guix weather} zeigt einen Bericht +über die Verfügbarkeit von Substituten auf den angegebenen Servern an, damit +Sie sich eine Vorstellung davon machen können, wie es heute um Ihre Laune +bestellt sein wird. Manchmal bekommt man als Nutzer so hilfreiche +Informationen, aber in erster Linie nützt der Befehl den Leuten, die +@command{guix publish} benutzen (siehe @ref{Aufruf von guix publish}). -@cindex statistics, for substitutes -@cindex availability of substitutes -@cindex substitute availability -@cindex weather, substitute availability -Here's a sample run: +@cindex Statistik, für Substitute +@cindex Verfügbarkeit von Substituten +@cindex Substitutverfügbarkeit +@cindex Wetter, Substitutverfügbarkeit +Hier ist ein Beispiel für einen Aufruf davon: @example $ guix weather --substitute-urls=https://guix.example.org -computing 5,872 package derivations for x86_64-linux... -looking for 6,128 store items on https://guix.example.org.. +5.872 Paketableitungen für x86_64-linux berechnen … +Nach 6.128 Store-Objekten von https://guix.example.org suchen … updating list of substitutes from 'https://guix.example.org'... 100.0% https://guix.example.org - 43.4% substitutes available (2,658 out of 6,128) - 7,032.5 MiB of nars (compressed) - 19,824.2 MiB on disk (uncompressed) - 0.030 seconds per request (182.9 seconds in total) - 33.5 requests per second - - 9.8% (342 out of 3,470) of the missing items are queued - 867 queued builds - x86_64-linux: 518 (59.7%) - i686-linux: 221 (25.5%) - aarch64-linux: 128 (14.8%) - build rate: 23.41 builds per hour - x86_64-linux: 11.16 builds per hour - i686-linux: 6.03 builds per hour - aarch64-linux: 6.41 builds per hour -@end example - -@cindex continuous integration, statistics -As you can see, it reports the fraction of all the packages for which -substitutes are available on the server---regardless of whether substitutes -are enabled, and regardless of whether this server's signing key is -authorized. It also reports the size of the compressed archives (``nars'') -provided by the server, the size the corresponding store items occupy in the -store (assuming deduplication is turned off), and the server's throughput. -The second part gives continuous integration (CI) statistics, if the server -supports it. In addition, using the @option{--coverage} option, -@command{guix weather} can list ``important'' package substitutes missing on -the server (see below). - -To achieve that, @command{guix weather} queries over HTTP(S) meta-data -(@dfn{narinfos}) for all the relevant store items. Like @command{guix -challenge}, it ignores signatures on those substitutes, which is innocuous -since the command only gathers statistics and cannot install those -substitutes. - -Among other things, it is possible to query specific system types and -specific package sets. The available options are listed below. + 43,4% Substitute verfügbar (2.658 von 6.128) + 7.032,5 MiB an Nars (komprimiert) + 19.824,2 MiB auf der Platte (unkomprimiert) + 0,030 Sekunden pro Anfrage (182,9 Sekunden insgesamt) + 33,5 Anfragen pro Sekunde + + 9,8% (342 von 3.470) der fehlenden Objekte sind in der Warteschlange + Mindestens 867 Erstellungen in der Warteschlange + x86_64-linux: 518 (59,7%) + i686-linux: 221 (25,5%) + aarch64-linux: 128 (14,8%) + Erstellungsgeschwindigkeit: 23,41 Erstellungen pro Stunde + x86_64-linux: 11,16 Erstellungen pro Stunde + i686-linux: 6,03 Erstellungen pro Stunde + aarch64-linux: 6,41 Erstellungen pro Stunde +@end example + +@cindex Kontinuierliche Integration, Statistik +Wie Sie sehen können, wird der Anteil unter allen Paketen angezeigt, für die +auf dem Server Substitute verfügbar sind — unabhängig davon, ob Substitute +aktiviert sind, und unabhängig davon, ob der signierende Schlüssel des +Servers autorisiert ist. Es wird auch über die Größe der komprimierten +Archive (die »Nars«) berichtet, die vom Server angeboten werden, sowie über +die Größe, die die zugehörigen Store-Objekte im Store belegen würden (unter +der Annahme, dass Deduplizierung abgeschaltet ist) und über den Durchsatz +des Servers. Der zweite Teil sind Statistiken zur Kontinuierlichen +Integration (englisch »Continuous Integration«, kurz CI), wenn der Server +dies unterstützt. Des Weiteren kann @command{guix weather}, wenn es mit der +Befehlszeilenoption @option{--coverage} aufgerufen wird, »wichtige« +Paketsubstitute, die auf dem Server fehlen, auflisten (siehe unten). + +Dazu werden mit @command{guix weather} Anfragen über HTTP(S) zu Metadaten +(@dfn{Narinfos}) für alle relevanten Store-Objekte gestellt. Wie +@command{guix challenge} werden die Signaturen auf den Substituten +ignoriert, was harmlos ist, weil der Befehl nur Statistiken sammelt und +keine Substitute installieren kann. + +Neben anderen Dingen ist es möglich, bestimmte Systemtypen und bestimmte +Paketmengen anzufragen. Die verfügbaren Befehlszeilenoptionen sind folgende: @table @code @item --substitute-urls=@var{URLs} -@var{urls} is the space-separated list of substitute server URLs to query. -When this option is omitted, the default set of substitute servers is -queried. +@var{URLs} ist eine leerzeichengetrennte Liste anzufragender +Substitutserver-URLs. Wird diese Befehlszeilenoption weggelassen, wird die +vorgegebene Menge an Substitutservern angefragt. @item --system=@var{System} @itemx -s @var{System} -Query substitutes for @var{system}---e.g., @code{aarch64-linux}. This -option can be repeated, in which case @command{guix weather} will query -substitutes for several system types. +Substitute für das @var{System} anfragen — z.B.@: für +@code{aarch64-linux}. Diese Befehlszeilenoption kann mehrmals angegeben +werden, wodurch @command{guix weather} die Substitute für mehrere +Systemtypen anfragt. @item --manifest=@var{Datei} -Instead of querying substitutes for all the packages, only ask for those -specified in @var{file}. @var{file} must contain a @dfn{manifest}, as with -the @code{-m} option of @command{guix package} (@pxref{Aufruf von guix package}). - -@item --coverage[=@var{count}] -@itemx -c [@var{count}] -Report on substitute coverage for packages: list packages with at least -@var{count} dependents (zero by default) for which substitutes are -unavailable. Dependent packages themselves are not listed: if @var{b} -depends on @var{a} and @var{a} has no substitutes, only @var{a} is listed, -even though @var{b} usually lacks substitutes as well. The result looks -like this: +Anstatt die Substitute für alle Pakete anzufragen, werden nur die in der +@var{Datei} angegebenen Pakete erfragt. Die @var{Datei} muss ein +@dfn{Manifest} enthalten, wie bei der Befehlszeilenoption @code{-m} von +@command{guix package} (siehe @ref{Aufruf von guix package}). + +@item --coverage[=@var{Anzahl}] +@itemx -c [@var{Anzahl}] +Einen Bericht über die Substitutabdeckung für Pakete ausgeben, d.h.@: Pakete +mit mindestens @var{Anzahl}-vielen Abhängigen (voreingestellt mindestens +null) anzeigen, für die keine Substitute verfügbar sind. Die abhängigen +Pakete werden selbst nicht aufgeführt: Wenn @var{b} von @var{a} abhängt und +Substitute für @var{a} fehlen, wird nur @var{a} aufgeführt, obwohl dann in +der Regel auch die Substitute für @var{b} fehlen. Das Ergebnis sieht so aus: @example $ guix weather --substitute-urls=https://ci.guix.de.info -c 10 -computing 8,983 package derivations for x86_64-linux... -looking for 9,343 store items on https://ci.guix.de.info... -updating substitutes from 'https://ci.guix.de.info'... 100.0% +8.983 Paketableitungen für x86_64-linux berechnen … +Nach 9.343 Store-Objekten von https://ci.guix.de.info suchen … +Liste der Substitute von »https://ci.guix.de.info« wird aktualisiert … 100.0% https://ci.guix.de.info - 64.7% substitutes available (6,047 out of 9,343) + 64.7% Substitute verfügbar (6.047 von 9.343) @dots{} -2502 packages are missing from 'https://ci.guix.de.info' for 'x86_64-linux', among which: +2502 Pakete fehlen auf »https://ci.guix.de.info« für »x86_64-linux«, darunter sind: 58 kcoreaddons@@5.49.0 /gnu/store/@dots{}-kcoreaddons-5.49.0 46 qgpgme@@1.11.1 /gnu/store/@dots{}-qgpgme-1.11.1 37 perl-http-cookiejar@@0.008 /gnu/store/@dots{}-perl-http-cookiejar-0.008 @@ -10352,13 +10828,14 @@ simply fail to build. @node Aufruf von guix processes @section @command{guix processes} aufrufen -The @command{guix processes} command can be useful to developers and system -administrators, especially on multi-user machines and on build farms: it -lists the current sessions (connections to the daemon), as well as -information about the processes involved@footnote{Remote sessions, when -@command{guix-daemon} is started with @option{--listen} specifying a TCP -endpoint, are @emph{not} listed.}. Here's an example of the information it -returns: +Der Befehl @command{guix processes} kann sich für Entwickler und +Systemadministratoren als nützlich erweisen, besonders auf Maschinen mit +mehreren Nutzern und auf Build-Farms. Damit werden die aktuellen Sitzungen +(also Verbindungen zum Daemon) sowie Informationen über die beteiligten +Prozesse aufgelistet@footnote{Entfernte Sitzungen, wenn +@command{guix-daemon} mit @option{--listen} unter Angabe eines TCP-Endpunkts +gestartet wurde, werden @emph{nicht} aufgelistet.}. Hier ist ein Beispiel +für die davon gelieferten Informationen: @example $ sudo guix processes @@ -10381,23 +10858,25 @@ ChildProcess: 27733: guix offload x86_64-linux 7200 1 28800 ChildProcess: 27793: guix offload x86_64-linux 7200 1 28800 @end example -In this example we see that @command{guix-daemon} has three clients: -@command{guix environment}, @command{guix publish}, and the Cuirass -continuous integration tool; their process identifier (PID) is given by the -@code{ClientPID} field. The @code{SessionPID} field gives the PID of the -@command{guix-daemon} sub-process of this particular session. +In diesem Beispiel sehen wir, dass @command{guix-daemon} drei Clients hat: +@command{guix environment}, @command{guix publish} und das Werkzeug Cuirass +zur Kontinuierlichen Integration. Deren Prozesskennung (PID) ist jeweils im +@code{ClientPID}-Feld zu sehen. Das Feld @code{SessionPID} zeigt die PID des +@command{guix-daemon}-Unterprozesses dieser bestimmten Sitzung. -The @code{LockHeld} fields show which store items are currently locked by -this session, which corresponds to store items being built or substituted -(the @code{LockHeld} field is not displayed when @command{guix processes} is -not running as root.) Last, by looking at the @code{ChildProcess} field, we -understand that these three builds are being offloaded (@pxref{Auslagern des Daemons einrichten}). +Das Feld @code{LockHeld} zeigt an, welche Store-Objekte derzeit durch die +Sitzung gesperrt sind, d.h.@: welche Store-Objekte zur Zeit erstellt oder +substituiert werden (das @code{LockHeld}-Feld wird nicht angezeigt, wenn +@command{guix processes} nicht als Administratornutzer root ausgeführt +wird). Letztlich sehen wir am @code{ChildProcess}-Feld oben, dass diese drei +Erstellungen hier ausgelagert (englisch »offloaded«) werden (siehe +@ref{Auslagern des Daemons einrichten}). -The output is in Recutils format so we can use the handy @command{recsel} -command to select sessions of interest (@pxref{Selection Expressions,,, -recutils, GNU recutils manual}). As an example, the command shows the -command line and PID of the client that triggered the build of a Perl -package: +Die Ausgabe ist im Recutils-Format, damit wir den praktischen +@command{recsel}-Befehl benutzen können, um uns interessierende Sitzungen +auszuwählen (siehe @ref{Selection Expressions,,, recutils, GNU recutils +manual}). Zum Beispiel zeigt dieser Befehl die Befehlszeile und PID des +Clients an, der die Erstellung des Perl-Pakets ausgelöst hat: @example $ sudo guix processes | \ @@ -10411,11 +10890,11 @@ ClientCommand: cuirass --cache-directory /var/cache/cuirass @dots{} @chapter Systemkonfiguration @cindex Systemkonfiguration -Die Guix-Systemdistribution unterstützt einen Mechanismus zur konsistenten -Konfiguration des gesamten Systems. Damit meinen wir, dass alle Aspekte der -globalen Systemkonfiguration an einem Ort stehen, d.h. die zur Verfügung -gestellten Systemdienste, die Zeitzone und Einstellungen zur Locale (also -die Anpassung an regionale Gepflogenheiten und Sprachen) sowie +Die »Guix System«-Distribution unterstützt einen Mechanismus zur +konsistenten Konfiguration des gesamten Systems. Damit meinen wir, dass alle +Aspekte der globalen Systemkonfiguration an einem Ort stehen, d.h.@: die zur +Verfügung gestellten Systemdienste, die Zeitzone und Einstellungen zur +Locale (also die Anpassung an regionale Gepflogenheiten und Sprachen) sowie Benutzerkonten. Sie alle werden an derselben Stelle deklariert. So eine @dfn{Systemkonfiguration} kann @dfn{instanziiert}, also umgesetzt, werden. @@ -10423,7 +10902,7 @@ Benutzerkonten. Sie alle werden an derselben Stelle deklariert. So eine Einer der Vorteile, die ganze Systemkonfiguration unter die Kontrolle von Guix zu stellen, ist, dass so transaktionelle Systemaktualisierungen möglich werden und dass diese rückgängig gemacht werden können, wenn das -aktualisierte System nicht richtig funktioniert (@pxref{Funktionalitäten}). Ein +aktualisierte System nicht richtig funktioniert (siehe @ref{Funktionalitäten}). Ein anderer Vorteil ist, dass dieselbe Systemkonfiguration leicht auf einer anderen Maschine oder zu einem späteren Zeitpunkt benutzt werden kann, ohne dazu eine weitere Schicht administrativer Werkzeuge über den systemeigenen @@ -10441,6 +10920,7 @@ Systemdienste zu unterstützen. * Dateisysteme:: Die Dateisystemeinbindungen konfigurieren. * Zugeordnete Geräte:: Näheres zu blockorientierten Speichermedien. * Benutzerkonten:: Benutzerkonten festlegen. +* Tastaturbelegung:: Wie das System Tastendrücke interpretiert. * Locales:: Sprache und kulturelle Konventionen. * Dienste:: Systemdienste festlegen. * Setuid-Programme:: Mit Administratorrechten startende Programme. @@ -10449,7 +10929,8 @@ Systemdienste zu unterstützen. * Initiale RAM-Disk:: Linux-libre hochfahren. * Bootloader-Konfiguration:: Den Bootloader konfigurieren. * Aufruf von guix system:: Instanziierung einer Systemkonfiguration. -* Running Guix in a VM:: How to run Guix System in a virtual machine. +* Guix in einer VM starten:: Wie man »Guix System« in einer virtuellen + Maschine startet. * Dienste definieren:: Neue Dienstdefinitionen hinzufügen. @end menu @@ -10458,7 +10939,7 @@ Systemdienste zu unterstützen. Das Betriebssystem können Sie konfigurieren, indem Sie eine @code{operating-system}-Deklaration in einer Datei speichern, die Sie dann -dem Befehl @command{guix system} übergeben (@pxref{Aufruf von guix system}). Eine einfache Konfiguration mit den vorgegebenen Systemdiensten +dem Befehl @command{guix system} übergeben (siehe @ref{Aufruf von guix system}). Eine einfache Konfiguration mit den vorgegebenen Systemdiensten und dem vorgegebenen Linux-Libre als Kernel und mit einer initialen RAM-Disk und einem Bootloader, sieht so aus: @@ -10473,7 +10954,7 @@ sind optional, wie etwa @code{packages} und @code{services}, sind optional; werden sie nicht angegeben, nehmen sie einen Vorgabewert an. Im Folgenden werden die Effekte von einigen der wichtigsten Feldern -erläutert (@pxref{»operating-system«-Referenz}, für Details zu allen +erläutert (siehe @ref{»operating-system«-Referenz} für Details zu allen verfügbaren Feldern), dann wird beschrieben, wie man das Betriebssystem mit @command{guix system} @dfn{instanziieren} kann. @@ -10496,24 +10977,23 @@ Fall sollte das @code{bootloader}-Feld in etwa so aussehen: (target "/boot/efi")) @end example -Siehe den Abschnitt @xref{Bootloader-Konfiguration} für weitere -Informationen zu den verfügbaren Konfigurationsoptionen. +Siehe den Abschnitt @ref{Bootloader-Konfiguration} für weitere Informationen +zu den verfügbaren Konfigurationsoptionen. @unnumberedsubsec global sichtbare Pakete @vindex %base-packages Im Feld @code{packages} werden Pakete aufgeführt, die auf dem System für -alle Benutzerkonten global sichtbar sein sollen, d.h. in der +alle Benutzerkonten global sichtbar sein sollen, d.h.@: in der @code{PATH}-Umgebungsvariablen jedes Nutzers, zusätzlich zu den -nutzereigenen Profilen (@pxref{Aufruf von guix package}). Die Variable +nutzereigenen Profilen (siehe @ref{Aufruf von guix package}). Die Variable @var{%base-packages} bietet alle Werkzeuge, die man für grundlegende Nutzer- und Administratortätigkeiten erwarten würde, einschließlich der GNU Core Utilities, der GNU Networking Utilities, des leichtgewichtigen Texteditors GNU Zile, @command{find}, @command{grep} und so weiter. Obiges Beispiel fügt zu diesen noch das Programm GNU@tie{}Screen hinzu, welches aus dem Modul -@code{(gnu packages screen)} genommen wird (@pxref{Paketmodule}). Die -Syntax @code{(list package output)} kann benutzt werden, um eine bestimmte -Ausgabe eines Pakets auszuwählen: +@code{(gnu packages screen)} genommen wird (siehe @ref{Paketmodule}). Die Syntax @code{(list package output)} kann benutzt werden, um +eine bestimmte Ausgabe eines Pakets auszuwählen: @lisp (use-modules (gnu packages)) @@ -10549,24 +11029,26 @@ Name-Versions-Paar zu Grunde liegende Paket liefert: @cindex services @vindex %base-services -The @code{services} field lists @dfn{system services} to be made available -when the system starts (@pxref{Dienste}). The @code{operating-system} -declaration above specifies that, in addition to the basic services, we want -the OpenSSH secure shell daemon listening on port 2222 (@pxref{Netzwerkdienste, @code{openssh-service-type}}). Under the hood, -@code{openssh-service-type} arranges so that @command{sshd} is started with -the right command-line options, possibly with supporting configuration files -generated as needed (@pxref{Dienste definieren}). +Das Feld @code{services} listet @dfn{Systemdienste} auf, die zur Verfügung +stehen sollen, wenn das System startet (siehe @ref{Dienste}). Die +@code{operating-system}-Deklaration oben legt fest, dass wir neben den +grundlegenden Basis-Diensten auch wollen, dass der +OpenSSH-Secure-Shell-Daemon auf Port 2222 lauscht (siehe @ref{Netzwerkdienste, @code{openssh-service-type}}). Intern sorgt der +@code{openssh-service-type} dafür, dass @code{sshd} mit den richtigen +Befehlszeilenoptionen aufgerufen wird, je nach Systemkonfiguration werden +auch für dessen Betrieb nötige Konfigurationsdateien erstellt (siehe +@ref{Dienste definieren}). @cindex Anpassung, von Diensten @findex modify-services Gelegentlich werden Sie die Basis-Dienste nicht einfach so, wie sie sind, benutzen, sondern anpassen wollen. Benutzen Sie @code{modify-services} -(@pxref{Service-Referenz, @code{modify-services}}), um die Liste der +(siehe @ref{Service-Referenz, @code{modify-services}}), um die Liste der Basis-Dienste zu modifizieren. Wenn Sie zum Beispiel @code{guix-daemon} und Mingetty (das Programm, womit Sie sich auf der Konsole anmelden) in der @var{%base-services}-Liste -modifizieren möchten (@pxref{Basisdienste, @code{%base-services}}), +modifizieren möchten (siehe @ref{Basisdienste, @code{%base-services}}), schreiben Sie das Folgende in Ihre Betriebssystemdeklaration: @lisp @@ -10587,7 +11069,7 @@ schreiben Sie das Folgende in Ihre Betriebssystemdeklaration: (services %my-services)) @end lisp -Dadurch ändert sich die Konfiguration — d.h. die Dienst-Parameter — der +Dadurch ändert sich die Konfiguration — d.h.@: die Dienst-Parameter — der @code{guix-service-type}-Instanz und die aller @code{mingetty-service-type}-Instanzen in der @var{%base-services}-Liste. Das funktioniert so: Zunächst arrangieren wir, @@ -10621,14 +11103,14 @@ Dieses Beispiel bezieht sich auf das Dateisystem hinter @file{/boot/efi} über dessen UUID, @code{1234-ABCD}. Schreiben Sie statt dieser UUID die richtige UUID für Ihr System, wie sie der Befehl @command{blkid} liefert. -Im Abschnitt @xref{Desktop-Dienste} finden Sie eine genaue Liste der unter -@var{%desktop-services} angebotenen Dienste. Der Abschnitt @xref{X.509-Zertifikate} hat Hintergrundinformationen über das @code{nss-certs}-Paket, +Im Abschnitt @ref{Desktop-Dienste} finden Sie eine genaue Liste der unter +@var{%desktop-services} angebotenen Dienste. Der Abschnitt @ref{X.509-Zertifikate} hat Hintergrundinformationen über das @code{nss-certs}-Paket, das hier benutzt wird. Beachten Sie, dass @var{%desktop-services} nur eine Liste von die Dienste repräsentierenden service-Objekten ist. Wenn Sie Dienste daraus entfernen möchten, können Sie dazu die Prozeduren zum Filtern von Listen benutzen -(@pxref{SRFI-1 Filtering and Partitioning,,, guile, GNU Guile Reference +(siehe @ref{SRFI-1 Filtering and Partitioning,,, guile, GNU Guile Reference Manual}). Beispielsweise liefert der folgende Ausdruck eine Liste mit allen Diensten von @var{%desktop-services} außer dem Avahi-Dienst. @@ -10643,7 +11125,7 @@ Diensten von @var{%desktop-services} außer dem Avahi-Dienst. Angenommen, Sie haben die @code{operating-system}-Deklaration in einer Datei @file{my-system-config.scm} gespeichert, dann instanziiert der Befehl @command{guix system reconfigure my-system-config.scm} diese Konfiguration -und macht sie zum voreingestellten GRUB-Boot-Eintrag (@pxref{Aufruf von guix system}). +und macht sie zum voreingestellten GRUB-Boot-Eintrag (siehe @ref{Aufruf von guix system}). Der normale Weg, die Systemkonfiguration nachträglich zu ändern, ist, die Datei zu aktualisieren und @command{guix system reconfigure} erneut @@ -10658,7 +11140,7 @@ Zurücksetzen bezieht sich hierbei darauf, dass jedes Mal, wenn Sie @command{guix system reconfigure} ausführen, eine neue @dfn{Generation} des Systems erzeugt wird — ohne vorherige Generationen zu verändern. Alte Systemgenerationen bekommen einen Eintrag im Boot-Menü des Bootloaders, -womit Sie alte Generationen beim Booten des Rechners auswählen können, wenn +womit Sie alte Generationen beim Starten des Rechners auswählen können, wenn mit der neuesten Generation etwas nicht stimmt. Eine beruhigende Vorstellung, oder? Der Befehl @command{guix system list-generations} führt die auf der Platte verfügbaren Systemgenerationen auf. Es ist auch möglich, @@ -10667,40 +11149,40 @@ das System mit den Befehlen @command{guix system roll-back} und Obwohl der Befehl @command{guix system reconfigure} vorherige Generationen nicht verändern wird, müssen Sie Acht geben, dass wenn die momentan aktuelle -Generation nicht die neueste ist (z.B. nach einem Aufruf von @command{guix +Generation nicht die neueste ist (z.B.@: nach einem Aufruf von @command{guix system roll-back}), weil @command{guix system reconfigure} alle neueren -Generationen überschreibt (@pxref{Aufruf von guix system}). +Generationen überschreibt (siehe @ref{Aufruf von guix system}). @unnumberedsubsec Die Programmierschnittstelle Auf der Ebene von Scheme wird der Großteil der @code{operating-system}-Deklaration mit der folgenden monadischen Prozedur -instanziiert (@pxref{Die Store-Monade}): +instanziiert (siehe @ref{Die Store-Monade}): @deffn {Monadische Prozedur} operating-system-derivation os Liefert eine Ableitung, mit der ein @code{operating-system}-Objekt @var{os} -erstellt wird (@pxref{Ableitungen}). +erstellt wird (siehe @ref{Ableitungen}). Die Ausgabe der Ableitung ist ein einzelnes Verzeichnis mit Verweisen auf alle Pakete, Konfigurationsdateien und andere unterstützenden Dateien, die nötig sind, um @var{os} zu instanziieren. @end deffn -This procedure is provided by the @code{(gnu system)} module. Along with -@code{(gnu services)} (@pxref{Dienste}), this module contains the guts of -Guix System. Make sure to visit it! +Diese Prozedur wird vom Modul @code{(gnu system)} angeboten. Zusammen mit +@code{(gnu services)} (siehe @ref{Dienste}) deckt dieses Modul den Kern von +»Guix System« ab. Schauen Sie es sich mal an! @node »operating-system«-Referenz @section @code{operating-system}-Referenz Dieser Abschnitt fasst alle Optionen zusammen, die für -@code{operating-system}-Deklarationen zur Verfügung stehen (@pxref{Das Konfigurationssystem nutzen}). +@code{operating-system}-Deklarationen zur Verfügung stehen (siehe @ref{Das Konfigurationssystem nutzen}). @deftp {Datentyp} operating-system Der die Betriebssystemkonfiguration repräsentierende Datentyp. Damit meinen wir die globale Konfiguration des Systems und nicht die, die sich nur auf -einzelne Nutzer bezieht (@pxref{Das Konfigurationssystem nutzen}). +einzelne Nutzer bezieht (siehe @ref{Das Konfigurationssystem nutzen}). @table @asis @item @code{kernel} (Vorgabe: @var{linux-libre}) @@ -10711,23 +11193,46 @@ unterstützt. In der Zukunft wird man auch GNU@tie{}Hurd benutzen können.}. @item @code{kernel-arguments} (Vorgabe: @code{'()}) Eine Liste aus Zeichenketten oder G-Ausdrücken, die für zusätzliche Argumente an den Kernel stehen, die ihm auf seiner Befehlszeile übergeben -werden — wie z.B. @code{("console=ttyS0")}. +werden — wie z.B.@: @code{("console=ttyS0")}. @item @code{bootloader} Das Konfigurationsobjekt für den Bootloader, mit dem das System gestartet -wird. Siehe @xref{Bootloader-Konfiguration}. +wird. Siehe @ref{Bootloader-Konfiguration}. + +@item @code{label} +This is the label (a string) as it appears in the bootloader's menu entry. +The default label includes the kernel name and version. + +@item @code{keyboard-layout} (Vorgabe: @code{#f}) +Dieses Feld gibt an, welche Tastaturbelegung auf der Konsole benutzt werden +soll. Es kann entweder auf @code{#f} gesetzt sein, damit die voreingestellte +Tastaturbelegung benutzt wird (in der Regel ist diese »US English«), oder +ein @code{<keyboard-layout>}-Verbundsobjekt sein. + +Diese Tastaturbelegung wird benutzt, sobald der Kernel gebootet wurde. Diese +Tastaturbelegung wird zum Beispiel auch verwendet, wenn Sie eine Passphrase +eintippen, falls sich Ihr Wurzeldateisystem auf einem mit +@code{luks-device-mapping} zugeordneten Gerät befindet (siehe @ref{Zugeordnete Geräte}). + +@quotation Anmerkung +Damit wird @emph{nicht} angegeben, welche Tastaturbelegung der Bootloader +benutzt, und auch nicht, welche der grafische Display-Server +verwendet. Siehe @ref{Bootloader-Konfiguration} für Informationen darüber, +wie Sie die Tastaturbelegung des Bootloaders angeben können. Siehe @ref{X Window} für Informationen darüber, wie Sie die Tastaturbelegung angeben +können, die das X-Fenstersystem verwendet. +@end quotation @item @code{initrd-modules} (Vorgabe: @code{%base-initrd-modules}) @cindex initrd @cindex initiale RAM-Disk Die Liste der Linux-Kernel-Module, die in der initialen RAM-Disk zur -Verfügung stehen sollen @xref{Initiale RAM-Disk}. +Verfügung stehen sollen. Siehe @ref{Initiale RAM-Disk}. @item @code{initrd} (Vorgabe: @code{base-initrd}) Eine Prozedur, die eine initiale RAM-Disk für den Linux-Kernel liefert. Dieses Feld gibt es, damit auch sehr systemnahe Anpassungen vorgenommen werden können, aber für die normale Nutzung sollte man es kaum -brauchen. Siehe @xref{Initiale RAM-Disk}. +brauchen. Siehe @ref{Initiale RAM-Disk}. @item @code{firmware} (Vorgabe: @var{%base-firmware}) @cindex Firmware @@ -10736,37 +11241,37 @@ können. Vorgegeben ist, dass für Atheros- und Broadcom-basierte WLAN-Geräte nötige Firmware geladen werden kann (genauer jeweils die Linux-libre-Module -@code{ath9k} und @code{b43-open}). Siehe den Abschnitt @xref{Hardware-Überlegungen}, für mehr Informationen zu unterstützter Hardware. +@code{ath9k} und @code{b43-open}). Siehe den Abschnitt @ref{Hardware-Überlegungen} für mehr Informationen zu unterstützter Hardware. @item @code{host-name} Der Hostname @item @code{hosts-file} @cindex hosts-Datei -Ein dateiartiges Objekt (@pxref{G-Ausdrücke, file-like objects}), das für -@file{/etc/hosts} benutzt werden soll (@pxref{Host Names,,, libc, The GNU C -Library Reference Manual}). Der Vorgabewert ist eine Datei mit Einträgen für -@code{localhost} und @var{host-name}. +Ein dateiartiges Objekt (siehe @ref{G-Ausdrücke, file-like objects}), das +für @file{/etc/hosts} benutzt werden soll (siehe @ref{Host Names,,, libc, +The GNU C Library Reference Manual}). Der Vorgabewert ist eine Datei mit +Einträgen für @code{localhost} und @var{host-name}. @item @code{mapped-devices} (Vorgabe: @code{'()}) -Eine Liste zugeordneter Geräte (»mapped devices«). Siehe @xref{Zugeordnete Geräte}. +Eine Liste zugeordneter Geräte (»mapped devices«). Siehe @ref{Zugeordnete Geräte}. @item @code{file-systems} -Eine Liste von Dateisystemen. Siehe @xref{Dateisysteme}. +Eine Liste von Dateisystemen. Siehe @ref{Dateisysteme}. @item @code{swap-devices} (Vorgabe: @code{'()}) @cindex Swap-Geräte Eine Liste von Zeichenketten, die Geräte identifizieren oder als -»Swap-Speicher« genutzte Dateien identifizieren (@pxref{Memory Concepts,,, -libc, The GNU C Library Reference Manual}). Beispiele wären etwa +»Swap-Speicher« genutzte Dateien identifizieren (siehe @ref{Memory +Concepts,,, libc, The GNU C Library Reference Manual}). Beispiele wären etwa @code{'("/dev/sda3")} oder @code{'("/swapdatei")}. Es ist möglich, eine Swap-Datei auf dem Dateisystem eines zugeordneten Geräts anzugeben, sofern auch die Gerätezuordnung und das Dateisystem mit angegeben werden. Siehe -@xref{Zugeordnete Geräte} und @ref{Dateisysteme}. +@ref{Zugeordnete Geräte} und @ref{Dateisysteme}. @item @code{users} (Vorgabe: @code{%base-user-accounts}) @itemx @code{groups} (Vorgabe: @var{%base-groups}) -Liste der Benutzerkonten und Benutzergruppen. Siehe @xref{Benutzerkonten}. +Liste der Benutzerkonten und Benutzergruppen. Siehe @ref{Benutzerkonten}. Wenn in der @code{users}-Liste kein Benutzerkonto mit der UID-Kennung@tie{}0 aufgeführt wird, wird automatisch für den Administrator ein @@ -10774,8 +11279,8 @@ aufgeführt wird, wird automatisch für den Administrator ein @item @code{skeletons} (Vorgabe: @code{(default-skeletons)}) Eine Liste von Tupeln aus je einem Ziel-Dateinamen und einem dateiähnlichen -Objekt (@pxref{G-Ausdrücke, file-like objects}). Diese Objekte werden als -Skeleton-Dateien im Persönlichen Verzeichnis (»Home«-Verzeichnis) jedes +Objekt (siehe @ref{G-Ausdrücke, file-like objects}). Diese Objekte werden +als Skeleton-Dateien im Persönlichen Verzeichnis (»Home«-Verzeichnis) jedes neuen Benutzerkontos angelegt. Ein gültiger Wert könnte zum Beispiel so aussehen: @@ -10798,55 +11303,61 @@ welches unter @file{/run/current-system/profile} zu finden ist. Die vorgegebene Paketmenge umfasst zum Kern des Systems gehörende Werkzeuge (»core utilities«). Es ist empfehlenswert, nicht zum Kern gehörende -Werkzeuge (»non-core«) stattdessen in Nutzerprofile zu installieren -(@pxref{Aufruf von guix package}). +Werkzeuge (»non-core«) stattdessen in Nutzerprofile zu installieren (siehe +@ref{Aufruf von guix package}). @item @code{timezone} -Eine Zeichenkette, die die Zeitzone bezeichnet, wie -z.B. @code{"Europe/Berlin"}. +Eine Zeichenkette, die die Zeitzone bezeichnet, wie z.B.@: +@code{"Europe/Berlin"}. Mit dem Befehl @command{tzselect} können Sie herausfinden, welche Zeichenkette der Zeitzone Ihrer Region entspricht. Wenn Sie eine ungültige Zeichenkette angeben, schlägt @command{guix system} fehl. @item @code{locale} (Vorgabe: @code{"en_US.utf8"}) -Der Name der als Voreinstellung zu verwendenden Locale (@pxref{Locale -Names,,, libc, The GNU C Library Reference Manual}). Siehe @xref{Locales} -für weitere Informationen. +Der Name der als Voreinstellung zu verwendenden Locale (siehe @ref{Locale +Names,,, libc, The GNU C Library Reference Manual}). Siehe @ref{Locales} für +weitere Informationen. @item @code{locale-definitions} (Vorgabe: @var{%default-locale-definitions}) Die Liste der Locale-Definitionen, die kompiliert werden sollen und dann im -laufenden System benutzt werden können. Siehe @xref{Locales}. +laufenden System benutzt werden können. Siehe @ref{Locales}. @item @code{locale-libcs} (Vorgabe: @code{(list @var{glibc})}) Die Liste der GNU-libc-Pakete, deren Locale-Daten und -Werkzeuge zum Erzeugen der Locale-Definitionen verwendet werden sollen. Siehe -@xref{Locales} für eine Erläuterung der Kompatibilitätsauswirkungen, +@ref{Locales} für eine Erläuterung der Kompatibilitätsauswirkungen, deretwegen man diese Option benutzen wollen könnte. @item @code{name-service-switch} (Vorgabe: @var{%default-nss}) Die Konfiguration des Name Service Switch (NSS) der libc — ein -@code{<name-service-switch>}-Objekt. Siehe @xref{Name Service Switch}, für +@code{<name-service-switch>}-Objekt. Siehe @ref{Name Service Switch} für Details. @item @code{services} (Vorgabe: @var{%base-services}) Eine Liste von »service«-Objekten, die die Systemdienste -repräsentieren. Siehe @xref{Dienste}. +repräsentieren. Siehe @ref{Dienste}. + +@cindex essenzielle Dienste +@item @code{essential-services} (Vorgabe: …) +The list of ``essential services''---i.e., things like instances of +@code{system-service-type} and @code{host-name-service-type} (@pxref{Service-Referenz}), which are derived from the operating system definition itself. +As a user you should @emph{never} need to touch this field. @item @code{pam-services} (Vorgabe: @code{(base-pam-services)}) @cindex PAM @cindex Pluggable Authentication Modules @c FIXME: Add xref to PAM services section. -Dienste für »@dfn{Pluggable Authentication Modules}« (PAM) von Linux. +Dienste für @dfn{Pluggable Authentication Modules} (PAM) von Linux. @item @code{setuid-programs} (Vorgabe: @var{%setuid-programs}) Eine Liste von Zeichenketten liefernden G-Ausdrücken, die setuid-Programme -bezeichnen. Siehe @xref{Setuid-Programme}. +bezeichnen. Siehe @ref{Setuid-Programme}. @item @code{sudoers-file} (Vorgabe: @var{%sudoers-specification}) @cindex sudoers-Datei Der Inhalt der Datei @file{/etc/sudoers} als ein dateiähnliches Objekt -(@pxref{G-Ausdrücke, @code{local-file} und @code{plain-file}}). +(siehe @ref{G-Ausdrücke, @code{local-file} und @code{plain-file}}). Diese Datei gibt an, welche Nutzer den Befehl @command{sudo} benutzen dürfen, was sie damit tun und welche Berechtigungen sie so erhalten @@ -10855,13 +11366,34 @@ Mitglieder der Benutzergruppe @code{wheel} den @code{sudo}-Befehl verwenden dürfen. @end table + +@deffn {Scheme Syntax} this-operating-system +When used in the @emph{lexical scope} of an operating system field +definition, this identifier resolves to the operating system being defined. + +The example below shows how to refer to the operating system being defined +in the definition of the @code{label} field: + +@example +(use-modules (gnu) (guix)) + +(operating-system + ;; ... + (label (package-full-name + (operating-system-kernel this-operating-system)))) +@end example + +It is an error to refer to @code{this-operating-system} outside an operating +system definition. +@end deffn + @end deftp @node Dateisysteme @section Dateisysteme Die Liste der Dateisysteme, die eingebunden werden sollen, steht im -@code{file-systems}-Feld der Betriebssystemdeklaration (@pxref{Das Konfigurationssystem nutzen}). Jedes Dateisystem wird mit der +@code{file-systems}-Feld der Betriebssystemdeklaration (siehe @ref{Das Konfigurationssystem nutzen}). Jedes Dateisystem wird mit der @code{file-system}-Form deklariert, etwa so: @example @@ -10880,12 +11412,12 @@ folgende Komponenten auf: @table @asis @item @code{type} -Eine Zeichenkette, die den Typ des Dateisystems spezifiziert, -z.B. @code{"ext4"}. +Eine Zeichenkette, die den Typ des Dateisystems spezifiziert, z.B.@: +@code{"ext4"}. @item @code{mount-point} -Der Einhängepunkt, d.h. der Pfad, an dem das Dateisystem eingebunden werden -soll. +Der Einhängepunkt, d.h.@: der Pfad, an dem das Dateisystem eingebunden +werden soll. @item @code{device} Hiermit wird die »Quelle« des Dateisystems bezeichnet. Sie kann eines von @@ -10918,7 +11450,7 @@ UUID-Kennungen werden mit der @code{uuid}-Form von ihrer Darstellung als Zeichenkette (wie sie vom Befehl @command{tune2fs -l} angezeigt wird) konvertiert@footnote{Die @code{uuid}-Form nimmt 16-Byte-UUIDs entgegen, wie sie in @uref{https://tools.ietf.org/html/rfc4122, RFC@tie{}4122} definiert -sind. Diese Form der UUID wird unter Anderem von der ext2-Familie von +sind. Diese Form der UUID wird unter anderem von der ext2-Familie von Dateisystemen verwendet, sie unterscheidet sich jedoch zum Beispiel von den »UUID« genannten Kennungen, wie man sie bei FAT-Dateisystemen findet.} wie hier: @@ -10930,14 +11462,14 @@ hier: (device (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb"))) @end example -Wenn die Quelle eines Dateisystems ein zugeordnetes Gerät (@pxref{Zugeordnete Geräte}) ist, @emph{muss} sich das @code{device}-Feld auf den zugeordneten -Gerätenamen beziehen — z.B. @file{"/dev/mapper/root-partition"}. Das ist +Wenn die Quelle eines Dateisystems ein zugeordnetes Gerät (siehe @ref{Zugeordnete Geräte}) ist, @emph{muss} sich das @code{device}-Feld auf den zugeordneten +Gerätenamen beziehen — z.B.@: @file{"/dev/mapper/root-partition"}. Das ist nötig, damit das System weiß, dass das Einbinden des Dateisystems davon abhängt, die entsprechende Gerätezuordnung hergestellt zu haben. @item @code{flags} (Vorgabe: @code{'()}) Eine Liste von Symbolen, die Einbinde-Flags (»mount flags«) -bezeichnen. Erkannt werden unter Anderem @code{read-only}, +bezeichnen. Erkannt werden unter anderem @code{read-only}, @code{bind-mount}, @code{no-dev} (Zugang zu besonderen Dateien verweigern), @code{no-suid} (setuid- und setgid-Bits ignorieren) und @code{no-exec} (Programmausführungen verweigern). @@ -10978,7 +11510,7 @@ Betrachten Sie zum Beispiel eine Hierarchie von Einbindungen: und @file{/sys/fs/cgroup/memory}. Ein weiteres Beispiel ist ein Dateisystem, was von einem zugeordneten Gerät -abhängt, zum Beispiel zur Verschlüsselung einer Partition (@pxref{Zugeordnete Geräte}). +abhängt, zum Beispiel zur Verschlüsselung einer Partition (siehe @ref{Zugeordnete Geräte}). @end table @end deftp @@ -10995,21 +11527,21 @@ jeden Fall mindestens diese enthalten. @defvr {Scheme-Variable} %pseudo-terminal-file-system Das als @file{/dev/pts} einzubindende Dateisystem. Es unterstützt über @code{openpty} und ähnliche Funktionen erstellte @dfn{Pseudo-Terminals} -(@pxref{Pseudo-Terminals,,, libc, The GNU C Library Reference +(siehe @ref{Pseudo-Terminals,,, libc, The GNU C Library Reference Manual}). Pseudo-Terminals werden von Terminal-Emulatoren wie @command{xterm} benutzt. @end defvr @defvr {Scheme-Variable} %shared-memory-file-system Dieses Dateisystem wird als @file{/dev/shm} eingebunden, um Speicher -zwischen Prozessen teilen zu können (@pxref{Memory-mapped I/O, +zwischen Prozessen teilen zu können (siehe @ref{Memory-mapped I/O, @code{shm_open},, libc, The GNU C Library Reference Manual}). @end defvr @defvr {Scheme-Variable} %immutable-store Dieses Dateisystem vollzieht einen »bind mount« des @file{/gnu/store}, um ihn für alle Nutzer einschließlich des Administratornutzers @code{root} nur -lesbar zu machen, d.h. Schreibrechte zu entziehen. Dadurch kann als +lesbar zu machen, d.h.@: Schreibrechte zu entziehen. Dadurch kann als @code{root} ausgeführte Software, oder der Systemadministrator, nicht aus Versehen den Store modifizieren. @@ -11044,7 +11576,7 @@ zwischen dem Konzept eines »zugeordneten Geräts« und dem eines Dateisystems besteht: Dort werden bei beiden Ein- und Ausgabeoperationen auf eine Datei in Operationen auf dessen Hintergrundspeicher @emph{übersetzt}. Hurd implementiert zugeordnete Geräte genau wie Dateisysteme mit dem generischen -@dfn{Übersetzer}-Mechanismus (@pxref{Translators,,, hurd, The GNU Hurd +@dfn{Übersetzer}-Mechanismus (siehe @ref{Translators,,, hurd, The GNU Hurd Reference Manual}).}. Ein typisches Beispiel ist eine Gerätezuordnung zur Verschlüsselung: Jeder Schreibzugriff auf das zugeordnete Gerät wird transparent verschlüsselt und jeder Lesezugriff ebenso entschlüsselt. Guix @@ -11093,8 +11625,8 @@ Linux-Kernel-Modul @code{dm-crypt} vorausgesetzt. @defvr {Scheme-Variable} raid-device-mapping Dies definiert ein RAID-Gerät, das mit dem Befehl @code{mdadm} aus dem gleichnamigen Paket als Verbund zusammengestellt wird. Es setzt voraus, dass -das Linux-Kernel-Modul für das entsprechende RAID-Level geladen ist, -z.B. @code{raid456} für RAID-4, RAID-5 oder RAID-6, oder @code{raid10} für +das Linux-Kernel-Modul für das entsprechende RAID-Level geladen ist, z.B.@: +@code{raid456} für RAID-4, RAID-5 oder RAID-6, oder @code{raid10} für RAID-10. @end defvr @@ -11105,7 +11637,7 @@ Das folgende Beispiel gibt eine Zuordnung von @file{/dev/sda3} auf @url{https://gitlab.com/cryptsetup/cryptsetup,Linux Unified Key Setup}, einem Standardmechanismus zur Plattenverschlüsselung. Das Gerät @file{/dev/mapper/home} kann dann als @code{device} einer -@code{file-system}-Deklaration benutzt werden (@pxref{Dateisysteme}). +@code{file-system}-Deklaration benutzt werden (siehe @ref{Dateisysteme}). @example (mapped-device @@ -11115,7 +11647,7 @@ einem Standardmechanismus zur Plattenverschlüsselung. Das Gerät @end example Um nicht davon abhängig zu sein, wie Ihre Geräte nummeriert werden, können -Sie auch die LUKS-UUID (@dfn{unique identifier}, d.h. den eindeutigen +Sie auch die LUKS-UUID (@dfn{unique identifier}, d.h.@: den eindeutigen Bezeichner) des Quellgeräts auf der Befehlszeile ermitteln: @example @@ -11137,7 +11669,7 @@ Swap-Speicher sensible Daten ausgelagert werden können. Eine Möglichkeit ist, eine Swap-Datei auf einem mit LUKS-Verschlüsselung zugeordneten Dateisystem zu verwenden. Dann wird die Swap-Datei verschlüsselt, weil das ganze Gerät verschlüsselt wird. Ein Beispiel finden Sie im Abschnitt -@xref{Vor der Installation,,Disk Partitioning}. +@ref{Vor der Installation,,Disk Partitioning}. Ein RAID-Gerät als Verbund der Partitionen @file{/dev/sda1} und @file{/dev/sdb1} kann wie folgt deklariert werden: @@ -11150,10 +11682,10 @@ Ein RAID-Gerät als Verbund der Partitionen @file{/dev/sda1} und @end example Das Gerät @file{/dev/md0} kann als @code{device} in einer -@code{file-system}-Deklaration dienen (@pxref{Dateisysteme}). Beachten Sie, -dass das RAID-Level dabei nicht angegeben werden muss; es wird während der -initialen Erstellung und Formatierung des RAID-Geräts festgelegt und später -automatisch bestimmt. +@code{file-system}-Deklaration dienen (siehe @ref{Dateisysteme}). Beachten +Sie, dass das RAID-Level dabei nicht angegeben werden muss; es wird während +der initialen Erstellung und Formatierung des RAID-Geräts festgelegt und +später automatisch bestimmt. @node Benutzerkonten @@ -11223,15 +11755,15 @@ werden soll, falls es noch nicht existiert. @item @code{shell} (Vorgabe: Bash) Ein G-Ausdruck, der den Dateinamen des Programms angibt, das dem Benutzer -als Shell dienen soll (@pxref{G-Ausdrücke}). +als Shell dienen soll (siehe @ref{G-Ausdrücke}). @item @code{system?} (Vorgabe: @code{#f}) Dieser boolesche Wert zeigt an, ob das Konto ein »System«-Benutzerkonto ist. Systemkonten werden manchmal anders behandelt, zum Beispiel werden sie -auf graphischen Anmeldebildschirmen nicht aufgeführt. +auf grafischen Anmeldebildschirmen nicht aufgeführt. @anchor{user-account-password} -@cindex password, for user accounts +@cindex Passwort, für Benutzerkonten @item @code{password} (Vorgabe: @code{#f}) Normalerweise lassen Sie dieses Feld auf @code{#f} und initialisieren Benutzerpasswörter als @code{root} mit dem @command{passwd}-Befehl. Die @@ -11239,14 +11771,13 @@ Benutzer lässt man ihr eigenes Passwort dann mit @command{passwd} ändern. Mit @command{passwd} festgelegte Passwörter bleiben natürlich beim Neustarten und beim Rekonfigurieren erhalten. -If you @emph{do} want to set an initial password for an account, then this -field must contain the encrypted password, as a string. You can use the -@code{crypt} procedure for this purpose: +Wenn Sie aber @emph{doch} ein anfängliches Passwort für ein Konto +voreinstellen möchten, muss dieses Feld hier das verschlüsselte Passwort als +Zeichenkette enthalten. Sie können dazu die Prozedur @code{crypt} benutzen. @example (user-account (name "charlie") - (home-directory "/home/charlie") (group "users") ;; Specify a SHA-512-hashed initial password. @@ -11259,9 +11790,10 @@ The hash of this initial password will be available in a file in with care. @end quotation -@xref{Passphrase Storage,,, libc, The GNU C Library Reference Manual}, for -more information on password encryption, and @ref{Encryption,,, guile, GNU -Guile Reference Manual}, for information on Guile's @code{crypt} procedure. +Siehe @ref{Passphrase Storage,,, libc, The GNU C Library Reference Manual} +für weitere Informationen über Passwortverschlüsselung und +@ref{Encryption,,, guile, GNU Guile Reference Manual} für Informationen über +die Prozedur @code{crypt} in Guile. @end table @end deftp @@ -11317,29 +11849,162 @@ dazugehört. Es ist ein Sonderfall und wird automatisch erzeugt, egal ob es spezifiziert wurde oder nicht. @end defvr +@node Tastaturbelegung +@section Tastaturbelegung + +@cindex Tastaturbelegung +@cindex Keymap +To specify what each key of your keyboard does, you need to tell the +operating system what @dfn{keyboard layout} you want to use. The default, +when nothing is specified, is the US English QWERTY layout for 105-key PC +keyboards. However, German speakers will usually prefer the German QWERTZ +layout, French speakers will want the AZERTY layout, and so on; hackers +might prefer Dvorak or bépo, and they might even want to further customize +the effect of some of the keys. This section explains how to get that done. + +@cindex Tastaturbelegung, Definition +There are three components that will want to know about your keyboard +layout: + +@itemize +@item +The @emph{bootloader} may want to know what keyboard layout you want to use +(@pxref{Bootloader-Konfiguration, @code{keyboard-layout}}). This is useful +if you want, for instance, to make sure that you can type the passphrase of +your encrypted root partition using the right layout. + +@item +The @emph{operating system kernel}, Linux, will need that so that the +console is properly configured (@pxref{»operating-system«-Referenz, +@code{keyboard-layout}}). + +@item +The @emph{graphical display server}, usually Xorg, also has its own idea of +the keyboard layout (@pxref{X Window, @code{keyboard-layout}}). +@end itemize + +Guix allows you to configure all three separately but, fortunately, it +allows you to share the same keyboard layout for all three components. + +@cindex XKB, Tastaturbelegungen +Keyboard layouts are represented by records created by the +@code{keyboard-layout} procedure of @code{(gnu system keyboard)}. Following +the X Keyboard extension (XKB), each layout has four attributes: a name +(often a language code such as ``fi'' for Finnish or ``jp'' for Japanese), +an optional variant name, an optional keyboard model name, and a possibly +empty list of additional options. In most cases the layout name is all you +care about. Here are a few example: + +@example +;; The German QWERTZ layout. Here we assume a standard +;; "pc105" keyboard model. +(keyboard-layout "de") + +;; The bépo variant of the French layout. +(keyboard-layout "fr" "bepo") + +;; The Catalan layout. +(keyboard-layout "es" "cat") + +;; The Latin American Spanish layout. In addition, the +;; "Caps Lock" key is used as an additional "Ctrl" key, +;; and the "Menu" key is used as a "Compose" key to enter +;; accented letters. +(keyboard-layout "latam" + #:options '("ctrl:nocaps" "compose:menu")) + +;; The Russian layout for a ThinkPad keyboard. +(keyboard-layout "ru" #:model "thinkpad") + +;; The "US international" layout, which is the US layout plus +;; dead keys to enter accented characters. This is for an +;; Apple MacBook keyboard. +(keyboard-layout "us" "intl" #:model "macbook78") +@end example + +See the @file{share/X11/xkb} directory of the @code{xkeyboard-config} +package for a complete list of supported layouts, variants, and models. + +@cindex Tastaturbelegung, Konfiguration +Let's say you want your system to use the Turkish keyboard layout throughout +your system---bootloader, console, and Xorg. Here's what your system +configuration would look like: + +@findex set-xorg-configuration +@lisp +;; Using the Turkish layout for the bootloader, the console, +;; and for Xorg. + +(operating-system + ;; ... + (keyboard-layout (keyboard-layout "tr")) ;for the console + (bootloader (bootloader-configuration + (bootloader grub-efi-bootloader) + (target "/boot/efi") + (keyboard-layout keyboard-layout))) ;for GRUB + (services (cons (set-xorg-configuration + (xorg-configuration ;for Xorg + (keyboard-layout keyboard-layout))) + %desktop-services))) +@end lisp + +In the example above, for GRUB and for Xorg, we just refer to the +@code{keyboard-layout} field defined above, but we could just as well refer +to a different layout. The @code{set-xorg-configuration} procedure +communicates the desired Xorg configuration to the graphical log-in manager, +by default GDM. + +We've discussed how to specify the @emph{default} keyboard layout of your +system when it starts, but you can also adjust it at run time: + +@itemize +@item +If you're using GNOME, its settings panel has a ``Region & Language'' entry +where you can select one or more keyboard layouts. + +@item +Under Xorg, the @command{setxkbmap} command (from the same-named package) +allows you to change the current layout. For example, this is how you would +change the layout to US Dvorak: + +@example +setxkbmap us dvorak +@end example + +@item +The @code{loadkeys} command changes the keyboard layout in effect in the +Linux console. However, note that @code{loadkeys} does @emph{not} use the +XKB keyboard layout categorization described above. The command below loads +the French bépo layout: + +@example +loadkeys fr-bepo +@end example +@end itemize + @node Locales @section Locales @cindex Locale Eine @dfn{Locale} legt die kulturellen Konventionen einer bestimmten Sprache -und Region auf der Welt fest (@pxref{Locales,,, libc, The GNU C Library +und Region auf der Welt fest (siehe @ref{Locales,,, libc, The GNU C Library Reference Manual}). Jede Locale hat einen Namen, der typischerweise von der -Form @code{@var{Sprache}_@var{Territorium}.@var{Kodierung}} — z.B. benennt +Form @code{@var{Sprache}_@var{Gebiet}.@var{Kodierung}} — z.B.@: benennt @code{fr_LU.utf8} die Locale für französische Sprache mit den kulturellen Konventionen aus Luxemburg unter Verwendung der UTF-8-Kodierung. @cindex Locale-Definition Normalerweise werden Sie eine standardmäßig zu verwendende Locale für die Maschine vorgeben wollen, indem Sie das @code{locale}-Feld der -@code{operating-system}-Deklaration verwenden (@pxref{»operating-system«-Referenz, @code{locale}}). +@code{operating-system}-Deklaration verwenden (siehe @ref{»operating-system«-Referenz, @code{locale}}). Die ausgewählte Locale wird automatisch zu den dem System bekannten @dfn{Locale-Definitionen} hinzugefügt, falls nötig, und ihre Kodierung wird -aus dem Namen hergeleitet — z.B. wird angenommen, dass @code{bo_CN.utf8} als -Kodierung @code{UTF-8} verwendet. Zusätzliche Locale-Definitionen können im -Feld @code{locale-definitions} vom @code{operating-system} festgelegt werden -— das ist zum Beispiel dann nützlich, wenn die Kodierung nicht aus dem -Locale-Namen hergeleitet werden konnte. Die vorgegebene Menge an +aus dem Namen hergeleitet — z.B.@: wird angenommen, dass @code{bo_CN.utf8} +als Kodierung @code{UTF-8} verwendet. Zusätzliche Locale-Definitionen können +im Feld @code{locale-definitions} vom @code{operating-system} festgelegt +werden — das ist zum Beispiel dann nützlich, wenn die Kodierung nicht aus +dem Locale-Namen hergeleitet werden konnte. Die vorgegebene Menge an Locale-Definitionen enthält manche weit verbreiteten Locales, aber um Platz zu sparen, nicht alle verfügbaren Locales. @@ -11366,8 +12031,8 @@ Die kompilierten Locale-Definitionen sind unter @file{/run/current-system/locale/X.Y} verfügbar, wobei @code{X.Y} die Version von libc bezeichnet. Dies entspricht dem Pfad, an dem eine von Guix ausgelieferte GNU@tie{}libc standardmäßig nach Locale-Daten sucht. Er kann -überschrieben werden durch die Umgebungsvariable @code{LOCPATH} -(@pxref{locales-and-locpath, @code{LOCPATH} und Locale-Pakete}). +überschrieben werden durch die Umgebungsvariable @code{LOCPATH} (siehe +@ref{locales-and-locpath, @code{LOCPATH} und Locale-Pakete}). Die @code{locale-definition}-Form wird vom Modul @code{(gnu system locale)} zur Verfügung gestellt. Details folgen unten. @@ -11378,15 +12043,15 @@ Dies ist der Datentyp einer Locale-Definition. @table @asis @item @code{name} -Der Name der Locale. Siehe @xref{Locale Names,,, libc, The GNU C Library +Der Name der Locale. Siehe @ref{Locale Names,,, libc, The GNU C Library Reference Manual} für mehr Informationen zu Locale-Namen. @item @code{source} -Der Name der Quelle der Locale. Typischerweise ist das der Teil aus -@code{@var{Sprache}_@var{Territorium}} des Locale-Namens. +Der Name der Quelle der Locale. Typischerweise ist das der Teil +@code{@var{Sprache}_@var{Gebiet}} des Locale-Namens. @item @code{charset} (Vorgabe: @code{"UTF-8"}) -Der »Zeichensatz« oder das »Code set«, d.h. die Kodierung dieser Locale, +Der »Zeichensatz« oder das »Code set«, d.h.@: die Kodierung dieser Locale, @uref{http://www.iana.org/assignments/character-sets, wie die IANA sie definiert}. @@ -11401,7 +12066,7 @@ benutzt wird. @cindex Locale-Name @cindex Normalisiertes Codeset in Locale-Namen Diese Locale-Definitionen benutzen das @dfn{normalisierte Codeset} für den -Teil des Namens, der nach dem Punkt steht (@pxref{Using gettextized +Teil des Namens, der nach dem Punkt steht (siehe @ref{Using gettextized software, normalized codeset,, libc, The GNU C Library Reference Manual}). Zum Beispiel ist @code{uk_UA.utf8} enthalten, dagegen ist etwa @code{uk_UA.UTF-8} darin @emph{nicht} enthalten. @@ -11412,9 +12077,9 @@ Manual}). Zum Beispiel ist @code{uk_UA.utf8} enthalten, dagegen ist etwa @cindex Inkompatibilität, von Locale-Daten @code{operating-system}-Deklarationen verfügen über ein @code{locale-libcs}-Feld, um die GNU@tie{}libc-Pakete anzugeben, die zum -Kompilieren von Locale-Deklarationen verwendet werden sollen -(@pxref{»operating-system«-Referenz}). »Was interessiert mich das?«, könnten -Sie fragen. Naja, leider ist das binäre Format der Locale-Daten von einer +Kompilieren von Locale-Deklarationen verwendet werden sollen (siehe +@ref{»operating-system«-Referenz}). »Was interessiert mich das?«, könnten Sie +fragen. Naja, leider ist das binäre Format der Locale-Daten von einer libc-Version auf die nächste manchmal nicht miteinander kompatibel. @c See <https://sourceware.org/ml/libc-alpha/2015-09/msg00575.html> @@ -11430,14 +12095,14 @@ meisten, aber nicht alle, Locale-Daten von libc 2.21 lesen (Daten zu Aufrufe von @code{setlocale} vielleicht fehl, aber das Programm läuft weiter. -The ``problem'' with Guix is that users have a lot of freedom: They can -choose whether and when to upgrade software in their profiles, and might be -using a libc version different from the one the system administrator used to -build the system-wide locale data. +Das »Problem« mit Guix ist, dass Nutzer viel Freiheit genießen: Sie können +wählen, ob und wann sie die Software in ihren Profilen aktualisieren und +benutzen vielleicht eine andere libc-Version als sie der Systemadministrator +benutzt hat, um die systemweiten Locale-Daten zu erstellen. Glücklicherweise können »unprivilegierte« Nutzer ohne zusätzliche Berechtigungen dann zumindest ihre eigenen Locale-Daten installieren und -@var{GUIX_LOCPATH} entsprechend definieren (@pxref{locales-and-locpath, +@var{GUIX_LOCPATH} entsprechend definieren (siehe @ref{locales-and-locpath, @code{GUIX_LOCPATH} und Locale-Pakete}). Trotzdem ist es am besten, wenn die systemweiten Locale-Daten unter @@ -11466,16 +12131,18 @@ für libc 2.21 als auch die aktuelle Version von libc in @cindex Systemdienste Ein wichtiger Bestandteil des Schreibens einer @code{operating-system}-Deklaration ist das Auflisten der -@dfn{Systemdienste} und ihrer Konfiguration (@pxref{Das Konfigurationssystem nutzen}). Systemdienste sind typischerweise im Hintergrund laufende -Daemon-Programme, die beim Hochfahren des Systems gestartet werden, oder -andere Aktionen, die zu dieser Zeit durchgeführt werden müssen — wie das -Konfigurieren des Netzwerkzugangs. +@dfn{Systemdienste} und ihrer Konfiguration (siehe @ref{Das Konfigurationssystem nutzen}). Systemdienste sind typischerweise im Hintergrund +laufende Daemon-Programme, die beim Hochfahren des Systems gestartet werden, +oder andere Aktionen, die zu dieser Zeit durchgeführt werden müssen — wie +das Konfigurieren des Netzwerkzugangs. -Guix has a broad definition of ``service'' (@pxref{Dienstkompositionen}), -but many services are managed by the GNU@tie{}Shepherd (@pxref{Shepherd-Dienste}). On a running system, the @command{herd} command allows you to -list the available services, show their status, start and stop them, or do -other specific operations (@pxref{Jump Start,,, shepherd, The GNU Shepherd -Manual}). For example: +Guix hat eine weit gefasste Definition, was ein »Dienst« ist (siehe +@ref{Dienstkompositionen}), aber viele Dienste sind solche, die von +GNU@tie{}Shepherd verwaltet werden (siehe @ref{Shepherd-Dienste}). Auf +einem laufenden System kann der @command{herd}-Befehl benutzt werden, um +verfügbare Dienste aufzulisten, ihren Status anzuzeigen, sie zu starten und +zu stoppen oder andere angebotene Operationen durchzuführen (siehe @ref{Jump +Start,,, shepherd, The GNU Shepherd Manual}). Zum Beispiel: @example # herd status @@ -11526,6 +12193,7 @@ den Diensten im Kern des Systems (»core services«) * Telefondienste:: Telefoniedienste. * Überwachungsdienste:: Dienste zur Systemüberwachung. * Kerberos-Dienste:: Kerberos-Dienste. +* LDAP-Dienste:: LDAP-Dienste. * Web-Dienste:: Web-Server. * Zertifikatsdienste:: TLS-Zertifikate via Let’s Encrypt. * DNS-Dienste:: DNS-Daemons. @@ -11549,7 +12217,7 @@ Folgenden sind die von diesem Modul exportierten Dienste aufgeführt. @defvr {Scheme-Variable} %base-services Diese Variable enthält eine Liste von Basis-Diensten, die man auf einem -System vorzufinden erwartet (siehe @pxref{Diensttypen und Dienste} für +System vorzufinden erwartet (siehe @ref{Diensttypen und Dienste} für weitere Informationen zu Dienstobjekten): ein Anmeldungsdienst (mingetty) auf jeder Konsole (jedem »tty«), syslogd, den Name Service Cache Daemon (nscd) von libc, die udev-Geräteverwaltung und weitere. @@ -11592,7 +12260,7 @@ möchten, können Sie den Wert ändern auf: Da dieser Dienst Teil der @code{%base-services} ist, können Sie @code{modify-services} benutzen, um die Liste besonderer Dateien abzuändern -(@pxref{Service-Referenz, @code{modify-services}}). Die leichte +(siehe @ref{Service-Referenz, @code{modify-services}}). Die leichte Alternative, um eine besondere Datei hinzuzufügen, ist über die Prozedur @code{extra-special-file} (siehe unten). @end defvr @@ -11618,7 +12286,7 @@ als @var{Name} festlegt. @deffn {Scheme-Prozedur} login-service @var{Konfiguration} Liefert einen Dienst, der die Benutzeranmeldung möglich macht. Dazu verwendet er die angegebene @var{Konfiguration}, ein -@code{<login-configuration>}-Objekt, das unter Anderem die beim Anmelden +@code{<login-configuration>}-Objekt, das unter anderem die beim Anmelden angezeigte Mitteilung des Tages (englisch »Message of the Day«) festlegt. @end deffn @@ -11641,7 +12309,7 @@ angelegt wurde. @deffn {Scheme-Prozedur} mingetty-service @var{Konfiguration} Liefert einen Dienst, der mingetty nach den Vorgaben der @var{Konfiguration} -ausführt, einem @code{<mingetty-configuration>}-Objekt, das unter Anderem +ausführt, einem @code{<mingetty-configuration>}-Objekt, das unter anderem die Konsole (das »tty«) festlegt, auf der mingetty laufen soll. @end deffn @@ -11652,8 +12320,8 @@ vorgegebenen Implementierung zur Anmeldung auf einer virtuellen Konsole. @table @asis @item @code{tty} -Der Name der Konsole, auf der diese Mingetty-Instanz läuft — -z.B. @code{"tty1"}. +Der Name der Konsole, auf der diese Mingetty-Instanz läuft — z.B.@: +@code{"tty1"}. @item @code{auto-login} (Vorgabe: @code{#f}) Steht dieses Feld auf wahr, muss es eine Zeichenkette sein, die den @@ -11680,7 +12348,7 @@ Welches Mingetty-Paket benutzt werden soll. @deffn {Scheme-Prozedur} agetty-service @var{Konfiguration} Liefert einen Dienst, um agetty entsprechend der @var{Konfiguration} auszuführen, welche ein @code{<agetty-configuration>}-Objekt sein muss, das -unter Anderem festlegt, auf welchem tty es laufen soll. +unter anderem festlegt, auf welchem tty es laufen soll. @end deffn @deftp {Datentyp} agetty-configuration @@ -11692,7 +12360,7 @@ die Handbuchseite @code{agetty(8)} für mehr Informationen. @item @code{tty} Der Name der Konsole, auf der diese Instanz von agetty läuft, als -Zeichenkette — z.B. @code{"ttyS0"}. Dieses Argument ist optional, sein +Zeichenkette — z.B.@: @code{"ttyS0"}. Dieses Argument ist optional, sein Vorgabewert ist eine vernünftige Wahl unter den seriellen Schnittstellen, auf deren Benutzung der Linux-Kernel eingestellt ist. @@ -11704,8 +12372,9 @@ Andernfalls wird agetty, falls auf der Kernel-Befehlszeile eine Option @code{console} mit einem tty vorkommt, den daraus extrahierten Gerätenamen der seriellen Schnittstelle benutzen. -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. +In beiden Fällen wird agetty nichts an den anderen Einstellungen für +serielle Geräte verändern (Baud-Rate etc.), in der Hoffnung, dass Linux sie +auf die korrekten Werte festgelegt hat. @item @code{baud-rate} (Vorgabe: @code{#f}) Eine Zeichenkette, die aus einer kommagetrennten Liste von einer oder @@ -11725,7 +12394,7 @@ angegebene Nutzer automatisch angemeldet, ohne nach einem Anmeldenamen oder Passwort zu fragen. @item @code{no-reset?} (Vorgabe: @code{#f}) -Steht dies auf @code{#t}, werden die Cflags des Terminals (d.h. dessen +Steht dies auf @code{#t}, werden die Cflags des Terminals (d.h.@: dessen Steuermodi) nicht zurückgesetzt. @item @code{host} (Vorgabe: @code{#f}) @@ -11749,7 +12418,7 @@ Ist dies auf @code{#t} gesetzt, wird der Inhalt der Datei @file{/etc/issue} @item @code{init-string} (Vorgabe: @code{#f}) Dies akzeptiert eine Zeichenkette, die zum tty oder zum Modem zuerst vor -allem Anderen gesendet wird. Es kann benutzt werden, um ein Modem zu +allem anderen gesendet wird. Es kann benutzt werden, um ein Modem zu initialisieren. @item @code{no-clear?} (Vorgabe: @code{#f}) @@ -11877,7 +12546,7 @@ müssen hier als eine Liste von Zeichenketten angegeben werden. Liefert einen Dienst, um @uref{https://www.freedesktop.org/wiki/Software/kmscon,kmscon} entsprechend der @var{Konfiguration} auszuführen. Diese ist ein -@code{<kmscon-configuration>}-Objekt, das unter Anderem angibt, auf welchem +@code{<kmscon-configuration>}-Objekt, das unter anderem angibt, auf welchem tty es ausgeführt werden soll. @end deffn @@ -11888,7 +12557,7 @@ auf virtuellen Konsolen ermöglicht. @table @asis @item @code{virtual-terminal} -Der Name der Konsole, auf der diese Kmscon läuft — z.B. @code{"tty1"}. +Der Name der Konsole, auf der diese Kmscon läuft — z.B.@: @code{"tty1"}. @item @code{login-program} (Vorgabe: @code{#~(string-append #$shadow "/bin/login")}) Ein G-Ausdruck, der den Namen des Anmeldeprogramms angibt. Als Vorgabe wird @@ -11916,7 +12585,7 @@ Das Kmscon-Paket, das benutzt werden soll. @deffn {Scheme-Prozedur} nscd-service [@var{Konfiguration}] [#:glibc glibc] @ [#:name-services '()] Liefert einen Dienst, der den Name Service Cache Daemon (nscd) von libc mit der angegebenen @var{Konfiguration} ausführt — -diese muss ein @code{<nscd-configuration>}-Objekt sein. Siehe @xref{Name Service Switch} für ein Beispiel. +diese muss ein @code{<nscd-configuration>}-Objekt sein. Siehe @ref{Name Service Switch} für ein Beispiel. Der Einfachheit halber bietet der Shepherd-Dienst für nscd die folgenden Aktionen an: @@ -11958,7 +12627,7 @@ Daemon (kurz »nscd«). @item @code{name-services} (Vorgabe: @code{'()}) Liste von Paketen, die @dfn{Namensdienste} bezeichnen, die für den nscd -sichtbar sein müssen, z.B. @code{(list @var{nss-mdns})}. +sichtbar sein müssen, z.B.@: @code{(list @var{nss-mdns})}. @item @code{glibc} (Vorgabe: @var{glibc}) Ein Paket-Objekt, das die GNU-C-Bibliothek angibt, woraus der @@ -11989,8 +12658,8 @@ Parametern definiert. Dies ist ein Symbol, was den Namen der Datenbank repräsentiert, die zwischengespeichert werden soll. Gültige Werte sind @code{passwd}, @code{group}, @code{hosts} und @code{services}, womit jeweils die -entsprechende NSS-Datenbank bezeichnet wird (@pxref{NSS Basics,,, libc, The -GNU C Library Reference Manual}). +entsprechende NSS-Datenbank bezeichnet wird (siehe @ref{NSS Basics,,, libc, +The GNU C Library Reference Manual}). @item @code{positive-time-to-live} @itemx @code{negative-time-to-live} (Vorgabe: @code{20}) @@ -12057,21 +12726,21 @@ Die zu benutzende syslog-Konfigurationsdatei. Liefert einen Dienst, der einen syslog-Daemon entsprechend der @var{Konfiguration} ausführt. -@xref{syslogd invocation,,, inetutils, GNU Inetutils}, für weitere +Siehe @ref{syslogd invocation,,, inetutils, GNU Inetutils} für weitere Informationen über die Syntax der Konfiguration. @end deffn @defvr {Scheme-Variable} guix-service-type Dies ist der Typ für den Dienst, der den Erstellungs-Daemon -@command{guix-daemon} ausführt (@pxref{Aufruf des guix-daemon}). Als Wert muss -ein @code{guix-configuration}-Verbundsobjekt verwendet werden, wie unten -beschrieben. +@command{guix-daemon} ausführt (siehe @ref{Aufruf des guix-daemon}). Als Wert +muss ein @code{guix-configuration}-Verbundsobjekt verwendet werden, wie +unten beschrieben. @end defvr @anchor{guix-configuration-type} @deftp {Datentyp} guix-configuration Dieser Datentyp repräsentiert die Konfiguration des Erstellungs-Daemons von -Guix. Siehe @xref{Aufruf des guix-daemon} für weitere Informationen. +Guix. Siehe @ref{Aufruf des guix-daemon} für weitere Informationen. @table @asis @item @code{guix} (Vorgabe: @var{guix}) @@ -12085,15 +12754,16 @@ Die Anzahl zu erzeugender Erstellungs-Benutzerkonten. @item @code{authorize-key?} (Vorgabe: @code{#t}) @cindex Substitute, deren Autorisierung -Whether to authorize the substitute keys listed in -@code{authorized-keys}---by default that of @code{@value{SUBSTITUTE-SERVER}} -(@pxref{Substitute}). +Ob die unter @code{authorized-keys} aufgelisteten Substitutschlüssel +autorisiert werden sollen — vorgegeben ist, den von +@code{@value{SUBSTITUTE-SERVER}} zu autorisieren (siehe @ref{Substitute}). @vindex %default-authorized-guix-keys @item @code{authorized-keys} (Vorgabe: @var{%default-authorized-guix-keys}) -The list of authorized key files for archive imports, as a list of -string-valued gexps (@pxref{Aufruf von guix archive}). By default, it -contains that of @code{@value{SUBSTITUTE-SERVER}} (@pxref{Substitute}). +Die Liste der Dateien mit autorisierten Schlüsseln, d.h.@: eine Liste von +Zeichenketten als G-Ausdrücke (siehe @ref{Aufruf von guix archive}). Der +vorgegebene Inhalt ist der Schlüssel von @code{@value{SUBSTITUTE-SERVER}} +(siehe @ref{Substitute}). @item @code{use-substitutes?} (Vorgabe: @code{#t}) Ob Substitute benutzt werden sollen. @@ -12259,35 +12929,11 @@ von dort als Startwert für @file{/dev/urandom} auslesen zu können. Als Vorgabe wird @file{/var/lib/random-seed} verwendet. @end defvr -@cindex Keymap -@cindex Tastatur -@deffn {Scheme-Prozedur} console-keymap-service @var{Dateien} ... -@cindex Tastaturbelegung -Liefert einen Dienst, um Tastenzuordnungen (»Keymaps«) für die Konsole aus -den @var{Dateien} laden zu können. Dazu wird der Befehl @command{loadkeys} -aufgerufen. Wahrscheinlich möchten Sie irgendeine vorgefertigte Keymap -laden, etwa so: - -@example -(console-keymap-service "dvorak") -@end example - -Oder um zum Beispiel eine schwedische Tastaturbelegung zu bekommen, könnten -Sie die folgenden Keymaps kombinieren müssen: -@example -(console-keymap-service "se-lat6" "se-fi-lat6") -@end example - -Sie können alternativ auch den oder die vollständigen Dateinamen Ihrer -Keymap(s) angeben. Siehe @code{man loadkeys} für Details. - -@end deffn - @cindex Maus @cindex gpm @defvr {Scheme-Variable} gpm-service-type Dieser Typ wird für den Dienst verwendet, der GPM ausführt, den -»@dfn{General-Purpose Mouse Daemon}«, welcher zur Linux-Konsole +@dfn{General-Purpose Mouse Daemon}, welcher zur Linux-Konsole Mausunterstützung hinzufügt. GPM ermöglicht es seinen Benutzern, auch in der Konsole die Maus zu benutzen und damit etwa Text auszuwählen, zu kopieren und einzufügen. @@ -12304,7 +12950,7 @@ Repräsentiert die Konfiguration von GPM. @item @code{options} (Vorgabe: @code{%default-gpm-options}) Befehlszeilenoptionen, die an @command{gpm} übergeben werden. Die vorgegebenen Optionen weisen @command{gpm} an, auf Maus-Ereignisse auf der -Datei @file{/dev/input/mice} zu lauschen. Siehe @xref{Command Line,,, gpm, +Datei @file{/dev/input/mice} zu lauschen. Siehe @ref{Command Line,,, gpm, gpm manual} für weitere Informationen. @item @code{gpm} (Vorgabe: @code{gpm}) @@ -12315,12 +12961,12 @@ Das GPM-Paket, was benutzt werden soll. @anchor{guix-publish-service-type} @deffn {Scheme-Variable} guix-publish-service-type -Dies ist der Diensttyp für @command{guix publish} (@pxref{Aufruf von guix publish}). Sein Wert muss ein @code{guix-publish-configuration}-Objekt sein, +Dies ist der Diensttyp für @command{guix publish} (siehe @ref{Aufruf von guix publish}). Sein Wert muss ein @code{guix-publish-configuration}-Objekt sein, wie im Folgenden beschrieben. Hierbei wird angenommen, dass @file{/etc/guix} bereits ein mit @command{guix -archive --generate-key} erzeugtes Schlüsselpaar zum Signieren enthält -(@pxref{Aufruf von guix archive}). Falls nicht, wird der Dienst beim Starten +archive --generate-key} erzeugtes Schlüsselpaar zum Signieren enthält (siehe +@ref{Aufruf von guix archive}). Falls nicht, wird der Dienst beim Starten fehlschlagen. @end deffn @@ -12349,27 +12995,27 @@ Prozessorauslastung. @item @code{nar-path} (Vorgabe: @code{"nar"}) Der URL-Pfad, unter dem »Nars« zum Herunterladen angeboten werden. Siehe -@xref{Aufruf von guix publish, @code{--nar-path}}, für Details. +@ref{Aufruf von guix publish, @code{--nar-path}} für Details. @item @code{cache} (Vorgabe: @code{#f}) Wenn dies @code{#f} ist, werden Archive nicht zwischengespeichert, sondern erst bei einer Anfrage erzeugt. Andernfalls sollte dies der Name eines -Verzeichnisses sein — z.B. @code{"/var/cache/guix/publish"} —, in das +Verzeichnisses sein — z.B.@: @code{"/var/cache/guix/publish"} —, in das @command{guix publish} fertige Archive und Metadaten zwischenspeichern -soll. Siehe @xref{Aufruf von guix publish, @option{--cache}}, für weitere +soll. Siehe @ref{Aufruf von guix publish, @option{--cache}} für weitere Informationen über die jeweiligen Vor- und Nachteile. @item @code{workers} (Vorgabe: @code{#f}) Ist dies eine ganze Zahl, gibt es die Anzahl der Worker-Threads an, die zum Zwischenspeichern benutzt werden; ist es @code{#f}, werden so viele benutzt, -wie es Prozessoren gibt. Siehe @xref{Aufruf von guix publish, -@option{--workers}}, für mehr Informationen. +wie es Prozessoren gibt. Siehe @ref{Aufruf von guix publish, +@option{--workers}} für mehr Informationen. @item @code{ttl} (Vorgabe: @code{#f}) Wenn dies eine ganze Zahl ist, bezeichnet sie die @dfn{Time-to-live} als die Anzahl der Sekunden, die heruntergeladene veröffentlichte Archive -zwischengespeichert werden dürfen. Siehe @xref{Aufruf von guix publish, -@option{--ttl}}, für mehr Informationen. +zwischengespeichert werden dürfen. Siehe @ref{Aufruf von guix publish, +@option{--ttl}} für mehr Informationen. @end table @end deftp @@ -12419,28 +13065,31 @@ Echtzeit-Audio-Systeme verwendet. @cindex cron @cindex mcron -@cindex scheduling jobs -The @code{(gnu services mcron)} module provides an interface to -GNU@tie{}mcron, a daemon to run jobs at scheduled times (@pxref{Top,,, -mcron, GNU@tie{}mcron}). GNU@tie{}mcron is similar to the traditional Unix -@command{cron} daemon; the main difference is that it is implemented in -Guile Scheme, which provides a lot of flexibility when specifying the -scheduling of jobs and their actions. - -The example below defines an operating system that runs the -@command{updatedb} (@pxref{Invoking updatedb,,, find, Finding Files}) and -the @command{guix gc} commands (@pxref{Aufruf von guix gc}) daily, as well as -the @command{mkid} command on behalf of an unprivileged user (@pxref{mkid -invocation,,, idutils, ID Database Utilities}). It uses gexps to introduce -job definitions that are passed to mcron (@pxref{G-Ausdrücke}). +@cindex Planen von Aufträgen +Das Modul @code{(gnu services mcron)} enthält eine Schnittstelle zu +GNU@tie{}mcron, einem Daemon, der gemäß einem vorher festgelegten Zeitplan +Aufträge (sogenannte »Jobs«) ausführt (siehe @ref{Top,,, mcron, +GNU@tie{}mcron}). GNU@tie{}mcron ist ähnlich zum traditionellen +@command{cron}-Daemon aus Unix; der größte Unterschied ist, dass mcron in +Guile Scheme implementiert ist, wodurch einem viel Flexibilität bei der +Spezifikation von Aufträgen und ihren Aktionen offen steht. + +Das folgende Beispiel definiert ein Betriebssystem, das täglich die Befehle +@command{updatedb} (siehe @ref{Invoking updatedb,,, find, Finding Files}) +und @command{guix gc} (siehe @ref{Aufruf von guix gc}) ausführt sowie den +Befehl @command{mkid} im Namen eines »unprivilegierten« Nutzers ohne +besondere Berechtigungen laufen lässt (siehe @ref{mkid invocation,,, +idutils, ID Database Utilities}). Zum Anlegen von Auftragsdefinitionen +benutzt es G-Ausdrücke, die dann an mcron übergeben werden (siehe +@ref{G-Ausdrücke}). @lisp (use-modules (guix) (gnu) (gnu services mcron)) (use-package-modules base idutils) (define updatedb-job - ;; Run 'updatedb' at 3AM every day. Here we write the - ;; job's action as a Scheme procedure. + ;; 'updatedb' jeden Tag um 3 Uhr morgens ausführen. Hier schreiben wir + ;; die vom Auftrag durchzuführende Aktion als eine Scheme-Prozedur. #~(job '(next-hour '(3)) (lambda () (execl (string-append #$findutils "/bin/updatedb") @@ -12448,14 +13097,15 @@ job definitions that are passed to mcron (@pxref{G-Ausdrücke}). "--prunepaths=/tmp /var/tmp /gnu/store")))) (define garbage-collector-job - ;; Collect garbage 5 minutes after midnight every day. - ;; The job's action is a shell command. - #~(job "5 0 * * *" ;Vixie cron syntax + ;; Jeden Tag 5 Minuten nach Mitternacht Müll sammeln gehen. + ;; Die Aktions des Auftrags ist ein Shell-Befehl. + #~(job "5 0 * * *" ;Vixie-cron-Syntax "guix gc -F 1G")) (define idutils-job - ;; Update the index database as user "charlie" at 12:15PM - ;; and 19:15PM. This runs from the user's home directory. + ;; Die Index-Datenbank des Benutzers "charlie" um 12:15 Uhr und + ;; 19:15 Uhr aktualisieren. Dies wird aus seinem Persönlichen + ;; Ordner heraus ausgeführt. #~(job '(next-minute-from (next-hour '(12 19)) '(15)) (string-append #$idutils "/bin/mkid src") #:user "charlie")) @@ -12470,9 +13120,9 @@ job definitions that are passed to mcron (@pxref{G-Ausdrücke}). %base-services))) @end lisp -@xref{Guile Syntax, mcron job specifications,, mcron, GNU@tie{}mcron}, for -more information on mcron job specifications. Below is the reference of the -mcron service. +Siehe @ref{Guile Syntax, mcron job specifications,, mcron, GNU@tie{}mcron} +für weitere Informationen zu mcron-Auftragsspezifikationen. Nun folgt die +Referenz des mcron-Dienstes. On a running system, you can use the @code{schedule} action of the service to visualize the mcron jobs that will be executed next: @@ -13484,7 +14134,7 @@ from accessing Facebook. The @code{(gnu services avahi)} provides the following definition. -@defvr {Scheme Variable} avahi-service-type +@defvr {Scheme-Variable} avahi-service-type This is the service that runs @command{avahi-daemon}, a system-wide mDNS/DNS-SD responder that allows for service discovery and ``zero-configuration'' host name lookups (see @uref{http://avahi.org/}). @@ -13498,20 +14148,20 @@ Additionally, add the @var{avahi} package to the system profile so that commands such as @command{avahi-browse} are directly usable. @end defvr -@deftp {Data Type} avahi-configuration -Data type representation the configuration for Avahi. +@deftp {Datentyp} avahi-configuration +Dieser Datentyp repräsentiert die Konfiguration von Avahi. @table @asis -@item @code{host-name} (default: @code{#f}) +@item @code{host-name} (Vorgabe: @code{#f}) If different from @code{#f}, use that as the host name to publish for this machine; otherwise, use the machine's actual host name. -@item @code{publish?} (default: @code{#t}) +@item @code{publish?} (Vorgabe: @code{#t}) When true, allow host names and services to be published (broadcast) over the network. -@item @code{publish-workstation?} (default: @code{#t}) +@item @code{publish-workstation?} (Vorgabe: @code{#t}) When true, @command{avahi-daemon} publishes the machine's host name and IP address via mDNS on the local network. To view the host names published on your local network, you can run: @@ -13520,14 +14170,14 @@ your local network, you can run: avahi-browse _workstation._tcp @end example -@item @code{wide-area?} (default: @code{#f}) +@item @code{wide-area?} (Vorgabe: @code{#f}) When true, DNS-SD over unicast DNS is enabled. -@item @code{ipv4?} (default: @code{#t}) -@itemx @code{ipv6?} (default: @code{#t}) +@item @code{ipv4?} (Vorgabe: @code{#t}) +@itemx @code{ipv6?} (Vorgabe: @code{#t}) These fields determine whether to use IPv4/IPv6 sockets. -@item @code{domains-to-browse} (default: @code{'()}) +@item @code{domains-to-browse} (Vorgabe: @code{'()}) This is a list of domains to browse. @end table @end deftp @@ -13558,7 +14208,13 @@ Package object of the Open vSwitch. Support for the X Window graphical display system---specifically Xorg---is provided by the @code{(gnu services xorg)} module. Note that there is no @code{xorg-service} procedure. Instead, the X server is started by the -@dfn{login manager}, by default SLiM. +@dfn{login manager}, by default the GNOME Display Manager (GDM). + +@cindex GDM +@cindex GNOME, login manager +GDM of course allows users to log in into window managers and desktop +environments other than GNOME; for those using GNOME, GDM is required for +features such as automatic screen locking. @cindex window manager To use X11, you must install at least one @dfn{window manager}---for example @@ -13566,23 +14222,60 @@ the @code{windowmaker} or @code{openbox} packages---preferably by adding it to the @code{packages} field of your operating system definition (@pxref{»operating-system«-Referenz, system-wide packages}). -@defvr {Scheme Variable} slim-service-type -This is the type for the SLiM graphical login manager for X11. +@defvr {Scheme-Variable} gdm-service-type +This is the type for the @uref{https://wiki.gnome.org/Projects/GDM/, GNOME +Desktop Manager} (GDM), a program that manages graphical display servers and +handles graphical user logins. Its value must be a @code{gdm-configuration} +(see below.) @cindex session types (X11) @cindex X11 session types -SLiM looks for @dfn{session types} described by the @file{.desktop} files in +GDM looks for @dfn{session types} described by the @file{.desktop} files in @file{/run/current-system/profile/share/xsessions} and allows users to -choose a session from the log-in screen using @kbd{F1}. Packages such as -@code{xfce}, @code{sawfish}, and @code{ratpoison} provide @file{.desktop} -files; adding them to the system-wide set of packages automatically makes -them available at the log-in screen. +choose a session from the log-in screen. Packages such as @code{gnome}, +@code{xfce}, and @code{i3} provide @file{.desktop} files; adding them to the +system-wide set of packages automatically makes them available at the log-in +screen. In addition, @file{~/.xsession} files are honored. When available, @file{~/.xsession} must be an executable that starts a window manager and/or other X clients. @end defvr +@deftp {Datentyp} gdm-configuration +@table @asis +@item @code{auto-login?} (default: @code{#f}) +@itemx @code{default-user} (Vorgabe: @code{#f}) +When @code{auto-login?} is false, GDM presents a log-in screen. + +When @code{auto-login?} is true, GDM logs in directly as +@code{default-user}. + +@item @code{gnome-shell-assets} (Vorgabe: …) +List of GNOME Shell assets needed by GDM: icon theme, fonts, etc. + +@item @code{xorg-configuration} (Vorgabe: @code{(xorg-configuration)}) +Xorg-Server für grafische Oberflächen konfigurieren. + +@item @code{xsession} (Vorgabe: @code{(xinitrc)}) +Script to run before starting a X session. + +@item @code{dbus-daemon} (Vorgabe: @code{dbus-daemon-wrapper}) +File name of the @code{dbus-daemon} executable. + +@item @code{gdm} (Vorgabe: @code{gdm}) +Das GDM-Paket, was benutzt werden soll. +@end table +@end deftp + +@defvr {Scheme Variable} slim-service-type +This is the type for the SLiM graphical login manager for X11. + +Like GDM, SLiM looks for session types described by @file{.desktop} files +and allows users to choose a session from the log-in screen using @kbd{F1}. +It also honors @file{~/.xsession} files. +@end defvr + @deftp {Data Type} slim-configuration Data type representing the configuration of @code{slim-service-type}. @@ -13615,8 +14308,8 @@ your user profile. Failing to do that, if @code{auto-login-session} is false, you will be unable to log in. @end quotation -@item @code{startx} (default: @code{(xorg-start-command)}) -The command used to start the X11 graphical server. +@item @code{xorg-configuration} (Vorgabe: @code{(xorg-configuration)}) +Xorg-Server für grafische Oberflächen konfigurieren. @item @code{xauth} (default: @code{xauth}) The XAuth package to use. @@ -13691,8 +14384,8 @@ Script to run before starting a wayland session. @item @code{sessions-directory} (default "/run/current-system/profile/share/wayland-sessions") Directory to look for desktop files starting wayland sessions. -@item @code{xorg-server-path} (default @code{xorg-start-command}) -Path to xorg-server. +@item @code{xorg-configuration} (Vorgabe: @code{(xorg-configuration)}) +Xorg-Server für grafische Oberflächen konfigurieren. @item @code{xauth-path} (default @code{#~(string-append #$xauth "/bin/xauth")}) Path to xauth. @@ -13715,9 +14408,6 @@ Directory to look for desktop files starting X sessions. @item @code{minimum-vt} (default: 7) Minimum VT to use. -@item @code{xserver-arguments} (default "-nolisten tcp") -Arguments to pass to xorg-server. - @item @code{auto-login-user} (default "") User to use for auto-login. @@ -13743,96 +14433,74 @@ type @code{<sddm-configuration>}. @end example @end deffn -@deffn {Scheme Procedure} xorg-start-command [#:guile] @ - [#:modules %default-xorg-modules] @ [#:fonts %default-xorg-fonts] @ -[#:configuration-file (xorg-configuration-file @dots{})] @ [#:xorg-server -@var{xorg-server}] [#:xserver-arguments '("-nolisten" "tcp")] Return a -@code{startx} script in which @var{modules}, a list of X module packages, -and @var{fonts}, a list of X font directories, are available. See -@code{xorg-wrapper} for more details on the arguments. The result should be -used in place of @code{startx}. - -Usually the X server is started by a login manager. -@end deffn - -@cindex @code{-listen tcp}, for X11. -This procedure is useful to override command line options for the X server, -such as having it listen to over TCP: - -@example -(operating-system - ... - (services - (modify-services %desktop-services - (slim-service-type config => - (slim-configuration - (inherit config) - (startx (xorg-start-command - #:xserver-arguments '("-listen" "tcp")))))))) -@end example +@cindex Xorg, Konfiguration +@deftp {Datentyp} xorg-configuration +This data type represents the configuration of the Xorg graphical display +server. Note that there is not Xorg service; instead, the X server is +started by a ``display manager'' such as GDM, SDDM, and SLiM. Thus, the +configuration of these display managers aggregates an +@code{xorg-configuration} record. -@deffn {Scheme Procedure} xorg-configuration-file @ - [#:modules %default-xorg-modules] @ [#:fonts %default-xorg-fonts] @ -[#:drivers '()] [#:resolutions '()] [#:extra-config '()] Return a -configuration file for the Xorg server containing search paths for all the -common drivers. - -@var{modules} must be a list of @dfn{module packages} loaded by the Xorg -server---e.g., @code{xf86-video-vesa}, @code{xf86-input-keyboard}, and so -on. @var{fonts} must be a list of font directories to add to the server's -@dfn{font path}. - -@var{drivers} must be either the empty list, in which case Xorg chooses a -graphics driver automatically, or a list of driver names that will be tried -in this order---e.g., @code{("modesetting" "vesa")}. - -Likewise, when @var{resolutions} is the empty list, Xorg chooses an -appropriate screen resolution; otherwise, it must be a list of -resolutions---e.g., @code{((1024 768) (640 480))}. +@table @asis +@item @code{modules} (Vorgabe: @code{%default-xorg-modules}) +This is a list of @dfn{module packages} loaded by the Xorg server---e.g., +@code{xf86-video-vesa}, @code{xf86-input-keyboard}, and so on. + +@item @code{fonts} (Vorgabe: @code{%default-xorg-fonts}) +This is a list of font directories to add to the server's @dfn{font path}. + +@item @code{drivers} (Vorgabe: @code{'()}) +This must be either the empty list, in which case Xorg chooses a graphics +driver automatically, or a list of driver names that will be tried in this +order---e.g., @code{("modesetting" "vesa")}. + +@item @code{resolutions} (Vorgabe: @code{'()}) +When @code{resolutions} is the empty list, Xorg chooses an appropriate +screen resolution. Otherwise, it must be a list of resolutions---e.g., +@code{((1024 768) (640 480))}. + +@cindex Tastaturbelegung, für Xorg +@cindex keymap, for Xorg +@item @code{keyboard-layout} (Vorgabe: @code{#f}) +If this is @code{#f}, Xorg uses the default keyboard layout---usually US +English (``qwerty'') for a 105-key PC keyboard. + +Otherwise this must be a @code{keyboard-layout} object specifying the +keyboard layout in use when Xorg is running. @xref{Tastaturbelegung}, for +more information on how to specify the keyboard layout. + +@item @code{extra-config} (Vorgabe: @code{'()}) +This is a list of strings or objects appended to the configuration file. It +is used to pass extra text to be added verbatim to the configuration file. + +@item @code{server} (Vorgabe: @code{xorg-server}) +This is the package providing the Xorg server. + +@item @code{server-arguments} (Vorgabe: @code{%default-xorg-server-arguments}) +This is the list of command-line arguments to pass to the X server. The +default is @code{-nolisten tcp}. +@end table +@end deftp -Last, @var{extra-config} is a list of strings or objects appended to the -configuration file. It is used to pass extra text to be added verbatim to -the configuration file. +@deffn {Scheme-Prozedur} set-xorg-configuration @var{Konfiguration} @ + [@var{login-manager-service-type}] Tell the log-in manager (of type +@var{login-manager-service-type}) to use @var{config}, an +<xorg-configuration> record. -@cindex Keymap -@cindex Tastaturbelegung -This procedure is especially useful to configure a different keyboard layout -than the default US keymap. For instance, to use the ``bépo'' keymap by -default on the display manager: +Since the Xorg configuration is embedded in the log-in manager's +configuration---e.g., @code{gdm-configuration}---this procedure provides a +shorthand to set the Xorg configuration. +@end deffn -@example -(define bepo-evdev - "Section \"InputClass\" - Identifier \"evdev keyboard catchall\" - Driver \"evdev\" - MatchIsKeyboard \"on\" - Option \"xkb_layout\" \"fr\" - Option \"xkb_variant\" \"bepo\" -EndSection") +@deffn {Scheme-Prozedur} xorg-start-command [@var{Konfiguration}] +Return a @code{startx} script in which the modules, fonts, etc. specified in +@var{config}, are available. The result should be used in place of +@code{startx}. -(operating-system - ... - (services - (modify-services %desktop-services - (slim-service-type config => - (slim-configuration - (inherit config) - (startx (xorg-start-command - #:configuration-file - (xorg-configuration-file - #:extra-config - (list bepo-evdev))))))))) -@end example - -The @code{MatchIsKeyboard} line specifies that we only apply the -configuration to keyboards. Without this line, other devices such as -touchpad may not work correctly because they will be attached to the wrong -driver. In this example, the user typically used @code{setxkbmap fr bepo} -to set their favorite keymap once logged in. The first argument corresponds -to the layout, while the second argument corresponds to the variant. The -@code{xkb_variant} line can be omitted to select the default variant. +Usually the X server is started by a login manager. @end deffn + @deffn {Scheme Procedure} screen-locker-service @var{package} [@var{program}] Add @var{package}, a package for a screen locker or screen saver whose command is @var{program}, to the set of setuid programs and add a PAM entry @@ -13850,9 +14518,10 @@ makes the good ol' XlockMore usable. @subsection Druckdienste @cindex printer support with CUPS -The @code{(gnu services cups)} module provides a Guix service definition for -the CUPS printing service. To add printer support to a Guix system, add a -@code{cups-service} to the operating system definition: +Das Modul @code{(gnu services cups)} stellt eine Guix-Dienstdefinition für +den CUPS-Druckdienst zur Verfügung. Wenn Sie Druckerunterstützung zu einem +Guix-System hinzufügen möchten, dann fügen Sie einen +@code{cups-service}-Dienst in die Betriebssystemdefinition ein. @deffn {Scheme Variable} cups-service-type The service type for the CUPS print server. Its value should be a valid @@ -14683,7 +15352,7 @@ The @code{(gnu services desktop)} module provides services that are usually useful in the context of a ``desktop'' setup---that is, on a machine running a graphical display server, possibly with graphical user interfaces, etc. It also defines services that provide specific desktop environments like -GNOME, XFCE or MATE. +GNOME, Xfce or MATE. To simplify things, the module defines a variable containing the set of services that users typically expect on a machine with a graphical @@ -14694,7 +15363,7 @@ This is a list of services that builds upon @var{%base-services} and adds or adjusts services for a typical ``desktop'' setup. In particular, it adds a graphical login manager (@pxref{X Window, -@code{slim-service}}), screen lockers, a network management tool +@code{gdm-service-type}}), screen lockers, a network management tool (@pxref{Netzwerkdienste, @code{network-manager-service-type}}), energy and color management services, the @code{elogind} login and seat manager, the Polkit privilege service, the GeoClue location service, the @@ -14707,19 +15376,19 @@ name service switch service configured to be able to use @code{nss-mdns} The @var{%desktop-services} variable can be used as the @code{services} field of an @code{operating-system} declaration (@pxref{»operating-system«-Referenz, @code{services}}). -Additionally, the @code{gnome-desktop-service}, @code{xfce-desktop-service}, -@code{mate-desktop-service-type} and -@code{enlightenment-desktop-service-type} procedures can add GNOME, XFCE, +Additionally, the @code{gnome-desktop-service-type}, +@code{xfce-desktop-service}, @code{mate-desktop-service-type} and +@code{enlightenment-desktop-service-type} procedures can add GNOME, Xfce, MATE and/or Enlightenment to a system. To ``add GNOME'' means that system-level services like the backlight adjustment helpers and the power management utilities are added to the system, extending @code{polkit} and @code{dbus} appropriately, allowing GNOME to operate with elevated privileges on a limited number of special-purpose system interfaces. -Additionally, adding a service made by @code{gnome-desktop-service} adds the -GNOME metapackage to the system profile. Likewise, adding the XFCE service -not only adds the @code{xfce} metapackage to the system profile, but it also -gives the Thunar file manager the ability to open a ``root-mode'' file -management window, if the user authenticates using the administrator's +Additionally, adding a service made by @code{gnome-desktop-service-type} +adds the GNOME metapackage to the system profile. Likewise, adding the Xfce +service not only adds the @code{xfce} metapackage to the system profile, but +it also gives the Thunar file manager the ability to open a ``root-mode'' +file management window, if the user authenticates using the administrator's password via the standard polkit graphical interface. To ``add MATE'' means that @code{polkit} and @code{dbus} are extended appropriately, allowing MATE to operate with elevated privileges on a limited number of special-purpose @@ -14732,44 +15401,69 @@ expetected. The desktop environments in Guix use the Xorg display server by default. If you'd like to use the newer display server protocol called Wayland, you need -to use the @code{sddm-service} instead of the @code{slim-service} for the -graphical login manager. You should then select the ``GNOME (Wayland)'' -session in SDDM. Alternatively you can also try starting GNOME on Wayland -manually from a TTY with the command ``XDG_SESSION_TYPE=wayland exec -dbus-run-session gnome-session``. Currently only GNOME has support for -Wayland. - -@deffn {Scheme Procedure} gnome-desktop-service -Return a service that adds the @code{gnome} package to the system profile, -and extends polkit with the actions from @code{gnome-settings-daemon}. -@end deffn +to use the @code{sddm-service} instead of GDM as the graphical login +manager. You should then select the ``GNOME (Wayland)'' session in SDDM. +Alternatively you can also try starting GNOME on Wayland manually from a TTY +with the command ``XDG_SESSION_TYPE=wayland exec dbus-run-session +gnome-session``. Currently only GNOME has support for Wayland. + +@defvr {Scheme-Variable} gnome-desktop-service-type +Dies ist der Typ des Dienstes, der die @uref{https://www.gnome.org, +GNOME}-Arbeitsumgebung bereitstellt. Sein Wert ist ein +@code{gnome-desktop-configuration}-Objekt (siehe unten). + +This service adds the @code{gnome} package to the system profile, and +extends polkit with the actions from @code{gnome-settings-daemon}. +@end defvr + +@deftp {Datentyp} gnome-desktop-configuration +Configuration record for the GNOME desktop environment. + +@table @asis +@item @code{gnome} (Vorgabe: @code{gnome}) +Welches GNOME-Paket benutzt werden soll. +@end table +@end deftp -@deffn {Scheme Procedure} xfce-desktop-service -Return a service that adds the @code{xfce} package to the system profile, -and extends polkit with the ability for @code{thunar} to manipulate the file +@defvr {Scheme-Variable} xfce-desktop-service-type +Der Typ des Dienstes, um die @uref{Xfce, https://xfce.org/}-Arbeitsumgebung +auszuführen. Sein Wert ist ein @code{xfce-desktop-configuration}-Objekt +(siehe unten). + +This service that adds the @code{xfce} package to the system profile, and +extends polkit with the ability for @code{thunar} to manipulate the file system as root from within a user session, after the user has authenticated with the administrator's password. -@end deffn +@end defvr -@deffn {Scheme Variable} mate-desktop-service-type -This is the type of the service that runs the -@uref{https://mate-desktop.org/, MATE desktop environment}. Its value is a -@code{mate-desktop-configuration} object (see below.) +@deftp {Datentyp} xfce-desktop-configuration +Verbundstyp für Einstellungen zur Xfce-Arbeitsumgebung. + +@table @asis +@item @code{xfce} (Vorgabe: @code{xfce}) +Das Xfce-Paket, was benutzt werden soll. +@end table +@end deftp + +@deffn {Scheme-Variable} mate-desktop-service-type +Dies ist der Typ des Dienstes, um die @uref{https://mate-desktop.org/, +MATE-Arbeitsumgebung} auszuführen. Sein Wert ist ein +@code{mate-desktop-configuration}-Objekt (siehe unten). This service adds the @code{mate} package to the system profile, and extends polkit with the actions from @code{mate-settings-daemon}. @end deffn -@deftp {Data Type} mate-desktop-configuration -Configuration record for the MATE desktop environment. +@deftp {Datentyp} mate-desktop-configuration +Verbundstyp für die Einstellungen der MATE-Arbeitsumgebung. @table @asis -@item @code{mate} (default @code{mate}) -The MATE package to use. +@item @code{mate} (Vorgabe: @code{mate}) +Das MATE-Paket, was benutzt werden soll. @end table @end deftp -@deffn {Scheme Variable} enlightenment-desktop-service-type +@deffn {Scheme-Variable} enlightenment-desktop-service-type Return a service that adds the @code{enlightenment} package to the system profile, and extends dbus with actions from @code{efl}. @end deffn @@ -14781,9 +15475,9 @@ Das Enlightenment-Paket, was benutzt werden soll. @end table @end deftp -Because the GNOME, XFCE and MATE desktop services pull in so many packages, +Because the GNOME, Xfce and MATE desktop services pull in so many packages, the default @code{%desktop-services} variable doesn't include any of them by -default. To add GNOME, XFCE or MATE, just @code{cons} them onto +default. To add GNOME, Xfce or MATE, just @code{cons} them onto @code{%desktop-services} in the @code{services} field of your @code{operating-system}: @@ -14793,8 +15487,8 @@ default. To add GNOME, XFCE or MATE, just @code{cons} them onto (operating-system ... ;; cons* adds items to the list given as its last argument. - (services (cons* (gnome-desktop-service) - (xfce-desktop-service) + (services (cons* (service gnome-desktop-service-type) + (service xfce-desktop-service) %desktop-services)) ...) @end example @@ -14914,7 +15608,7 @@ granted the capability to suspend the system if the user is logged in locally. @end deffn -@defvr {Scheme Variable} upower-service-type +@defvr {Scheme-Variable} upower-service-type Service that runs @uref{http://upower.freedesktop.org/, @command{upowerd}}, a system-wide monitor for power consumption and battery levels, with the given configuration settings. @@ -14923,52 +15617,52 @@ It implements the @code{org.freedesktop.UPower} D-Bus interface, and is notably used by GNOME. @end defvr -@deftp {Data Type} upower-configuration -Data type representation the configuration for UPower. +@deftp {Datentyp} upower-configuration +Repräsentiert die Konfiguration von UPower. @table @asis -@item @code{upower} (default: @var{upower}) +@item @code{upower} (Vorgabe: @var{upower}) Package to use for @code{upower}. -@item @code{watts-up-pro?} (default: @code{#f}) +@item @code{watts-up-pro?} (Vorgabe: @code{#f}) Enable the Watts Up Pro device. -@item @code{poll-batteries?} (default: @code{#t}) +@item @code{poll-batteries?} (Vorgabe: @code{#t}) Enable polling the kernel for battery level changes. -@item @code{ignore-lid?} (default: @code{#f}) +@item @code{ignore-lid?} (Vorgabe: @code{#f}) Ignore the lid state, this can be useful if it's incorrect on a device. -@item @code{use-percentage-for-policy?} (default: @code{#f}) +@item @code{use-percentage-for-policy?} (Vorgabe: @code{#f}) Whether battery percentage based policy should be used. The default is to use the time left, change to @code{#t} to use the percentage. -@item @code{percentage-low} (default: @code{10}) +@item @code{percentage-low} (Vorgabe: @code{10}) When @code{use-percentage-for-policy?} is @code{#t}, this sets the percentage at which the battery is considered low. -@item @code{percentage-critical} (default: @code{3}) +@item @code{percentage-critical} (Vorgabe: @code{3}) When @code{use-percentage-for-policy?} is @code{#t}, this sets the percentage at which the battery is considered critical. -@item @code{percentage-action} (default: @code{2}) +@item @code{percentage-action} (Vorgabe: @code{2}) When @code{use-percentage-for-policy?} is @code{#t}, this sets the percentage at which action will be taken. -@item @code{time-low} (default: @code{1200}) +@item @code{time-low} (Vorgabe: @code{1200}) When @code{use-time-for-policy?} is @code{#f}, this sets the time remaining in seconds at which the battery is considered low. -@item @code{time-critical} (default: @code{300}) +@item @code{time-critical} (Vorgabe: @code{300}) When @code{use-time-for-policy?} is @code{#f}, this sets the time remaining in seconds at which the battery is considered critical. -@item @code{time-action} (default: @code{120}) +@item @code{time-action} (Vorgabe: @code{120}) When @code{use-time-for-policy?} is @code{#f}, this sets the time remaining in seconds at which action will be taken. -@item @code{critical-power-action} (default: @code{'hybrid-sleep}) +@item @code{critical-power-action} (Vorgabe: @code{'hybrid-sleep}) The action taken when @code{percentage-action} or @code{time-action} is reached (depending on the configuration of @code{use-percentage-for-policy?}). @@ -15156,9 +15850,9 @@ extension, a user can configure the postgresql-service as in this example: (use-package-modules databases geo) (operating-system - ... - ;; postgresql is required to run `psql' but postgis is not required for - ;; proper operation. + … + ;; postgresql wird benötigt, um »psql« auszuführen, aber postgis ist + ;; für den Betrieb nicht unbedingt notwendig. (packages (cons* postgresql %base-packages)) (services (cons* @@ -16642,6 +17336,36 @@ above example, there doesn't need to be a @code{postmaster} entry in the @code{postmaster} mail to @code{bob} (which subsequently would deliver mail to @code{bob@@example.com} and @code{bob@@example2.com}). +@subsubheading GNU Mailutils IMAP4 Daemon +@cindex GNU Mailutils IMAP4 Daemon + +@deffn {Scheme-Variable} imap4d-service-type +This is the type of the GNU Mailutils IMAP4 Daemon (@pxref{imap4d,,, +mailutils, GNU Mailutils Manual}), whose value should be an +@code{imap4d-configuration} object as in this example: + +@example +(service imap4d-service-type + (imap4d-configuration + (config-file (local-file "imap4d.conf")))) +@end example +@end deffn + +@deftp {Datentyp} imap4d-configuration +Datentyp, der die Konfiguration von @command{imap4d} repräsentiert. + +@table @asis +@item @code{package} (Vorgabe: @code{mailutils}) +The package that provides @command{imap4d}. + +@item @code{config-file} (Vorgabe: @code{%default-imap4d-config-file}) +File-like object of the configuration file to use, by default it will listen +on TCP port 143 of @code{localhost}. @xref{Conf-imap4d,,, mailutils, GNU +Mailutils Manual}, for details. + +@end table +@end deftp + @node Kurznachrichtendienste @subsection Kurznachrichtendienste @@ -16899,8 +17623,8 @@ information about using the hashed backend. See also @deftypevr {@code{prosody-configuration} parameter} maybe-string log Set logging options. Advanced logging configuration is not yet supported by -the Guix Prosody Service. See @url{https://prosody.im/doc/logging}. -Defaults to @samp{"*syslog"}. +the Prosody service. See @url{https://prosody.im/doc/logging}. Defaults to +@samp{"*syslog"}. @end deftypevr @deftypevr {@code{prosody-configuration} parameter} file-name pidfile @@ -17123,30 +17847,30 @@ Configuration snippet added as-is to the BitlBee configuration file. @end table @end deftp -@subsubheading Quassel Service +@subsubheading Quassel-Dienst @cindex IRC (Internet Relay Chat) @url{https://quassel-irc.org/,Quassel} is a distributed IRC client, meaning that one or more clients can attach to and detach from the central core. -@defvr {Scheme Variable} quassel-service-type +@defvr {Scheme-Variable} quassel-service-type This is the service type for the @url{https://quassel-irc.org/,Quassel} IRC backend daemon. Its value is a @code{quassel-configuration} (see below). @end defvr -@deftp {Data Type} quassel-configuration +@deftp {Datentyp} quassel-configuration This is the configuration for Quassel, with the following fields: @table @asis -@item @code{quassel} (default: @code{quassel}) -The Quassel package to use. +@item @code{quassel} (Vorgabe: @code{quassel}) +Das zu verwendende Quassel-Paket. -@item @code{interface} (default: @code{"::,0.0.0.0"}) -@item @code{port} (default: @code{4242}) +@item @code{interface} (Vorgabe: @code{"::,0.0.0.0"}) +@item @code{port} (Vorgabe: @code{4242}) Listen on the network interface(s) corresponding to the IPv4 or IPv6 interfaces specified in the comma delimited @var{interface}, on @var{port}. -@item @code{loglevel} (default: @code{"Info"}) +@item @code{loglevel} (Vorgabe: @code{"Info"}) The level of logging desired. Accepted values are Debug, Info, Warning and Error. @end table @@ -17544,7 +18268,7 @@ Bind the web interface to the specified address. @end table @end deftp -@subsubheading Zabbix server +@subsubheading Zabbix-Server @cindex zabbix zabbix-server Zabbix provides monitoring metrics, among others network utilization, CPU load and disk space consumption: @@ -17565,7 +18289,7 @@ load and disk space consumption: Available @code{zabbix-server-configuration} fields are: @deftypevr {@code{zabbix-server-configuration} parameter} package zabbix-server -The zabbix-server package. +Das zabbix-server-Paket. @end deftypevr @@ -17584,21 +18308,21 @@ Defaults to @samp{"zabbix"}. @end deftypevr @deftypevr {@code{zabbix-server-configuration} parameter} string db-host -Database host name. +Rechnername der Datenbank. Defaults to @samp{"127.0.0.1"}. @end deftypevr @deftypevr {@code{zabbix-server-configuration} parameter} string db-name -Database name. +Datenbankname. Defaults to @samp{"zabbix"}. @end deftypevr @deftypevr {@code{zabbix-server-configuration} parameter} string db-user -Database user. +Benutzerkonto der Datenbank. Defaults to @samp{"zabbix"}. @@ -17613,7 +18337,7 @@ Defaults to @samp{""}. @end deftypevr @deftypevr {@code{zabbix-server-configuration} parameter} number db-port -Database port. +Datenbank-Portnummer. Defaults to @samp{5432}. @@ -17646,7 +18370,7 @@ Defaults to @samp{"/var/log/zabbix/server.log"}. @end deftypevr @deftypevr {@code{zabbix-server-configuration} parameter} string pid-file -Name of PID file. +Name der PID-Datei. Defaults to @samp{"/var/run/zabbix/zabbix_server.pid"}. @@ -17694,7 +18418,7 @@ Zabbix agent gathers information for Zabbix server. Available @code{zabbix-agent-configuration} fields are: @deftypevr {@code{zabbix-agent-configuration} parameter} package zabbix-agent -The zabbix-agent package. +Das zabbix-agent-Paket. @end deftypevr @@ -17747,7 +18471,7 @@ Defaults to @samp{"/var/log/zabbix/agent.log"}. @end deftypevr @deftypevr {@code{zabbix-agent-configuration} parameter} string pid-file -Name of PID file. +Name der PID-Datei. Defaults to @samp{"/var/run/zabbix/zabbix_agent.pid"}. @@ -17803,28 +18527,28 @@ NGINX configuration. @end deftypevr @deftypevr {@code{zabbix-front-end-configuration} parameter} string db-host -Database host name. +Rechnername der Datenbank. Defaults to @samp{"localhost"}. @end deftypevr @deftypevr {@code{zabbix-front-end-configuration} parameter} number db-port -Database port. +Datenbank-Portnummer. Defaults to @samp{5432}. @end deftypevr @deftypevr {@code{zabbix-front-end-configuration} parameter} string db-name -Database name. +Datenbankname. Defaults to @samp{"zabbix"}. @end deftypevr @deftypevr {@code{zabbix-front-end-configuration} parameter} string db-user -Database user. +Benutzerkonto der Datenbank. Defaults to @samp{"zabbix"}. @@ -17985,23 +18709,497 @@ authenticate. @end deftp +@node LDAP-Dienste +@subsection LDAP-Dienste +@cindex LDAP +@cindex nslcd, LDAP service + +The @code{(gnu services authentication)} module provides the +@code{nslcd-service-type}, which can be used to authenticate against an LDAP +server. In addition to configuring the service itself, you may want to add +@code{ldap} as a name service to the Name Service Switch. @xref{Name Service Switch} for detailed information. + +Here is a simple operating system declaration with a default configuration +of the @code{nslcd-service-type} and a Name Service Switch configuration +that consults the @code{ldap} name service last: + +@example +(use-service-modules authentication) +(use-modules (gnu system nss)) +... +(operating-system + ... + (services + (cons* + (service nslcd-service-type) + (service dhcp-client-service-type) + %base-services)) + (name-service-switch + (let ((services (list (name-service (name "db")) + (name-service (name "files")) + (name-service (name "ldap"))))) + (name-service-switch + (inherit %mdns-host-lookup-nss) + (password services) + (shadow services) + (group services) + (netgroup services) + (gshadow services))))) +@end example + +@c %start of generated documentation for nslcd-configuration + +Available @code{nslcd-configuration} fields are: + +@deftypevr {@code{nslcd-configuration} parameter} package nss-pam-ldapd +Das @code{nss-pam-ldapd}-Paket, was benutzt werden soll. + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-number threads +The number of threads to start that can handle requests and perform LDAP +queries. Each thread opens a separate connection to the LDAP server. The +default is to start 5 threads. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} string uid +This specifies the user id with which the daemon should be run. + +Defaults to @samp{"nslcd"}. + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} string gid +This specifies the group id with which the daemon should be run. + +Defaults to @samp{"nslcd"}. + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} log-option log +This option controls the way logging is done via a list containing SCHEME +and LEVEL. The SCHEME argument may either be the symbols "none" or +"syslog", or an absolute file name. The LEVEL argument is optional and +specifies the log level. The log level may be one of the following symbols: +"crit", "error", "warning", "notice", "info" or "debug". All messages with +the specified log level or higher are logged. + +Defaults to @samp{("/var/log/nslcd" info)}. + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} list uri +The list of LDAP server URIs. Normally, only the first server will be used +with the following servers as fall-back. + +Defaults to @samp{("ldap://localhost:389/")}. + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string ldap-version +The version of the LDAP protocol to use. The default is to use the maximum +version supported by the LDAP library. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string binddn +Specifies the distinguished name with which to bind to the directory server +for lookups. The default is to bind anonymously. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string bindpw +Specifies the credentials with which to bind. This option is only +applicable when used with binddn. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string rootpwmoddn +Specifies the distinguished name to use when the root user tries to modify a +user's password using the PAM module. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string rootpwmodpw +Specifies the credentials with which to bind if the root user tries to +change a user's password. This option is only applicable when used with +rootpwmoddn + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string sasl-mech +Specifies the SASL mechanism to be used when performing SASL authentication. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string sasl-realm +Specifies the SASL realm to be used when performing SASL authentication. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string sasl-authcid +Specifies the authentication identity to be used when performing SASL +authentication. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string sasl-authzid +Specifies the authorization identity to be used when performing SASL +authentication. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-boolean sasl-canonicalize? +Determines whether the LDAP server host name should be canonicalised. If +this is enabled the LDAP library will do a reverse host name lookup. By +default, it is left up to the LDAP library whether this check is performed +or not. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string krb5-ccname +Set the name for the GSS-API Kerberos credentials cache. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} string base +Basis für die Verzeichnissuche. + +Vorgegeben ist @samp{"dc=example,dc=com"}. + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} scope-option scope +Specifies the search scope (subtree, onelevel, base or children). The +default scope is subtree; base scope is almost never useful for name service +lookups; children scope is not supported on all servers. + +Defaults to @samp{(subtree)}. + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-deref-option deref +Specifies the policy for dereferencing aliases. The default policy is to +never dereference aliases. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-boolean referrals +Specifies whether automatic referral chasing should be enabled. The default +behaviour is to chase referrals. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} list-of-map-entries maps +This option allows for custom attributes to be looked up instead of the +default RFC 2307 attributes. It is a list of maps, each consisting of the +name of a map, the RFC 2307 attribute to match and the query expression for +the attribute as it is available in the directory. + +Defaults to @samp{()}. + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} list-of-filter-entries filters +A list of filters consisting of the name of a map to which the filter +applies and an LDAP search filter expression. + +Defaults to @samp{()}. + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-number bind-timelimit +Specifies the time limit in seconds to use when connecting to the directory +server. The default value is 10 seconds. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-number timelimit +Specifies the time limit (in seconds) to wait for a response from the LDAP +server. A value of zero, which is the default, is to wait indefinitely for +searches to be completed. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-number idle-timelimit +Specifies the period if inactivity (in seconds) after which the con‐ nection +to the LDAP server will be closed. The default is not to time out +connections. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-number reconnect-sleeptime +Specifies the number of seconds to sleep when connecting to all LDAP servers +fails. By default one second is waited between the first failure and the +first retry. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-number reconnect-retrytime +Specifies the time after which the LDAP server is considered to be +permanently unavailable. Once this time is reached retries will be done +only once per this time period. The default value is 10 seconds. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-ssl-option ssl +Specifies whether to use SSL/TLS or not (the default is not to). If +'start-tls is specified then StartTLS is used rather than raw LDAP over SSL. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-tls-reqcert-option tls-reqcert +Specifies what checks to perform on a server-supplied certificate. The +meaning of the values is described in the ldap.conf(5) manual page. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string tls-cacertdir +Specifies the directory containing X.509 certificates for peer authen‐ +tication. This parameter is ignored when using GnuTLS. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string tls-cacertfile +Specifies the path to the X.509 certificate for peer authentication. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string tls-randfile +Specifies the path to an entropy source. This parameter is ignored when +using GnuTLS. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string tls-ciphers +Specifies the ciphers to use for TLS as a string. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string tls-cert +Specifies the path to the file containing the local certificate for client +TLS authentication. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string tls-key +Specifies the path to the file containing the private key for client TLS +authentication. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-number pagesize +Set this to a number greater than 0 to request paged results from the LDAP +server in accordance with RFC2696. The default (0) is to not request paged +results. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-ignore-users-option nss-initgroups-ignoreusers +This option prevents group membership lookups through LDAP for the specified +users. Alternatively, the value 'all-local may be used. With that value +nslcd builds a full list of non-LDAP users on startup. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-number nss-min-uid +This option ensures that LDAP users with a numeric user id lower than the +specified value are ignored. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-number nss-uid-offset +This option specifies an offset that is added to all LDAP numeric user ids. +This can be used to avoid user id collisions with local users. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-number nss-gid-offset +This option specifies an offset that is added to all LDAP numeric group +ids. This can be used to avoid user id collisions with local groups. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-boolean nss-nested-groups +If this option is set, the member attribute of a group may point to another +group. Members of nested groups are also returned in the higher level group +and parent groups are returned when finding groups for a specific user. The +default is not to perform extra searches for nested groups. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-boolean nss-getgrent-skipmembers +If this option is set, the group member list is not retrieved when looking +up groups. Lookups for finding which groups a user belongs to will remain +functional so the user will likely still get the correct groups assigned on +login. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-boolean nss-disable-enumeration +If this option is set, functions which cause all user/group entries to be +loaded from the directory will not succeed in doing so. This can +dramatically reduce LDAP server load in situations where there are a great +number of users and/or groups. This option is not recommended for most +configurations. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string validnames +This option can be used to specify how user and group names are verified +within the system. This pattern is used to check all user and group names +that are requested and returned from LDAP. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-boolean ignorecase +This specifies whether or not to perform searches using case-insensitive +matching. Enabling this could open up the system to authorization bypass +vulnerabilities and introduce nscd cache poisoning vulnerabilities which +allow denial of service. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-boolean pam-authc-ppolicy +This option specifies whether password policy controls are requested and +handled from the LDAP server when performing user authentication. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string pam-authc-search +By default nslcd performs an LDAP search with the user's credentials after +BIND (authentication) to ensure that the BIND operation was successful. The +default search is a simple check to see if the user's DN exists. A search +filter can be specified that will be used instead. It should return at +least one entry. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string pam-authz-search +This option allows flexible fine tuning of the authorisation check that +should be performed. The search filter specified is executed and if any +entries match, access is granted, otherwise access is denied. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} maybe-string pam-password-prohibit-message +If this option is set password modification using pam_ldap will be denied +and the specified message will be presented to the user instead. The +message can be used to direct the user to an alternative means of changing +their password. + +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). + +@end deftypevr + +@deftypevr {@code{nslcd-configuration} parameter} list pam-services +List of pam service names for which LDAP authentication should suffice. + +Defaults to @samp{()}. + +@end deftypevr + +@c %end of generated documentation for nslcd-configuration + + @node Web-Dienste @subsection Web-Dienste -@cindex web -@cindex www +@cindex Web +@cindex WWW @cindex HTTP -The @code{(gnu services web)} module provides the Apache HTTP Server, the -nginx web server, and also a fastcgi wrapper daemon. +Das Modul @code{(gnu services web)} stellt den Apache-HTTP-Server, den +nginx-Webserver und auch einen fastcgi-Wrapperdienst bereit. -@subsubheading Apache HTTP Server +@subsubheading Apache-HTTP-Server -@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{httpd-configuration} record. +@deffn {Scheme-Variable} httpd-service-type +Diensttyp für den @uref{https://httpd.apache.org/,Apache-HTTP-Server} +(@dfn{httpd}). Der Wert dieses Diensttyps ist ein +@code{httpd-configuration}-Verbund. -A simple example configuration is given below. +Es folgt ein einfaches Beispiel der Konfiguration. @example (service httpd-service-type @@ -18012,8 +19210,8 @@ A simple example configuration is given below. (document-root "/srv/http/www.example.com"))))) @end example -Other services can also extend the @code{httpd-service-type} to add to the -configuration. +Andere Dienste können den @code{httpd-service-type} auch erweitern, um etwas +zur Konfiguration hinzuzufügen. @example (simple-service 'my-extra-server httpd-service-type @@ -18026,58 +19224,61 @@ configuration. @end example @end deffn -The details for the @code{httpd-configuration}, @code{httpd-module}, -@code{httpd-config-file} and @code{httpd-virtualhost} record types are given -below. +Nun folgt eine Beschreibung der Verbundstypen @code{httpd-configuration}, +@code{httpd-module}, @code{httpd-config-file} und @code{httpd-virtualhost}. -@deffn {Data Type} httpd-configuration -This data type represents the configuration for the httpd service. +@deffn {Datentyp} httpd-configuration +Dieser Datentyp repräsentiert die Konfiguration des httpd-Dienstes. @table @asis -@item @code{package} (default: @code{httpd}) -The httpd package to use. +@item @code{package} (Vorgabe: @code{httpd}) +Das zu benutzende httpd-Paket. -@item @code{pid-file} (default: @code{"/var/run/httpd"}) -The pid file used by the shepherd-service. +@item @code{pid-file} (Vorgabe: @code{"/var/run/httpd"}) +Die vom Shepherd-Dienst benutzte PID-Datei. -@item @code{config} (default: @code{(httpd-config-file)}) -The configuration file to use with the httpd service. The default value is a -@code{httpd-config-file} record, but this can also be a different -G-expression that generates a file, for example a @code{plain-file}. A file -outside of the store can also be specified through a string. +@item @code{config} (Vorgabe: @code{(httpd-config-file)}) +Die vom httpd-Dienst zu benutzende Konfigurationsdatei. Vorgegeben ist ein +@code{httpd-config-file}-Verbundsobjekt, aber als Wert kann auch ein anderer +G-Ausdruck benutzt werden, der eine Datei erzeugt, zum Beispiel ein +@code{plain-file}. Es kann auch eine Datei außerhalb des Stores mit einer +Zeichenkette angegeben werden. @end table @end deffn -@deffn {Data Type} httpd-module -This data type represents a module for the httpd service. +@deffn {Datentyp} httpd-module +Dieser Datentyp steht für ein Modul des httpd-Dienstes. @table @asis @item @code{name} -The name of the module. +Der Name des Moduls. @item @code{file} -The file for the module. This can be relative to the httpd package being -used, the absolute location of a file, or a G-expression for a file within -the store, for example @code{(file-append mod-wsgi "/modules/mod_wsgi.so")}. +Die Datei, in der das Modul steht. Sie kann relativ zum benutzten +httpd-Paket oder als absoluter Pfad einer Datei oder als ein G-Ausdruck für +eine Datei im Store angegeben werden, zum Beispiel @code{(file-append +mod-wsgi "/modules/mod_wsgi.so")}. @end table @end deffn -@defvr {Scheme Variable} %default-httpd-modules -A default list of @code{httpd-module} objects. +@defvr {Scheme-Variable} %default-httpd-modules +Eine vorgegebene Liste von @code{httpd-module}-Objekten. @end defvr -@deffn {Data Type} httpd-config-file -This data type represents a configuration file for the httpd service. +@deffn {Datentyp} httpd-config-file +Dieser Datentyp repräsentiert eine Konfigurationsdatei für den httpd-Dienst. @table @asis -@item @code{modules} (default: @code{%default-httpd-modules}) -The modules to load. Additional modules can be added here, or loaded by -additional configuration. +@item @code{modules} (Vorgabe: @code{%default-httpd-modules}) +Welche Module geladen werden sollen. Zusätzliche Module können hier +eingetragen werden oder durch eine zusätzliche Konfigurationsangabe geladen +werden. -For example, in order to handle requests for PHP files, you can use Apache’s -@code{mod_proxy_fcgi} module along with @code{php-fpm-service-type}: +Um zum Beispiel Anfragen nach PHP-Dateien zu behandeln, können Sie das Modul +@code{mod_proxy_fcgi} von Apache zusammen mit @code{php-fpm-service-type} +benutzen: @example (service httpd-service-type @@ -18102,54 +19303,64 @@ For example, in order to handle requests for PHP files, you can use Apache’s (socket-group "httpd"))) @end example -@item @code{server-root} (default: @code{httpd}) -The @code{ServerRoot} in the configuration file, defaults to the httpd -package. Directives including @code{Include} and @code{LoadModule} are taken -as relative to the server root. +@item @code{server-root} (Vorgabe: @code{httpd}) +Die @code{ServerRoot} in der Konfigurationsdatei, vorgegeben ist das +httpd-Paket. Direktiven wie @code{Include} und @code{LoadModule} werden +relativ zur ServerRoot interpretiert. -@item @code{server-name} (default: @code{#f}) -The @code{ServerName} in the configuration file, used to specify the request -scheme, hostname and port that the server uses to identify itself. +@item @code{server-name} (Vorgabe: @code{#f}) +Der @code{ServerName} in der Konfigurationsdatei, mit dem das Anfrageschema +(Request Scheme), der Rechnername (Hostname) und Port angegeben wird, mit +denen sich der Server identifiziert. -This doesn't need to be set in the server config, and can be specifyed in -virtual hosts. The default is @code{#f} to not specify a @code{ServerName}. +Es muss nicht als Teil der Server-Konfiguration festgelegt werden, sondern +kann auch in virtuellen Rechnern (Virtual Hosts) festgelegt +werden. Vorgegeben ist @code{#f}, wodurch kein @code{ServerName} festgelegt +wird. -@item @code{document-root} (default: @code{"/srv/http"}) -The @code{DocumentRoot} from which files will be served. +@item @code{document-root} (Vorgabe: @code{"/srv/http"}) +Das @code{DocumentRoot}-Verzeichnis, in dem sich die Dateien befinden, die +man vom Server abrufen kann. -@item @code{listen} (default: @code{'("80")}) -The list of values for the @code{Listen} directives in the config file. The -value should be a list of strings, when each string can specify the port -number to listen on, and optionally the IP address and protocol to use. +@item @code{listen} (Vorgabe: @code{'("80")}) +Die Liste der Werte für die @code{Listen}-Direktive in der +Konfigurationsdatei. Als Wert sollte eine Liste von Zeichenketten angegeben +werden, die jeweils die Portnummer, auf der gelauscht wird, und optional +auch die zu benutzende IP-Adresse und das Protokoll angeben. -@item @code{pid-file} (default: @code{"/var/run/httpd"}) -The @code{PidFile} to use. This should match the @code{pid-file} set in the -@code{httpd-configuration} so that the Shepherd service is configured -correctly. +@item @code{pid-file} (Vorgabe: @code{"/var/run/httpd"}) +Hiermit wird die PID-Datei als @code{PidFile}-Direktive angegeben. Der Wert +sollte mit der @code{pid-file}-Datei in der @code{httpd-configuration} +übereinstimmen, damit der Shepherd-Dienst richtig konfiguriert ist. -@item @code{error-log} (default: @code{"/var/log/httpd/error_log"}) -The @code{ErrorLog} to which the server will log errors. +@item @code{error-log} (Vorgabe: @code{"/var/log/httpd/error_log"}) +Der Ort, an den der Server mit der @code{ErrorLog}-Direktive +Fehlerprotokolle schreibt. -@item @code{user} (default: @code{"httpd"}) -The @code{User} which the server will answer requests as. +@item @code{user} (Vorgabe: @code{"httpd"}) +Der Benutzer, als der der Server durch die @code{User}-Direktive Anfragen +beantwortet. -@item @code{group} (default: @code{"httpd"}) -The @code{Group} which the server will answer requests as. +@item @code{group} (Vorgabe: @code{"httpd"}) +Die Gruppe, mit der der Server durch die @code{Group}-Direktive Anfragen +beantwortet. -@item @code{extra-config} (default: @code{(list "TypesConfig etc/httpd/mime.types")}) -A flat list of strings and G-expressions which will be added to the end of -the configuration file. +@item @code{extra-config} (Vorgabe: @code{(list "TypesConfig etc/httpd/mime.types")}) +Eine flache Liste von Zeichenketten und G-Ausdrücken, die am Ende der +Konfigurationsdatei hinzugefügt werden. -Any values which the service is extended with will be appended to this list. +Alle Werte, mit denen dieser Dienst erweitert wird, werden an die Liste +angehängt. @end table @end deffn -@deffn {Data Type} httpd-virtualhost -This data type represents a virtualhost configuration block for the httpd -service. +@deffn {Datentyp} httpd-virtualhost +Dieser Datentyp repräsentiert einen Konfigurationsblock für einen virtuellen +Rechner (Virtual Host) des httpd-Dienstes. -These should be added to the extra-config for the httpd-service. +Sie sollten zur zusätzlichen Konfiguration extra-config des httpd-Dienstes +hinzugefügt werden. @example (simple-service 'my-extra-server httpd-service-type @@ -18163,22 +19374,22 @@ These should be added to the extra-config for the httpd-service. @table @asis @item @code{addresses-and-ports} -The addresses and ports for the @code{VirtualHost} directive. +Adressen und Ports für die @code{VirtualHost}-Direktive. @item @code{contents} -The contents of the @code{VirtualHost} directive, this should be a list of -strings and G-expressions. +Der Inhalt der @code{VirtualHost}-Direktive. Er sollte als Liste von +Zeichenketten und G-Ausdrücken angegeben werden. @end table @end deffn @subsubheading NGINX -@deffn {Scheme Variable} nginx-service-type -Service type for the @uref{https://nginx.org/,NGinx} web server. The value -for this service type is a @code{<nginx-configuration>} record. +@deffn {Scheme-Variable} nginx-service-type +Diensttyp für den @uref{https://nginx.org/,NGinx}-Webserver. Der Wert des +Dienstes ist ein @code{<nginx-configuration>}-Verbundsobjekt. -A simple example configuration is given below. +Es folgt ein einfaches Beispiel der Konfiguration. @example (service nginx-service-type @@ -18189,9 +19400,9 @@ A simple example configuration is given below. (root "/srv/http/www.example.com")))))) @end example -In addition to adding server blocks to the service configuration directly, -this service can be extended by other services to add server blocks, as in -this example: +Außer durch direktes Hinzufügen von Server-Blöcken zur Dienstkonfiguration +kann der Dienst auch durch andere Dienste erweitert werden, um Server-Blöcke +hinzuzufügen, wie man im folgenden Beispiel sieht: @example (simple-service 'my-extra-server nginx-service-type @@ -18201,37 +19412,42 @@ this example: @end example @end deffn -At startup, @command{nginx} has not yet read its configuration file, so it -uses a default file to log error messages. If it fails to load its -configuration file, that is where error messages are logged. After the -configuration file is loaded, the default error log file changes as per -configuration. In our case, startup error messages can be found in -@file{/var/run/nginx/logs/error.log}, and after configuration in -@file{/var/log/nginx/error.log}. The second location can be changed with -the @var{log-directory} configuration option. - -@deffn {Data Type} nginx-configuration -This data type represents the configuration for NGinx. Some configuration -can be done through this and the other provided record types, or -alternatively, a config file can be provided. +Beim Starten hat @command{nginx} seine Konfigurationsdatei noch nicht +gelesen und benutzt eine vorgegebene Datei, um Fehlermeldungen zu +protokollieren. Wenn er seine Konfigurationsdatei nicht laden kann, landen +Fehlermeldungen also dort. Nachdem die Konfigurationsdatei geladen ist, +werden Fehlerprotokolle nach Voreinstellung in die Datei geschrieben, die in +der Konfiguration angegeben ist. In unserem Fall können Sie Fehlermeldungen +beim Starten in @file{/var/run/nginx/logs/error.log} finden und nachdem die +Konfiguration eingelesen wurde, finden Sie sie in +@file{/var/log/nginx/error.log}. Letzterer Ort kann mit der +Konfigurationsoption @var{log-directory} geändert werden. + +@deffn {Datentyp} nginx-configuration +Dieser Datentyp repräsentiert die Konfiguration von NGinx. Ein Teil der +Konfiguration kann hierüber und über die anderen zu Ihrer Verfügung +stehenden Verbundstypen geschehen, alternativ können Sie eine +Konfigurationsdatei mitgeben. @table @asis -@item @code{nginx} (default: @code{nginx}) -The nginx package to use. +@item @code{nginx} (Vorgabe: @code{nginx}) +Das zu benutzende nginx-Paket. -@item @code{log-directory} (default: @code{"/var/log/nginx"}) -The directory to which NGinx will write log files. +@item @code{log-directory} (Vorgabe: @code{"/var/log/nginx"}) +In welches Verzeichnis NGinx Protokolldateien schreiben wird. -@item @code{run-directory} (default: @code{"/var/run/nginx"}) -The directory in which NGinx will create a pid file, and write temporary -files. +@item @code{run-directory} (Vorgabe: @code{"/var/run/nginx"}) +In welchem Verzeichnis NGinx eine PID-Datei anlegen und temporäre Dateien +ablegen wird. -@item @code{server-blocks} (default: @code{'()}) -A list of @dfn{server blocks} to create in the generated configuration file, -the elements should be of type @code{<nginx-server-configuration>}. +@item @code{server-blocks} (Vorgabe: @code{'()}) +Eine Liste von @dfn{Server-Blöcken}, die in der erzeugten +Konfigurationsdatei stehen sollen. Die Elemente davon sollten den Typ +@code{<nginx-server-configuration>} haben. -The following example would setup NGinx to serve @code{www.example.com} from -the @code{/srv/http/www.example.com} directory, without using HTTPS. +Im folgenden Beispiel wäre NGinx so eingerichtet, dass Anfragen an +@code{www.example.com} mit Dateien aus dem Verzeichnis +@code{/srv/http/www.example.com} beantwortet werden, ohne HTTPS zu benutzen. @example (service nginx-service-type (nginx-configuration @@ -18241,15 +19457,17 @@ the @code{/srv/http/www.example.com} directory, without using HTTPS. (root "/srv/http/www.example.com")))))) @end example -@item @code{upstream-blocks} (default: @code{'()}) -A list of @dfn{upstream blocks} to create in the generated configuration -file, the elements should be of type @code{<nginx-upstream-configuration>}. +@item @code{upstream-blocks} (Vorgabe: @code{'()}) +Eine Liste von @dfn{Upstream-Blöcken}, die in der erzeugten +Konfigurationsdatei stehen sollen. Ihre Elemente sollten den Typ +@code{<nginx-upstream-configuration>} haben. -Configuring upstreams through the @code{upstream-blocks} can be useful when -combined with @code{locations} in the @code{<nginx-server-configuration>} -records. The following example creates a server configuration with one -location configuration, that will proxy requests to a upstream -configuration, which will handle requests with two servers. +Upstreams als @code{upstream-blocks} zu konfigurieren, kann hilfreich sein, +wenn es mit @code{locations} in @code{<nginx-server-configuration>} +verbunden wird. Das folgende Beispiel erzeugt eine Server-Konfiguration mit +einer Location-Konfiguration, bei der Anfragen als Proxy entsprechend einer +Upstream-Konfiguration weitergeleitet werden, wodurch zwei Server diese +beantworten können. @example (service @@ -18272,133 +19490,146 @@ configuration, which will handle requests with two servers. @end example @item @code{file} (default: @code{#f}) -If a configuration @var{file} is provided, this will be used, rather than -generating a configuration file from the provided @code{log-directory}, -@code{run-directory}, @code{server-blocks} and @code{upstream-blocks}. For -proper operation, these arguments should match what is in @var{file} to -ensure that the directories are created when the service is activated. - -This can be useful if you have an existing configuration file, or it's not -possible to do what is required through the other parts of the -nginx-configuration record. - -@item @code{server-names-hash-bucket-size} (default: @code{#f}) -Bucket size for the server names hash tables, defaults to @code{#f} to use -the size of the processors cache line. +Wenn eine Konfigurationsdatei als @var{file} angegeben wird, dann wird diese +benutzt und @emph{keine} Konfigurationsdatei anhand der angegebenen +@code{log-directory}, @code{run-directory}, @code{server-blocks} und +@code{upstream-blocks} erzeugt. Trotzdem sollten diese Argumente bei einer +richtigen Konfiguration mit denen in der Datei @var{file} übereinstimmen, +damit die Verzeichnisse bei Aktivierung des Dienstes erzeugt werden. + +Das kann nützlich sein, wenn Sie schon eine bestehende Konfigurationsdatei +haben oder das, was Sie brauchen, nicht mit anderen Teilen eines +nginx-configuration-Verbundsobjekts umgesetzt werden kann. + +@item @code{server-names-hash-bucket-size} (Vorgabe: @code{#f}) +Größe der Behälter (englisch »Buckets«) für die Hashtabelle der Servernamen; +vorgegeben ist @code{#f}, wodurch die Größe der Cache-Lines des Prozessors +verwendet wird. -@item @code{server-names-hash-bucket-max-size} (default: @code{#f}) -Maximum bucket size for the server names hash tables. +@item @code{server-names-hash-bucket-max-size} (Vorgabe: @code{#f}) +Maximale Behältergröße für die Hashtabelle der Servernamen. @item @code{extra-content} (Vorgabe: @code{""}) -Extra content for the @code{http} block. Should be string or a string -valued G-expression. +Zusätzlicher Inhalt des @code{http}-Blocks. Er sollte eine Zeichenkette oder +ein zeichenkettenwertiger G-Ausdruck. @end table @end deffn -@deftp {Data Type} nginx-server-configuration -Data type representing the configuration of an nginx server block. This -type has the following parameters: +@deftp {Datentyp} nginx-server-configuration +Der Datentyp, der die Konfiguration eines nginx-Serverblocks +repräsentiert. Dieser Typ hat die folgenden Parameter: @table @asis -@item @code{listen} (default: @code{'("80" "443 ssl")}) -Each @code{listen} directive sets the address and port for IP, or the path -for a UNIX-domain socket on which the server will accept requests. Both -address and port, or only address or only port can be specified. An address -may also be a hostname, for example: +@item @code{listen} (Vorgabe: @code{'("80" "443 ssl")}) +Jede @code{listen}-Direktive legt Adresse und Port für eine IP fest oder +gibt einen Unix-Socket an, auf dem der Server Anfragen beantwortet. Es +können entweder sowohl Adresse als auch Port oder nur die Adresse oder nur +der Port angegeben werden. Als Adresse kann auch ein Rechnername +(»Hostname«) angegeben werden, zum Beispiel: @example '("127.0.0.1:8000" "127.0.0.1" "8000" "*:8000" "localhost:8000") @end example -@item @code{server-name} (default: @code{(list 'default)}) -A list of server names this server represents. @code{'default} represents -the default server for connections matching no other server. +@item @code{server-name} (Vorgabe: @code{(list 'default)}) +Eine Liste von Servernamen, die dieser Server repräsentiert. @code{'default} +repräsentiert den voreingestellten Server, der für Verbindungen verwendet +wird, die zu keinem anderen Server passen. -@item @code{root} (default: @code{"/srv/http"}) -Root of the website nginx will serve. +@item @code{root} (Vorgabe: @code{"/srv/http"}) +Wurzelverzeichnis der Webpräsenz, die über nginx abgerufen werden kann. -@item @code{locations} (default: @code{'()}) -A list of @dfn{nginx-location-configuration} or -@dfn{nginx-named-location-configuration} records to use within this server -block. +@item @code{locations} (Vorgabe: @code{'()}) +Eine Liste von @dfn{nginx-location-configuration}- oder +@dfn{nginx-named-location-configuration}-Verbundsobjekten, die innerhalb des +Serverblocks benutzt werden. -@item @code{index} (default: @code{(list "index.html")}) -Index files to look for when clients ask for a directory. If it cannot be -found, Nginx will send the list of files in the directory. +@item @code{index} (Vorgabe: @code{(list "index.html")}) +Index-Dateien, mit denen Anfragen nach einem Verzeichnis beantwortet +werden. Wenn @emph{keine} davon gefunden wird, antwortet Nginx mit der Liste +der Dateien im Verzeichnis. -@item @code{try-files} (default: @code{'()}) -A list of files whose existence is checked in the specified order. -@code{nginx} will use the first file it finds to process the request. +@item @code{try-files} (Vorgabe: @code{'()}) +Eine Liste der Dateien, bei denen in der angegebenen Reihenfolge geprüft +wird, ob sie existieren. @code{nginx} beantwortet die Anfrage mit der ersten +Datei, die es findet. -@item @code{ssl-certificate} (default: @code{#f}) -Where to find the certificate for secure connections. Set it to @code{#f} -if you don't have a certificate or you don't want to use HTTPS. +@item @code{ssl-certificate} (Vorgabe: @code{#f}) +Wo das Zertifikat für sichere Verbindungen gespeichert ist. Sie sollten es +auf @code{#f} setzen, wenn Sie kein Zertifikat haben oder kein HTTPS +benutzen möchten. -@item @code{ssl-certificate-key} (default: @code{#f}) -Where to find the private key for secure connections. Set it to @code{#f} -if you don't have a key or you don't want to use HTTPS. +@item @code{ssl-certificate-key} (Vorgabe: @code{#f}) +Wo der private Schlüssel für sichere Verbindungen gespeichert ist. Sie +sollten ihn auf @code{#f} setzen, wenn Sie keinen Schlüssel haben oder kein +HTTPS benutzen möchten. -@item @code{server-tokens?} (default: @code{#f}) -Whether the server should add its configuration to response. +@item @code{server-tokens?} (Vorgabe: @code{#f}) +Ob der Server Informationen über seine Konfiguration bei Antworten beilegen +soll. -@item @code{raw-content} (default: @code{'()}) -A list of raw lines added to the server block. +@item @code{raw-content} (Vorgabe: @code{'()}) +Eine Liste von Zeilen, die unverändert in den Serverblock eingefügt werden. @end table @end deftp -@deftp {Data Type} nginx-upstream-configuration -Data type representing the configuration of an nginx @code{upstream} block. -This type has the following parameters: +@deftp {Datentyp} nginx-upstream-configuration +Der Datentyp, der die Konfiguration eines nginx-@code{upstream}-Blocks +repräsentiert. Dieser Typ hat folgende Parameter: @table @asis @item @code{name} -Name for this group of servers. +Der Name dieser Servergruppe. @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. +Gibt die Adressen der Server in der Gruppe an. Die Adresse kann als +IP-Adresse (z.B.@: @samp{127.0.0.1}), Domänenname (z.B.@: +@samp{backend1.example.com}) oder als Pfad eines Unix-Sockets mit dem +vorangestellten Präfix @samp{unix:} angegeben werden. Wenn Adressen eine +IP-Adresse oder einen Domänennamen benutzen, ist der voreingestellte Port +80, aber ein abweichender Port kann auch explizit angegeben werden. @end table @end deftp -@deftp {Data Type} nginx-location-configuration -Data type representing the configuration of an nginx @code{location} block. -This type has the following parameters: +@deftp {Datentyp} nginx-location-configuration +Der Datentyp, der die Konfiguration eines nginx-@code{location}-Blocks +angibt. Der Typ hat die folgenden Parameter: @table @asis @item @code{uri} -URI which this location block matches. +Die URI, die auf diesen Block passt. @anchor{nginx-location-configuration body} @item @code{body} -Body of the location block, specified as a list of strings. This can contain -many configuration directives. For example, to pass requests to a upstream -server group defined using an @code{nginx-upstream-configuration} block, the -following directive would be specified in the body @samp{(list "proxy_pass -http://upstream-name;")}. +Der Rumpf des location-Blocks, der als eine Liste von Zeichenketten +angegeben werden muss. Er kann viele Konfigurationsdirektiven enthalten, zum +Beispiel können Anfragen an eine Upstream-Servergruppe weitergeleitet +werden, die mit einem @code{nginx-upstream-configuration}-Block angegeben +wurde, indem diese Direktive im Rumpf angegeben wird: @samp{(list +"proxy_pass http://upstream-name;")}. @end table @end deftp -@deftp {Data Type} nginx-named-location-configuration -Data type representing the configuration of an nginx named location block. -Named location blocks are used for request redirection, and not used for -regular request processing. This type has the following parameters: +@deftp {Datentyp} nginx-named-location-configuration +Der Datentyp repräsentiert die Konfiguration eines mit Namen versehenen +nginx-location-Blocks (»Named Location Block«). Ein mit Namen versehener +location-Block wird zur Umleitung von Anfragen benutzt und nicht für die +normale Anfrageverarbeitung. Dieser Typ hat die folgenden Parameter: @table @asis @item @code{name} -Name to identify this location block. +Der Name, mit dem dieser location-Block identifiziert wird. @item @code{body} -@xref{nginx-location-configuration body}, as the body for named location -blocks can be used in a similar way to the -@code{nginx-location-configuration body}. One restriction is that the body -of a named location block cannot contain location blocks. +Siehe @ref{nginx-location-configuration body}, weil der Rumpf (»Body«) eines +mit Namen versehenen location-Blocks wie ein +@code{nginx-location-configuration body} benutzt werden kann. Eine +Einschränkung ist, dass der Rumpf eines mit Namen versehenen location-Blocks +keine location-Blöcke enthalten kann. @end table @end deftp @@ -18503,8 +19734,8 @@ A service type for the @code{fcgiwrap} FastCGI proxy. @end defvr @deftp {Data Type} fcgiwrap-configuration -Data type representing the configuration of the @code{fcgiwrap} service. -This type has the following parameters: +Der Datentyp, der die Konfiguration des @code{fcgiwrap}-Dienstes +repräsentiert. Dieser Typ hat die folgenden Parameter: @table @asis @item @code{package} (default: @code{fcgiwrap}) The fcgiwrap package to use. @@ -18597,7 +19828,7 @@ Determines whether php errors and warning should be sent to clients and displayed in their browsers. This is useful for local php development, but a security risk for public sites, as error messages can reveal passwords and personal data. -@item @code{timezone} (default @code{#f}) +@item @code{timezone} (Vorgabe: @code{#f}) Specifies @code{php_admin_value[date.timezone]} parameter. @item @code{workers-logfile} (default @code{(string-append "/var/log/php" (version-major (package-version php)) "-fpm.www.log")}) This file will log the @code{stderr} outputs of php worker processes. Can @@ -18674,7 +19905,7 @@ The cat avatar generator is a simple service to demonstrate the use of php-fpm in @code{Nginx}. It is used to generate cat avatar from a seed, for instance the hash of a user's email address. -@deffn {Scheme Procedure} cat-avatar-generator-service @ +@deffn {Scheme-Prozedur} cat-avatar-generator-service @ [#:cache-dir "/var/cache/cat-avatar-generator"] @ [#:package cat-avatar-generator] @ [#:configuration (nginx-server-configuration)] Returns an nginx-server-configuration that inherits @code{configuration}. @@ -20162,42 +21393,42 @@ CPU frequency scaling governor on AC mode. With intel_pstate driver, alternatives are powersave and performance. With acpi-cpufreq driver, alternatives are ondemand, powersave, performance and conservative. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @deftypevr {@code{tlp-configuration} parameter} maybe-space-separated-string-list cpu-scaling-governor-on-bat Same as @code{cpu-scaling-governor-on-ac} but on BAT mode. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @deftypevr {@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-min-freq-on-ac Set the min available frequency for the scaling governor on AC. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @deftypevr {@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-max-freq-on-ac Set the max available frequency for the scaling governor on AC. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @deftypevr {@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-min-freq-on-bat Set the min available frequency for the scaling governor on BAT. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @deftypevr {@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-scaling-max-freq-on-bat Set the max available frequency for the scaling governor on BAT. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @@ -20205,7 +21436,7 @@ Defaults to @samp{disabled}. Limit the min P-state to control the power dissipation of the CPU, in AC mode. Values are stated as a percentage of the available performance. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @@ -20213,35 +21444,35 @@ Defaults to @samp{disabled}. Limit the max P-state to control the power dissipation of the CPU, in AC mode. Values are stated as a percentage of the available performance. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @deftypevr {@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-min-perf-on-bat Same as @code{cpu-min-perf-on-ac} on BAT mode. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @deftypevr {@code{tlp-configuration} parameter} maybe-non-negative-integer cpu-max-perf-on-bat Same as @code{cpu-max-perf-on-ac} on BAT mode. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @deftypevr {@code{tlp-configuration} parameter} maybe-boolean cpu-boost-on-ac? Enable CPU turbo boost feature on AC mode. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @deftypevr {@code{tlp-configuration} parameter} maybe-boolean cpu-boost-on-bat? Same as @code{cpu-boost-on-ac?} on BAT mode. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @@ -20271,7 +21502,7 @@ Defaults to @samp{#f}. For Linux kernels with PHC patch applied, change CPU voltages. An example value would be @samp{"F:V F:V F:V F:V"}. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @@ -20309,14 +21540,14 @@ Same as @code{disk-apm-bat} but on BAT mode. Hard disk spin down timeout. One value has to be specified for each declared hard disk. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @deftypevr {@code{tlp-configuration} parameter} maybe-space-separated-string-list disk-spindown-timeout-on-bat Same as @code{disk-spindown-timeout-on-ac} but on BAT mode. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @@ -20324,7 +21555,7 @@ Defaults to @samp{disabled}. Select IO scheduler for disk devices. One value has to be specified for each declared hard disk. Example alternatives are cfq, deadline and noop. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @@ -20346,21 +21577,21 @@ Defaults to @samp{"min_power"}. @deftypevr {@code{tlp-configuration} parameter} maybe-string sata-linkpwr-blacklist Exclude specified SATA host devices for link power management. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @deftypevr {@code{tlp-configuration} parameter} maybe-on-off-boolean ahci-runtime-pm-on-ac? Enable Runtime Power Management for AHCI controller and disks on AC mode. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @deftypevr {@code{tlp-configuration} parameter} maybe-on-off-boolean ahci-runtime-pm-on-bat? Same as @code{ahci-runtime-pm-on-ac} on BAT mode. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @@ -20515,7 +21746,7 @@ Defaults to @samp{#t}. @deftypevr {@code{tlp-configuration} parameter} maybe-space-separated-string-list runtime-pm-blacklist Exclude specified PCI(e) device addresses from Runtime Power Management. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @@ -20535,7 +21766,7 @@ Defaults to @samp{#t}. @deftypevr {@code{tlp-configuration} parameter} maybe-string usb-blacklist Exclude specified devices from USB autosuspend. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @@ -20550,14 +21781,14 @@ Defaults to @samp{#t}. Include specified devices into USB autosuspend, even if they are already excluded by the driver or via @code{usb-blacklist-wwan?}. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @deftypevr {@code{tlp-configuration} parameter} maybe-boolean usb-autosuspend-disable-on-shutdown? Enable USB autosuspend before shutdown. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @@ -20635,6 +21866,15 @@ The directory to scan for music files. @item @code{playlist-dir} (default: @code{"~/.mpd/playlists"}) The directory to store playlists. +@item @code{db-file} (Vorgabe: @code{"~/.mpd/tag_cache"}) +Der Ort, an dem die Musikdatenbank gespeichert wird. + +@item @code{state-file} (Vorgabe: @code{"~/.mpd/state"}) +The location of the file that stores current MPD's state. + +@item @code{sticker-file} (Vorgabe: @code{"~/.mpd/sticker.sql"}) +Der Ort, an dem die Sticker-Datenbank gespeichert wird. + @item @code{port} (default: @code{"6600"}) The port to run mpd on. @@ -21367,7 +22607,7 @@ QEMU package to use as well as the architecture we want to emulated: @example (service qemu-binfmt-service-type (qemu-binfmt-configuration - (platforms (lookup-qemu-platforms "arm" "aarch64" "ppc")))) + (platforms (lookup-qemu-platforms "arm" "aarch64" "mips64el")))) @end example In this example, we enable transparent emulation for the ARM and aarch64 @@ -22327,7 +23567,7 @@ Defaults to @samp{""}. A flag which can be used to disable the global setting @code{enable-commit-graph?}. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @@ -22335,7 +23575,7 @@ Defaults to @samp{disabled}. A flag which can be used to disable the global setting @code{enable-log-filecount?}. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @@ -22343,7 +23583,7 @@ Defaults to @samp{disabled}. A flag which can be used to disable the global setting @code{enable-log-linecount?}. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @@ -22351,7 +23591,7 @@ Defaults to @samp{disabled}. Flag which, when set to @code{#t}, will make cgit display remote branches in the summary and refs views. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @@ -22359,7 +23599,7 @@ Defaults to @samp{disabled}. A flag which can be used to override the global setting @code{enable-subject-links?}. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @@ -22367,7 +23607,7 @@ Defaults to @samp{disabled}. A flag which can be used to override the global setting @code{enable-html-serving?}. -Defaults to @samp{disabled}. +Der Vorgabewert ist @samp{disabled} (d.h.@: deaktiviert). @end deftypevr @@ -22644,8 +23884,8 @@ The port to bind the server to. @cindex fingerprint @subsubheading Fingerabdrucklese-Dienst -The @code{(gnu services fingerprint)} module provides a DBus service to read -and identify fingerprints via a fingerprint sensor. +The @code{(gnu services authentication)} module provides a DBus service to +read and identify fingerprints via a fingerprint sensor. @defvr {Scheme Variable} fprintd-service-type The service type for @command{fprintd}, which provides the fingerprint @@ -22746,6 +23986,34 @@ daemon that enables sharing the clipboard with a vm and setting the guest display resolution when the graphical console window resizes. @end deffn +@cindex inputattach +@subsubheading inputattach-Dienst + +@cindex tablet input, for Xorg +@cindex touchscreen input, for Xorg +The @uref{https://linuxwacom.github.io/, inputattach} service allows you to +use input devices such as Wacom tablets, touchscreens, or joysticks with the +Xorg display server. + +@deffn {Scheme-Variable} inputattach-service-type +Type of a service that runs @command{inputattach} on a device and dispatches +events from it. +@end deffn + +@deftp {Datentyp} inputattach-configuration +@table @asis +@item @code{device-type} (Vorgabe: @code{"wacom"}) +The type of device to connect to. Run @command{inputattach --help}, from +the @code{inputattach} package, to see the list of supported device types. + +@item @code{device} (Vorgabe: @code{"/dev/ttyS0"}) +The device file to connect to the device. + +@item @code{log-file} (Vorgabe: @code{#f}) +If true, this must be the name of a file to log messages to. +@end table +@end deftp + @subsection Dictionary Services @cindex dictionary The @code{(gnu services dict)} module provides the following service: @@ -22845,11 +24113,12 @@ The following is an example @code{dicod-service} configuration. @end example @cindex Docker -@subsubheading Docker Service +@subsubheading Docker-Dienst -The @code{(gnu services docker)} module provides the following service. +Das Modul @code{(gnu services docker)} stellt den folgenden Dienst zur +Verfügung. -@defvr {Scheme Variable} docker-service-type +@defvr {Scheme-Variable} docker-service-type This is the type of the service that runs @url{http://www.docker.com,Docker}, a daemon that can execute application @@ -22857,17 +24126,17 @@ bundles (sometimes referred to as ``containers'') in isolated environments. @end defvr -@deftp {Data Type} docker-configuration -This is the data type representing the configuration of Docker and -Containerd. +@deftp {Datentyp} docker-configuration +Dies ist der Datentyp, der die Konfiguration von Docker und Containerd +repräsentiert. @table @asis -@item @code{package} (default: @code{docker}) -The Docker package to use. +@item @code{package} (Vorgabe: @code{docker}) +Das Docker-Paket, was benutzt werden soll. -@item @code{containerd} (default: @var{containerd}) -The Containerd package to use. +@item @code{containerd} (Vorgabe: @var{containerd}) +Das Containerd-Paket, was benutzt werden soll. @end table @end deftp @@ -22875,46 +24144,51 @@ The Containerd package to use. @node Setuid-Programme @section Setuid-Programme -@cindex setuid programs -Some programs need to run with ``root'' privileges, even when they are -launched by unprivileged users. A notorious example is the @command{passwd} -program, which users can run to change their password, and which needs to -access the @file{/etc/passwd} and @file{/etc/shadow} files---something -normally restricted to root, for obvious security reasons. To address that, -these executables are @dfn{setuid-root}, meaning that they always run with -root privileges (@pxref{How Change Persona,,, libc, The GNU C Library -Reference Manual}, for more info about the setuid mechanism.) - -The store itself @emph{cannot} contain setuid programs: that would be a -security issue since any user on the system can write derivations that -populate the store (@pxref{Der Store}). Thus, a different mechanism is -used: instead of changing the setuid bit directly on files that are in the -store, we let the system administrator @emph{declare} which programs should -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 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}): +@cindex setuid-Programme +Manche Programme müssen mit Administratorrechten (also den Berechtigungen +des »root«-Benutzers) ausgeführt werden, selbst wenn Nutzer ohne besondere +Berechtigungen sie starten. Ein bekanntes Beispiel ist das Programm +@command{passwd}, womit Nutzer ihr Passwort ändern können, wozu das Programm +auf die Dateien @file{/etc/passwd} und @file{/etc/shadow} zugreifen muss — +was normalerweise nur der »root«-Nutzer darf, aus offensichtlichen Gründen +der Informationssicherheit. Deswegen sind diese ausführbaren Programmdateien +@dfn{setuid-root}, d.h.@: sie laufen immer mit den Administratorrechten des +root-Nutzers, egal wer sie startet (siehe @ref{How Change Persona,,, libc, +The GNU C Library Reference Manual} für mehr Informationen über den +setuid-Mechanismus). + +Der Store selbst kann @emph{keine} setuid-Programme enthalten: Das wäre eine +Sicherheitslücke, weil dann jeder Nutzer auf dem System Ableitungen +schreiben könnte, die in den Store solche Dateien einfügen würden (siehe +@ref{Der Store}). Wir benutzen also einen anderen Mechanismus: Statt auf den +ausführbaren Dateien im Store selbst deren setuid-Bit zu setzen, lassen wir +den Systemadministrator @emph{deklarieren}, welche Programme mit setuid-root +gestartet werden. + +Das Feld @code{setuid-programs} einer @code{operating-system}-Deklaration +enthält eine Liste von G-Ausdrücken, die die Namen der Programme angeben, +die setuid-root sein sollen (siehe @ref{Das Konfigurationssystem nutzen}). Zum Beispiel kann das Programm @command{passwd}, was Teil des +Shadow-Pakets ist, durch diesen G-Ausdruck bezeichnet werden (siehe +@ref{G-Ausdrücke}): @example #~(string-append #$shadow "/bin/passwd") @end example -A default set of setuid programs is defined by the @code{%setuid-programs} -variable of the @code{(gnu system)} module. +Eine vorgegebene Menge von setuid-Programmen wird durch die Variable +@code{%setuid-programs} aus dem Modul @code{(gnu system)} definiert. -@defvr {Scheme Variable} %setuid-programs -A list of G-expressions denoting common programs that are setuid-root. +@defvr {Scheme-Variable} %setuid-programs +Eine Liste von G-Ausdrücken, die übliche Programme angeben, die setuid-root +sein müssen. -The list includes commands such as @command{passwd}, @command{ping}, -@command{su}, and @command{sudo}. +Die Liste enthält Befehle wie @command{passwd}, @command{ping}, @command{su} +und @command{sudo}. @end defvr -Under the hood, the actual setuid programs are created in the -@file{/run/setuid-programs} directory at system activation time. The files -in this directory refer to the ``real'' binaries, which are in the store. +Intern erzeugt Guix die eigentlichen setuid-Programme im Verzeichnis +@file{/run/setuid-programs}, wenn das System aktiviert wird. Die Dateien in +diesem Verzeichnis verweisen auf die »echten« Binärdateien im Store. @node X.509-Zertifikate @section X.509-Zertifikate @@ -22935,15 +24209,15 @@ Web-Browser wie GNU@tie{}IceCat liefern ihre eigenen CA-Zertifikate mit, damit sie von Haus aus Zertifikate verifizieren können. Den meisten anderen Programmen, die HTTPS sprechen können — @command{wget}, -@command{git}, @command{w3m} etc. — muss allerdings erst mitgeteilt werden, -wo die CA-Zertifikate installiert sind. +@command{git}, @command{w3m} etc.@: — muss allerdings erst mitgeteilt +werden, wo die CA-Zertifikate installiert sind. @cindex @code{nss-certs} -In Guix, this is done by adding a package that provides certificates to the -@code{packages} field of the @code{operating-system} declaration -(@pxref{»operating-system«-Referenz}). Guix includes one such package, -@code{nss-certs}, which is a set of CA certificates provided as part of -Mozilla's Network Security Services. +In Guix müssen Sie dazu ein Paket, das Zertifikate enthält, in das +@code{packages}-Feld der @code{operating-system}-Deklaration des +Betriebssystems hinzufügen (siehe @ref{»operating-system«-Referenz}). Guix +liefert ein solches Paket mit, @code{nss-certs}, was als Teil von Mozillas +»Network Security Services« angeboten wird. Beachten Sie, dass es @emph{nicht} zu den @var{%base-packages} gehört, Sie es also ausdrücklich hinzufügen müssen. Das Verzeichnis @@ -22987,89 +24261,98 @@ Umgebungsvariablen vielleicht in deren Dokumentation nachschlagen. @cindex Name Service Switch @cindex NSS -The @code{(gnu system nss)} module provides bindings to the configuration -file of the libc @dfn{name service switch} or @dfn{NSS} (@pxref{NSS -Configuration File,,, libc, The GNU C Library Reference Manual}). In a -nutshell, the NSS is a mechanism that allows libc to be extended with new -``name'' lookup methods for system databases, which includes host names, -service names, user accounts, and more (@pxref{Name Service Switch, System -Databases and Name Service Switch,, libc, The GNU C Library Reference -Manual}). - -The NSS configuration specifies, for each system database, which lookup -method is to be used, and how the various methods are chained together---for -instance, under which circumstances NSS should try the next method in the -list. The NSS configuration is given in the @code{name-service-switch} -field of @code{operating-system} declarations (@pxref{»operating-system«-Referenz, @code{name-service-switch}}). +Das Modul @code{(gnu system nss)} enthält Anbindungen für die Konfiguration +des @dfn{Name Service Switch} (NSS) der libc (siehe @ref{NSS Configuration +File,,, libc, The GNU C Library Reference Manual}). Kurz gesagt ist der NSS +ein Mechanismus, mit dem die libc um neue »Namens«-Auflösungsmethoden für +Systemdatenbanken erweitert werden kann; dazu gehören Rechnernamen (auch +bekannt als »Host«-Namen), Dienstnamen, Benutzerkonten und mehr (siehe +@ref{Name Service Switch, System Databases and Name Service Switch,, libc, +The GNU C Library Reference Manual}). + +Die NSS-Konfiguration legt für jede Systemdatenbank fest, mit welcher +Methode der Name nachgeschlagen (»aufgelöst«) werden kann und welche +Methoden zusammenhängen — z.B.@: unter welchen Umständen der NSS es mit der +nächsten Methode auf seiner Liste versuchen sollte. Die NSS-Konfiguration +wird im Feld @code{name-service-switch} von +@code{operating-system}-Deklarationen angegeben (siehe @ref{»operating-system«-Referenz, @code{name-service-switch}}). @cindex nss-mdns -@cindex .local, host name lookup -As an example, the declaration below configures the NSS to use the -@uref{http://0pointer.de/lennart/projects/nss-mdns/, @code{nss-mdns} -back-end}, which supports host name lookups over multicast DNS (mDNS) for -host names ending in @code{.local}: +@cindex .local, Rechnernamensauflösung +Zum Beispiel konfigurieren die folgenden Deklarationen den NSS so, dass er +das @uref{http://0pointer.de/lennart/projects/nss-mdns/, +@code{nss-mdns}-Backend} benutzt, wodurch er auf @code{.local} endende +Rechnernamen über Multicast-DNS (mDNS) auflöst: @example (name-service-switch - (hosts (list %files ;first, check /etc/hosts + (hosts (list %files ;zuerst in /etc/hosts nachschlagen - ;; If the above did not succeed, try - ;; with 'mdns_minimal'. + ;; Wenn das keinen Erfolg hatte, es + ;; mit 'mdns_minimal' versuchen. (name-service (name "mdns_minimal") - ;; 'mdns_minimal' is authoritative for - ;; '.local'. When it returns "not found", - ;; no need to try the next methods. + ;; 'mdns_minimal' ist die Autorität für + ;; '.local'. Gibt es not-found ("nicht + ;; gefunden") zurück, müssen wir die + ;; nächsten Methoden gar nicht erst + ;; versuchen. (reaction (lookup-specification (not-found => return)))) - ;; Then fall back to DNS. + ;; Ansonsten benutzen wir DNS. (name-service (name "dns")) - ;; Finally, try with the "full" 'mdns'. + ;; Ein letzter Versuch mit dem + ;; "vollständigen" 'mdns'. (name-service (name "mdns"))))) @end example -Do not worry: the @code{%mdns-host-lookup-nss} variable (see below) -contains this configuration, so you will not have to type it if all you want -is to have @code{.local} host lookup working. +Keine Sorge: Die Variable @code{%mdns-host-lookup-nss} (siehe unten) enthält +diese Konfiguration bereits. Statt das alles selst einzutippen, können Sie +sie benutzen, wenn alles, was Sie möchten, eine funktionierende +Namensauflösung für @code{.local}-Rechner ist. -Note that, in this case, in addition to setting the -@code{name-service-switch} of the @code{operating-system} declaration, you -also need to use @code{avahi-service-type} (@pxref{Netzwerkdienste, -@code{avahi-service-type}}), or @var{%desktop-services}, which includes it -(@pxref{Desktop-Dienste}). Doing this makes @code{nss-mdns} accessible to -the name service cache daemon (@pxref{Basisdienste, @code{nscd-service}}). +Beachten Sie dabei, dass es zusätzlich zum Festlegen des +@code{name-service-switch} in der @code{operating-system}-Deklaration auch +erforderlich ist, den @code{avahi-service-type} zu benutzen (siehe +@ref{Netzwerkdienste, @code{avahi-service-type}}). Es genügt auch, wenn +Sie die @var{%desktop-services} benutzen, weil er darin enthalten ist (siehe +@ref{Desktop-Dienste}). Dadurch wird @code{nss-mdns} für den Name Service +Cache Daemon nutzbar (siehe @ref{Basisdienste, @code{nscd-service}}). -For convenience, the following variables provide typical NSS configurations. +Um sich eine lange Konfiguration zu ersparen, können Sie auch einfach die +folgenden Variablen für typische NSS-Konfigurationen benutzen. -@defvr {Scheme Variable} %default-nss -This is the default name service switch configuration, a -@code{name-service-switch} object. +@defvr {Scheme-Variable} %default-nss +Die vorgegebene Konfiguration des Name Service Switch als ein +@code{name-service-switch}-Objekt. @end defvr -@defvr {Scheme Variable} %mdns-host-lookup-nss -This is the name service switch configuration with support for host name -lookup over multicast DNS (mDNS) for host names ending in @code{.local}. +@defvr {Scheme-Variable} %mdns-host-lookup-nss +Die Name-Service-Switch-Konfiguration mit Unterstützung für +Rechnernamensauflösung über »Multicast DNS« (mDNS) für auf @code{.local} +endende Rechnernamen. @end defvr -The reference for name service switch configuration is given below. It is a -direct mapping of the configuration file format of the C library , so please -refer to the C library manual for more information (@pxref{NSS Configuration -File,,, libc, The GNU C Library Reference Manual}). Compared to the -configuration file format of libc NSS, it has the advantage not only of -adding this warm parenthetic feel that we like, but also static checks: you -will know about syntax errors and typos as soon as you run @command{guix -system}. +Im Folgenden finden Sie eine Referenz, wie eine +Name-Service-Switch-Konfiguration aussehen muss. Sie hat eine direkte +Entsprechung zum Konfigurationsdateiformat der C-Bibliothek, lesen Sie +weitere Informationen also bitte im Handbuch der C-Bibliothek nach (siehe +@ref{NSS Configuration File,,, libc, The GNU C Library Reference +Manual}). Gegenüber dem Konfigurationsdateiformat des libc-NSS bekommen Sie +mit unserer Syntax nicht nur ein warm umklammerndes Gefühl, sondern auch +eine statische Analyse: Wenn Sie Syntax- und Schreibfehler machen, werden +Sie darüber benachrichtigt, sobald Sie @command{guix system} aufrufen. -@deftp {Data Type} name-service-switch +@deftp {Datentyp} name-service-switch -This is the data type representation the configuration of libc's name -service switch (NSS). Each field below represents one of the supported -system databases. +Der Datentyp, der die Konfiguration des Name Service Switch (NSS) der libc +repräsentiert. Jedes im Folgenden aufgeführte Feld repräsentiert eine der +unterstützten Systemdatenbanken. @table @code @item aliases @@ -23085,30 +24368,31 @@ system databases. @itemx rpc @itemx services @itemx shadow -The system databases handled by the NSS. Each of these fields must be a -list of @code{<name-service>} objects (see below). +Das sind die Systemdatenbanken, um die sich NSS kümmern kann. Jedes dieser +Felder muss eine Liste aus @code{<name-service>}-Objekten sein (siehe +unten). @end table @end deftp -@deftp {Data Type} name-service +@deftp {Datentyp} name-service -This is the data type representing an actual name service and the associated -lookup action. +Der einen eigentlichen Namensdienst repräsentierende Datentyp zusammen mit +der zugehörigen Auflösungsaktion. @table @code @item name -A string denoting the name service (@pxref{Services in the NSS -configuration,,, libc, The GNU C Library Reference Manual}). +Eine Zeichenkette, die den Namensdienst bezeichnet (siehe @ref{Services in +the NSS configuration,,, libc, The GNU C Library Reference Manual}). -Note that name services listed here must be visible to nscd. This is -achieved by passing the @code{#:name-services} argument to -@code{nscd-service} the list of packages providing the needed name services -(@pxref{Basisdienste, @code{nscd-service}}). +Beachten Sie, dass hier aufgeführte Namensdienste für den nscd sichtbar sein +müssen. Dazu übergeben Sie im Argument @code{#:name-services} des +@code{nscd-service} die Liste der Pakete, die die entsprechenden +Namensdienste anbieten (siehe @ref{Basisdienste, @code{nscd-service}}). @item reaction -An action specified using the @code{lookup-specification} macro -(@pxref{Actions in the NSS configuration,,, libc, The GNU C Library -Reference Manual}). For example: +Eine mit Hilfe des Makros @code{lookup-specification} angegebene Aktion +(siehe @ref{Actions in the NSS configuration,,, libc, The GNU C Library +Reference Manual}). Zum Beispiel: @example (lookup-specification (unavailable => continue) @@ -23122,19 +24406,20 @@ Reference Manual}). For example: @cindex initrd @cindex initiale RAM-Disk -For bootstrapping purposes, the Linux-Libre kernel is passed an @dfn{initial -RAM disk}, or @dfn{initrd}. An initrd contains a temporary root file system -as well as an initialization script. The latter is responsible for mounting -the real root file system, and for loading any kernel modules that may be -needed to achieve that. - -The @code{initrd-modules} field of an @code{operating-system} declaration -allows you to specify Linux-libre kernel modules that must be available in -the initrd. In particular, this is where you would list modules needed to -actually drive the hard disk where your root partition is---although the -default value of @code{initrd-modules} should cover most use cases. For -example, assuming you need the @code{megaraid_sas} module in addition to the -default modules to be able to access your root file system, you would write: +Um ihn zu initialisieren (zu »bootstrappen«), wird für den Kernel +Linux-Libre eine @dfn{initiale RAM-Disk} angegeben (kurz @dfn{initrd}). Eine +initrd enthält ein temporäres Wurzeldateisystem sowie ein Skript zur +Initialisierung. Letzteres ist dafür zuständig, das echte Wurzeldateisystem +einzubinden und alle Kernel-Module zu laden, die dafür nötig sein könnten. + +Mit dem Feld @code{initrd-modules} einer @code{operating-system}-Deklaration +können Sie angeben, welche Kernel-Module für Linux-libre in der initrd +verfügbar sein müssen. Insbesondere müssen hier die Module aufgeführt +werden, um die Festplatte zu betreiben, auf der sich Ihre Wurzelpartition +befindet — allerdings sollte der vorgegebene Wert der @code{initrd-modules} +in dem meisten Fällen genügen. Wenn Sie aber zum Beispiel das Kernel-Modul +@code{megaraid_sas} zusätzlich zu den vorgegebenen Modulen brauchen, um auf +Ihr Wurzeldateisystem zugreifen zu können, würden Sie das so schreiben: @example (operating-system @@ -23142,314 +24427,370 @@ default modules to be able to access your root file system, you would write: (initrd-modules (cons "megaraid_sas" %base-initrd-modules))) @end example -@defvr {Scheme Variable} %base-initrd-modules -This is the list of kernel modules included in the initrd by default. +@defvr {Scheme-Variable} %base-initrd-modules +Der Vorgabewert für die Liste der Kernel-Module, die in der initrd enthalten +sein sollen. @end defvr -Furthermore, if you need lower-level customization, the @code{initrd} field -of an @code{operating-system} declaration allows you to specify which initrd -you would like to use. The @code{(gnu system linux-initrd)} module provides -three ways to build an initrd: the high-level @code{base-initrd} procedure -and the low-level @code{raw-initrd} and @code{expression->initrd} -procedures. +Wenn Sie noch systemnähere Anpassungen durchführen wollen, können Sie im +Feld @code{initrd} einer @code{operating-system}-Deklaration angeben, was +für eine Art von initrd Sie benutzen möchten. Das Modul @code{(gnu system +linux-initrd)} enthält drei Arten, eine initrd zu erstellen: die abstrakte +Prozedur @code{base-initrd} und die systemnahen Prozeduren @code{raw-initrd} +und @code{expression->initrd}. -The @code{base-initrd} procedure is intended to cover most common uses. For -example, if you want to add a bunch of kernel modules to be loaded at boot -time, you can define the @code{initrd} field of the operating system -declaration like this: +Mit der Prozedur @code{base-initrd} sollten Sie die häufigsten +Anwendungszwecke abdecken können. Wenn Sie zum Beispiel ein paar +Kernel-Module zur Boot-Zeit laden lassen möchten, können Sie das +@code{initrd}-Feld auf diese Art definieren: @example (initrd (lambda (file-systems . rest) - ;; Create a standard initrd but set up networking - ;; with the parameters QEMU expects by default. + ;; Eine gewöhnliche initrd, aber das Netzwerk wird + ;; mit den Parametern initialisiert, die QEMU + ;; standardmäßig erwartet. (apply base-initrd file-systems #:qemu-networking? #t rest))) @end example -The @code{base-initrd} procedure also handles common use cases that involves -using the system as a QEMU guest, or as a ``live'' system with volatile root -file system. +Die Prozedur @code{base-initrd} kann auch mit üblichen Anwendungszwecken +umgehen, um das System als QEMU-Gastsystem zu betreiben oder als ein +»Live«-System ohne ein dauerhaft gespeichertes Wurzeldateisystem. -The @code{base-initrd} procedure is built from @code{raw-initrd} procedure. -Unlike @code{base-initrd}, @code{raw-initrd} doesn't do anything high-level, -such as trying to guess which kernel modules and packages should be included -to the initrd. An example use of @code{raw-initrd} is when a user has a -custom Linux kernel configuration and default kernel modules included by -@code{base-initrd} are not available. +Die Prozedur @code{base-initrd} baut auf der Prozedur @code{raw-initrd} +auf. Anders als @code{base-initrd} hat @code{raw-initrd} keinerlei +Zusatzfunktionalitäten: Es wird kein Versuch unternommen, für die initrd +notwendige Kernel-Module und Pakete automatisch +hinzuzunehmen. @code{raw-initrd} kann zum Beispiel benutzt werden, wenn ein +Nutzer eine eigene Konfiguration des Linux-Kernels verwendet und die +Standard-Kernel-Module, die mit @code{base-initrd} hinzugenommen würden, +nicht verfügbar sind. -The initial RAM disk produced by @code{base-initrd} or @code{raw-initrd} -honors several options passed on the Linux kernel command line (that is, -arguments passed @i{via} the @code{linux} command of GRUB, or the -@code{-append} option of QEMU), notably: +Die initiale RAM-Disk, wie sie von @code{base-initrd} oder @code{raw-initrd} +erzeugt wird, richtet sich nach verschiedenen Optionen, die auf der +Kernel-Befehlszeile übergeben werden (also über GRUBs @code{linux}-Befehl +oder die @code{-append}-Befehlszeilenoption von QEMU). Erwähnt werden +sollten: @table @code @item --load=@var{boot} -Tell the initial RAM disk to load @var{boot}, a file containing a Scheme -program, once it has mounted the root file system. +Die initiale RAM-Disk eine Datei @var{boot}, in der ein Scheme-Programm +steht, laden lassen, nachdem das Wurzeldateisystem eingebunden wurde. -Guix uses this option to yield control to a boot program that runs the -service activation programs and then spawns the GNU@tie{}Shepherd, the -initialization system. +Guix übergibt mit dieser Befehlszeilenoption die Kontrolle an ein +Boot-Programm, das die Dienstaktivierungsprogramme ausführt und anschließend +den GNU@tie{}Shepherd startet, das Initialisierungssystem (»init«-System) +von Guix System. -@item --root=@var{root} -Mount @var{root} as the root file system. @var{root} can be a device name -like @code{/dev/sda1}, a file system label, or a file system UUID. +@item --root=@var{Wurzel} +Das mit @var{Wurzel} bezeichnete Dateisystem als Wurzeldateisystem +einbinden. @var{Wurzel} kann ein Geratename wie @code{/dev/sda1}, eine +Dateisystembezeichnung (d.h.@: ein Dateisystem-»Label«) oder eine +Dateisystem-UUID sein. @item --system=@var{System} -Have @file{/run/booted-system} and @file{/run/current-system} point to -@var{system}. +@file{/run/booted-system} und @file{/run/current-system} auf das +@var{System} zeigen lassen. -@item modprobe.blacklist=@var{modules}@dots{} -@cindex module, black-listing -@cindex black list, of kernel modules -Instruct the initial RAM disk as well as the @command{modprobe} command -(from the kmod package) to refuse to load @var{modules}. @var{modules} must -be a comma-separated list of module names---e.g., @code{usbkbd,9pnet}. +@item modprobe.blacklist=@var{Module}@dots{} +@cindex Kernel-Module, Sperrliste +@cindex Sperrliste, von Kernel-Modulen +Die initiale RAM-Disk sowie den Befehl @command{modprobe} (aus dem +kmod-Paket) anweisen, das Laden der angegebenen @var{Module} zu +verweigern. Als @var{Module} muss eine kommagetrennte Liste von +Kernel-Modul-Namen angegeben werden — z.B.@: @code{usbkbd,9pnet}. @item --repl -Start a read-eval-print loop (REPL) from the initial RAM disk before it -tries to load kernel modules and to mount the root file system. Our -marketing team calls it @dfn{boot-to-Guile}. The Schemer in you will love -it. @xref{Using Guile Interactively,,, guile, GNU Guile Reference Manual}, -for more information on Guile's REPL. +Eine Lese-Auswerten-Schreiben-Schleife (englisch »Read-Eval-Print Loop«, +kurz REPL) von der initialen RAM-Disk starten, bevor diese die Kernel-Module +zu laden versucht und das Wurzeldateisystem einbindet. Unsere +Marketingabteilung nennt das @dfn{boot-to-Guile}. Der Schemer in Ihnen wird +das lieben. Siehe @ref{Using Guile Interactively,,, guile, GNU Guile +Reference Manual} für mehr Informationen über die REPL von Guile. @end table -Now that you know all the features that initial RAM disks produced by -@code{base-initrd} and @code{raw-initrd} provide, here is how to use it and -customize it further. +Jetzt wo Sie wissen, was für Funktionalitäten eine durch @code{base-initrd} +und @code{raw-initrd} erzeugte initiale RAM-Disk so haben kann, möchten Sie +vielleicht auch wissen, wie man Sie benutzt und weiter anpasst: @cindex initrd @cindex initiale RAM-Disk -@deffn {Scheme Procedure} raw-initrd @var{file-systems} @ - [#:linux-modules '()] [#:mapped-devices '()] @ [#:helper-packages '()] -[#: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 -mounted (@pxref{Zugeordnete Geräte}). @var{helper-packages} is a list of -packages to be copied in the initrd. It may include @code{e2fsck/static} or -other packages needed by the initrd to check the root file system. - -When @var{qemu-networking?} is true, set up networking with the standard -QEMU parameters. When @var{virtio?} is true, load additional modules so -that the initrd can be used as a QEMU guest with para-virtualized I/O -drivers. - -When @var{volatile-root?} is true, the root file system is writable but any -changes to it are lost. +@deffn {Scheme-Prozedur} raw-initrd @var{Dateisysteme} @ + [#:linux-modules '()] [#:mapped-devices '()] @ [#:keyboard-layout #f] @ +[#:helper-packages '()] [#:qemu-networking? #f] [#:volatile-root? #f] +Liefert eine Ableitung, die eine rohe (»raw«) initrd +erstellt. @var{Dateisysteme} bezeichnet eine Liste von durch die initrd +einzubindenden Dateisystemen, unter Umständen zusätzlich zum auf der +Kernel-Befehlszeile mit @code{--root} angegebenen +Wurzeldateisystem. @var{linux-modules} ist eine Liste von Kernel-Modulen, +die zur Boot-Zeit geladen werden sollen. @var{mapped-devices} ist eine Liste +von Gerätezuordnungen, die hergestellt sein müssen, bevor die unter +@var{file-systems} aufgeführten Dateisysteme eingebunden werden (siehe +@ref{Zugeordnete Geräte}). @var{helper-packages} ist eine Liste von Paketen, die +in die initrd kopiert werden. Darunter kann @code{e2fsck/static} oder andere +Pakete aufgeführt werden, mit denen durch die initrd das Wurzeldateisystem +auf Fehler hin geprüft werden kann. + +When true, @var{keyboard-layout} is a @code{<keyboard-layout>} record +denoting the desired console keyboard layout. This is done before +@var{mapped-devices} are set up and before @var{file-systems} are mounted +such that, should the user need to enter a passphrase or use the REPL, this +happens using the intended keyboard layout. + +Wenn @var{qemu-networking?} wahr ist, wird eine Netzwerkverbindung mit den +Standard-QEMU-Parametern hergestellt. Wenn @var{virtio?} wahr ist, werden +zusätzliche Kernel-Module geladen, damit die initrd als ein QEMU-Gast +paravirtualisierte Ein-/Ausgabetreiber benutzen kann. + +Wenn @var{volatile-root?} wahr ist, ist Schreiben auf das Wurzeldateisystem +möglich, aber Änderungen daran bleiben nicht erhalten. @end deffn -@deffn {Scheme Procedure} base-initrd @var{file-systems} @ - [#:mapped-devices '()] [#:qemu-networking? #f] [#:volatile-root? #f]@ -[#: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 +@deffn {Scheme-Prozedur} base-initrd @var{Dateisysteme} @ + [#:mapped-devices '()] [#:keyboard-layout #f] @ [#:qemu-networking? #f] +[#:volatile-root? #f] @ [#:linux-modules '()] Liefert eine allgemein +anwendbare, generische initrd als dateiartiges Objekt mit den Kernel-Modulen +aus @var{linux}. Die @var{file-systems} sind eine Liste von durch die initrd +einzubindenden Dateisystemen, unter Umständen zusätzlich zum +Wurzeldateisystem, das auf der Kernel-Befehlszeile mit @code{--root} +angegeben wurde. Die @var{mapped-devices} sind eine Liste von +Gerätezuordnungen, die hergestellt sein müssen, bevor die @var{file-systems} +eingebunden werden. + +When true, @var{keyboard-layout} is a @code{<keyboard-layout>} record +denoting the desired console keyboard layout. This is done before +@var{mapped-devices} are set up and before @var{file-systems} are mounted +such that, should the user need to enter a passphrase or use the REPL, this +happens using the intended keyboard layout. + +@var{qemu-networking?} und @var{volatile-root?} verhalten sich wie bei @code{raw-initrd}. -The initrd is automatically populated with all the kernel modules necessary -for @var{file-systems} and for the given options. Additional kernel modules -can be listed in @var{linux-modules}. They will be added to the initrd, and -loaded at boot time in the order in which they appear. +In die initrd werden automatisch alle Kernel-Module eingefügt, die für die +unter @var{file-systems} angegebenen Dateisysteme und die angegebenen +Optionen nötig sind. Zusätzliche Kernel-Module können unter den +@var{linux-modules} aufgeführt werden. Diese werden zur initrd hinzugefügt +und zur Boot-Zeit in der Reihenfolge geladen, in der sie angegeben wurden. @end deffn -Needless to say, the initrds we produce and use embed a statically-linked -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 {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. +Selbstverständlich betten die hier erzeugten und benutzten initrds ein +statisch gebundenes Guile ein und das Initialisierungsprogramm ist ein +Guile-Programm. Dadurch haben wir viel Flexibilität. Die Prozedur +@code{expression->initrd} erstellt eine solche initrd für ein an sie +übergebenes Programm. + +@deffn {Scheme-Prozedur} expression->initrd @var{G-Ausdruck} @ + [#:guile %guile-static-stripped] [#:name "guile-initrd"] Liefert eine +Linux-initrd (d.h.@: ein gzip-komprimiertes cpio-Archiv) als dateiartiges +Objekt, in dem @var{guile} enthalten ist, womit der @var{G-Ausdruck} nach +dem Booten ausgewertet wird. Alle vom @var{G-Ausdruck} referenzierten +Ableitungen werden automatisch in die initrd kopiert. @end deffn @node Bootloader-Konfiguration @section Bootloader-Konfiguration @cindex bootloader -@cindex boot loader +@cindex Bootloader -The operating system supports multiple bootloaders. The bootloader is -configured using @code{bootloader-configuration} declaration. All the -fields of this structure are bootloader agnostic except for one field, -@code{bootloader} that indicates the bootloader to be configured and -installed. +Das Betriebssystem unterstützt mehrere Bootloader. Der gewünschte Bootloader +wird mit der @code{bootloader-configuration}-Deklaration konfiguriert. Alle +Felder dieser Struktur sind für alle Bootloader gleich außer dem einen Feld +@code{bootloader}, das angibt, welcher Bootloader konfiguriert und +installiert werden soll. -Some of the bootloaders do not honor every field of -@code{bootloader-configuration}. For instance, the extlinux bootloader does -not support themes and thus ignores the @code{theme} field. +Manche der Bootloader setzen nicht alle Felder einer +@code{bootloader-configuration} um. Zum Beispiel ignoriert der +extlinux-Bootloader das @code{theme}-Feld, weil er keine eigenen Themen +unterstützt. -@deftp {Data Type} bootloader-configuration -The type of a bootloader configuration declaration. +@deftp {Datentyp} bootloader-configuration +Der Typ der Deklaration einer Bootloader-Konfiguration. @table @asis @item @code{bootloader} -@cindex EFI, bootloader -@cindex UEFI, bootloader -@cindex BIOS, bootloader -The bootloader to use, as a @code{bootloader} object. For now -@code{grub-bootloader}, @code{grub-efi-bootloader}, -@code{extlinux-bootloader} and @code{u-boot-bootloader} are supported. +@cindex EFI, Bootloader +@cindex UEFI, Bootloader +@cindex BIOS, Bootloader +Der zu benutzende Bootloader als ein @code{bootloader}-Objekt. Zur Zeit +werden @code{grub-bootloader}, @code{grub-efi-bootloader}, +@code{extlinux-bootloader} und @code{u-boot-bootloader} unterstützt. @vindex grub-efi-bootloader -@code{grub-efi-bootloader} allows to boot on modern systems using the -@dfn{Unified Extensible Firmware Interface} (UEFI). This is what you should -use if the installation image contains a @file{/sys/firmware/efi} directory -when you boot it on your system. +@code{grub-efi-bootloader} macht es möglich, auf modernen Systemen mit +@dfn{Unified Extensible Firmware Interface} (UEFI) zu booten. Sie sollten +das hier benutzen, wenn im Installationsabbild ein Verzeichnis +@file{/sys/firmware/efi} vorhanden ist, wenn Sie davon auf Ihrem System +booten. @vindex grub-bootloader -@code{grub-bootloader} allows you to boot in particular Intel-based machines -in ``legacy'' BIOS mode. +Mit @code{grub-bootloader} können Sie vor allem auf Intel-basierten +Maschinen im alten »Legacy«-BIOS-Modus booten. -@cindex ARM, bootloaders -@cindex AArch64, bootloaders -Available bootloaders are described in @code{(gnu bootloader @dots{})} -modules. In particular, @code{(gnu bootloader u-boot)} contains definitions -of bootloaders for a wide range of ARM and AArch64 systems, using the -@uref{http://www.denx.de/wiki/U-Boot/, U-Boot bootloader}. +@cindex ARM, Bootloader +@cindex AArch64, Bootloader +Verfügbare Bootloader werden in den Modulen @code{(gnu bootloader @dots{})} +beschrieben. Insbesondere enthält @code{(gnu bootloader u-boot)} +Definitionen für eine Vielzahl von ARM- und AArch64-Systemen, die den +@uref{http://www.denx.de/wiki/U-Boot/, U-Boot-Bootloader} benutzen. @item @code{target} -This is a string denoting the target onto which to install the bootloader. - -The interpretation depends on the bootloader in question. For -@code{grub-bootloader}, for example, it should be a device name understood -by the bootloader @command{installer} command, such as @code{/dev/sda} or -@code{(hd0)} (@pxref{Invoking grub-install,,, grub, GNU GRUB Manual}). For -@code{grub-efi-bootloader}, it should be the mount point of the EFI file -system, usually @file{/boot/efi}. - -@item @code{menu-entries} (default: @code{()}) -A possibly empty list of @code{menu-entry} objects (see below), denoting -entries to appear in the bootloader menu, in addition to the current system -entry and the entry pointing to previous system generations. - -@item @code{default-entry} (default: @code{0}) -The index of the default boot menu entry. Index 0 is for the entry of the -current system. - -@item @code{timeout} (default: @code{5}) -The number of seconds to wait for keyboard input before booting. Set to 0 -to boot immediately, and to -1 to wait indefinitely. - -@item @code{theme} (default: @var{#f}) -The bootloader theme object describing the theme to use. If no theme is -provided, some bootloaders might use a default theme, that's true for GRUB. - -@item @code{terminal-outputs} (default: @code{'gfxterm}) -The output terminals used for the bootloader boot menu, as a list of -symbols. GRUB accepts the values: @code{console}, @code{serial}, -@code{serial_@{0-3@}}, @code{gfxterm}, @code{vga_text}, @code{mda_text}, -@code{morse}, and @code{pkmodem}. This field corresponds to the GRUB -variable @code{GRUB_TERMINAL_OUTPUT} (@pxref{Simple configuration,,, -grub,GNU GRUB manual}). - -@item @code{terminal-inputs} (default: @code{'()}) -The input terminals used for the bootloader boot menu, as a list of -symbols. For GRUB, the default is the native platform terminal as -determined at run-time. GRUB accepts the values: @code{console}, -@code{serial}, @code{serial_@{0-3@}}, @code{at_keyboard}, and -@code{usb_keyboard}. This field corresponds to the GRUB variable -@code{GRUB_TERMINAL_INPUT} (@pxref{Simple configuration,,, grub,GNU GRUB +Eine Zeichenkette, die angibt, auf welches Ziel der Bootloader installiert +werden soll. + +Was das bedeutet, hängt vom jeweiligen Bootloader ab. Für +@code{grub-bootloader} sollte hier zum Beispiel ein Gerätename angegeben +werden, der vom @command{installer}-Befehl des Bootloaders verstanden wird, +etwa @code{/dev/sda} oder @code{(hd0)} (siehe @ref{Invoking grub-install,,, +grub, GNU GRUB Manual}). Für @code{grub-efi-bootloader} sollte der +Einhängepunkt des EFI-Dateisystems angegeben werden, in der Regel +@file{/boot/efi}. + +@item @code{menu-entries} (Vorgabe: @code{()}) +Eine möglicherweise leere Liste von @code{menu-entry}-Objekten (siehe +unten), die für Menüeinträge stehen, die im Bootloader-Menü auftauchen +sollen, zusätzlich zum aktuellen Systemeintrag und dem auf vorherige +Systemgenerationen verweisenden Eintrag. + +@item @code{default-entry} (Vorgabe: @code{0}) +Die Position des standardmäßig ausgewählten Bootmenü-Eintrags. An Position 0 +steht der Eintrag der aktuellen Systemgeneration. + +@item @code{timeout} (Vorgabe: @code{5}) +Wieviele Sekunden lang im Menü auf eine Tastatureingabe gewartet wird, bevor +gebootet wird. 0 steht für sofortiges Booten, für -1 wird ohne +Zeitbeschränkung gewartet. + +@cindex Tastaturbelegung, beim Bootloader +@item @code{keyboard-layout} (Vorgabe: @code{#f}) +Wenn dies auf @code{#f} gesetzt ist, verwendet das Menü des Bootloaders +(falls vorhanden) die Vorgabe-Tastaturbelegung, normalerweise +US@tie{}English (»qwerty«). + +Andernfalls muss es ein @code{keyboard-layout}-Objekt sein (siehe +@ref{Tastaturbelegung}). + +@quotation Anmerkung +Dieses Feld wird derzeit von Bootloadern außer @code{grub} und +@code{grub-efi} ignoriert. +@end quotation + +@item @code{theme} (Vorgabe: @var{#f}) +Ein Objekt für das im Bootloader anzuzeigende Thema. Wird kein Thema +angegeben, benutzen manche Bootloader vielleicht ein voreingestelltes Thema; +GRUB zumindest macht es so. + +@item @code{terminal-outputs} (Vorgabe: @code{'gfxterm}) +Die Ausgabeterminals, die für das Boot-Menü des Bootloaders benutzt werden, +als eine Liste von Symbolen. GRUB akzeptiert hier diese Werte: +@code{console}, @code{serial}, @code{serial_@{0–3@}}, @code{gfxterm}, +@code{vga_text}, @code{mda_text}, @code{morse} und @code{pkmodem}. Dieses +Feld entspricht der GRUB-Variablen @code{GRUB_TERMINAL_OUTPUT} (siehe +@ref{Simple configuration,,, grub,GNU GRUB manual}). + +@item @code{terminal-inputs} (Vorgabe: @code{'()}) +Die Eingabeterminals, die für das Boot-Menü des Bootloaders benutzt werden, +als eine Liste von Symbolen. GRUB verwendet hier das zur Laufzeit bestimmte +Standardterminal. GRUB akzeptiert sonst diese Werte: @code{console}, +@code{serial}, @code{serial_@{0-3@}}, @code{at_keyboard} und +@code{usb_keyboard}. Dieses Feld entspricht der GRUB-Variablen +@code{GRUB_TERMINAL_INPUT} (siehe @ref{Simple configuration,,, grub,GNU GRUB manual}). -@item @code{serial-unit} (default: @code{#f}) -The serial unit used by the bootloader, as an integer from 0 to 3. For -GRUB, it is chosen at run-time; currently GRUB chooses 0, which corresponds -to COM1 (@pxref{Serial terminal,,, grub,GNU GRUB manual}). +@item @code{serial-unit} (Vorgabe: @code{#f}) +Die serielle Einheit, die der Bootloader benutzt, als eine ganze Zahl +zwischen 0 und 3, einschließlich. Für GRUB wird sie automatisch zur Laufzeit +ausgewählt; derzeit wählt GRUB die 0 aus, die COM1 entspricht (siehe +@ref{Serial terminal,,, grub,GNU GRUB manual}). -@item @code{serial-speed} (default: @code{#f}) -The speed of the serial interface, as an integer. For GRUB, the default -value is chosen at run-time; currently GRUB chooses 9600@tie{}bps -(@pxref{Serial terminal,,, grub,GNU GRUB manual}). +@item @code{serial-speed} (Vorgabe: @code{#f}) +Die Geschwindigkeit der seriellen Schnittstelle als eine ganze Zahl. GRUB +bestimmt den Wert standardmäßig zur Laufzeit; derzeit wählt GRUB +9600@tie{}bps (siehe @ref{Serial terminal,,, grub,GNU GRUB manual}). @end table @end deftp -@cindex dual boot -@cindex boot menu -Should you want to list additional boot menu entries @i{via} the -@code{menu-entries} field above, you will need to create them with the -@code{menu-entry} form. For example, imagine you want to be able to boot -another distro (hard to imagine!), you can define a menu entry along these -lines: +@cindex Dual-Boot +@cindex Bootmenü +Sollten Sie zusätzliche Bootmenü-Einträge über das oben beschriebene +@code{menu-entries}-Feld hinzufügen möchten, müssen Sie diese mit der +@code{menu-entry}-Form erzeugen. Stellen Sie sich zum Beispiel vor, Sie +wollten noch eine andere Distribution booten können (schwer vorstellbar!), +dann könnten Sie einen Menüeintrag wie den Folgenden definieren: @example (menu-entry - (label "The Other Distro") + (label "Die _andere_ Distribution") (linux "/boot/old/vmlinux-2.6.32") (linux-arguments '("root=/dev/sda2")) (initrd "/boot/old/initrd")) @end example -Details below. +Details finden Sie unten. -@deftp {Data Type} menu-entry -The type of an entry in the bootloader menu. +@deftp {Datentyp} menu-entry +Der Typ eines Eintrags im Bootloadermenü. @table @asis @item @code{label} -The label to show in the menu---e.g., @code{"GNU"}. +Die Beschriftung, die im Menü gezeigt werden soll — z.B.@: @code{"GNU"}. @item @code{linux} -The Linux kernel image to boot, for example: +Das Linux-Kernel-Abbild, was gebootet werden soll, zum Beispiel: @example (file-append linux-libre "/bzImage") @end example -For GRUB, it is also possible to specify a device explicitly in the file -path using GRUB's device naming convention (@pxref{Naming convention,,, -grub, GNU GRUB manual}), for example: +Für GRUB kann hier auch ein Gerät ausdrücklich zum Dateipfad angegeben +werden, unter Verwendung von GRUBs Konventionen zur Gerätebenennung (siehe +@ref{Naming convention,,, grub, GNU GRUB manual}), zum Beispiel: @example "(hd0,msdos1)/boot/vmlinuz" @end example -If the device is specified explicitly as above, then the @code{device} field -is ignored entirely. +Wenn das Gerät auf diese Weise ausdrücklich angegeben wird, wird das +@code{device}-Feld gänzlich ignoriert. -@item @code{linux-arguments} (default: @code{()}) -The list of extra Linux kernel command-line arguments---e.g., +@item @code{linux-arguments} (Vorgabe: @code{()}) +Die Liste zusätzlicher Linux-Kernel-Befehlszeilenargumente — z.B.@: @code{("console=ttyS0")}. @item @code{initrd} -A G-Expression or string denoting the file name of the initial RAM disk to -use (@pxref{G-Ausdrücke}). -@item @code{device} (default: @code{#f}) -The device where the kernel and initrd are to be found---i.e., for GRUB, -@dfn{root} for this menu entry (@pxref{root,,, grub, GNU GRUB manual}). - -This may be a file system label (a string), a file system UUID (a -bytevector, @pxref{Dateisysteme}), or @code{#f}, in which case the -bootloader will search the device containing the file specified by the -@code{linux} field (@pxref{search,,, grub, GNU GRUB manual}). It must -@emph{not} be an OS device name such as @file{/dev/sda1}. +Ein G-Ausdruck oder eine Zeichenkette, die den Dateinamen der initialen +RAM-Disk angibt, die benutzt werden soll (siehe @ref{G-Ausdrücke}). +@item @code{device} (Vorgabe: @code{#f}) +Das Gerät, auf dem Kernel und initrd zu finden sind — d.h.@: bei GRUB die +Wurzel (@dfn{root}) dieses Menüeintrags (siehe @ref{root,,, grub, GNU GRUB +manual}). + +Dies kann eine Dateisystembezeichnung (als Zeichenkette), eine +Dateisystem-UUID (als Bytevektor, siehe @ref{Dateisysteme}) oder @code{#f} +sein, im letzten Fall wird der Bootloader auf dem Gerät suchen, das die vom +@code{linux}-Feld benannte Datei enthält (siehe @ref{search,,, grub, GNU +GRUB manual}). Ein vom Betriebssystem vergebener Gerätename wie +@file{/dev/sda1} ist aber @emph{nicht} erlaubt. @end table @end deftp @c FIXME: Write documentation once it's stable. -Fow now only GRUB has theme support. GRUB themes are created using the +For now only GRUB has theme support. GRUB themes are created using the @code{grub-theme} form, which is not documented yet. @defvr {Scheme Variable} %default-theme -This is the default GRUB theme used by the operating system if no -@code{theme} field is specified in @code{bootloader-configuration} record. +Das vorgegebene GRUB-Thema, das vom Betriebssystem benutzt wird, wenn kein +@code{theme}-Feld im @code{bootloader-configuration}-Verbundsobjekt +angegeben wurde. -It comes with a fancy background image displaying the GNU and Guix logos. +Es wird von einem feschen Hintergrundbild begleitet, das die Logos von GNU +und Guix zeigt. @end defvr @@ -23505,27 +24846,28 @@ relevance: 2 Wie auch bei @command{guix package --search} wird das Ergebnis im @code{recutils}-Format geliefert, so dass es leicht ist, die Ausgabe zu -filtern (@pxref{Top, GNU recutils databases,, recutils, GNU recutils +filtern (siehe @ref{Top, GNU recutils databases,, recutils, GNU recutils manual}). @item reconfigure -Build the operating system described in @var{file}, activate it, and switch -to it@footnote{This action (and the related actions @code{switch-generation} -and @code{roll-back}) are usable only on systems already running Guix -System.}. - -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 (e.g.@: by @code{herd stop X} or +Das in der @var{Datei} beschriebene Betriebssystem erstellen, aktivieren und +zu ihm wechseln@footnote{Diese Aktion (und die dazu ähnlichen Aktionen +@code{switch-generation} und @code{roll-back}) sind nur auf Systemen +nutzbar, auf denen »Guix System« bereits läuft.}. + +Dieser Befehl setzt die in der @var{Datei} festgelegte Konfiguration +vollständig um: Benutzerkonten, Systemdienste, die Liste globaler Pakete, +setuid-Programme und so weiter. Der Befehl startet die in der @var{Datei} +angegebenen Systemdienste, die aktuell nicht laufen; bei aktuell laufenden +Diensten wird sichergestellt, dass sie aktualisiert werden, sobald sie das +nächste Mal angehalten wurden (z.B.@: durch @code{herd stop X} oder @code{herd restart X}). Dieser Befehl erzeugt eine neue Generation, deren Nummer (wie @command{guix system list-generations} sie anzeigt) um eins größer als die der aktuellen Generation ist. Wenn die so nummerierte Generation bereits existiert, wird sie überschrieben. Dieses Verhalten entspricht dem von @command{guix -package} (@pxref{Aufruf von guix package}). +package} (siehe @ref{Aufruf von guix package}). Des Weiteren wird für den Bootloader ein Menüeintrag für die neue Betriebssystemkonfiguration hinzugefügt, außer die Befehlszeilenoption @@ -23538,9 +24880,10 @@ notwendig wird. @c The paragraph below refers to the problem discussed at @c <http://lists.gnu.org/archive/html/guix-devel/2014-08/msg00057.html>. Es ist sehr zu empfehlen, @command{guix pull} einmal auszuführen, bevor Sie -@command{guix system reconfigure} zum ersten Mal aufrufen (@pxref{Aufruf von guix pull}). Wenn Sie das nicht tun, könnten Sie nach dem Abschluss von -@command{reconfigure} eine ältere Version von Guix vorfinden, als Sie vorher -hatten. +@command{guix system reconfigure} zum ersten Mal aufrufen (siehe +@ref{Aufruf von guix pull}). Wenn Sie das nicht tun, könnten Sie nach dem +Abschluss von @command{reconfigure} eine ältere Version von Guix vorfinden, +als Sie vorher hatten. @end quotation @item switch-generation @@ -23600,30 +24943,33 @@ diese Aktion aufgerufen haben, Ihr System neu starten, um die vorhergehende Systemgeneration auch tatsächlich zu benutzen. @item delete-generations -@cindex deleting system generations -@cindex saving space -Delete system generations, making them candidates for garbage collection -(@pxref{Aufruf von guix gc}, for information on how to run the ``garbage -collector''). +@cindex Löschen von Systemgenerationen +@cindex Platz sparen +Systemgenerationen löschen, wodurch diese zu Kandidaten für den Müllsammler +werden (siehe @ref{Aufruf von guix gc} für Informationen, wie Sie den +»Müllsammler« laufen lassen). -This works in the same way as @command{guix package --delete-generations} -(@pxref{Aufruf von guix package, @code{--delete-generations}}). With no -arguments, all system generations but the current one are deleted: +Es funktioniert auf die gleiche Weise wie @command{guix package +--delete-generations} (siehe @ref{Aufruf von guix package, +@code{--delete-generations}}). Wenn keine Argumente angegeben werden, werden +alle Systemgenerationen außer der aktuellen gelöscht: @example guix system delete-generations @end example -You can also select the generations you want to delete. The example below -deletes all the system generations that are more than two month old: +Sie können auch eine Auswahl treffen, welche Generationen Sie löschen +möchten. Das folgende Beispiel hat die Löschung aller Systemgenerationen zur +Folge, die älter als zwei Monate sind: @example guix system delete-generations 2m @end example -Running this command automatically reinstalls the bootloader with an updated -list of menu entries---e.g., the ``old generations'' sub-menu in GRUB no -longer lists the generations that have been deleted. +Wenn Sie diesen Befehl ausführen, wird automatisch der Bootloader mit einer +aktualisierten Liste von Menüeinträgen neu erstellt — z.B.@: werden im +Untermenü für die »alten Generationen« in GRUB die gelöschten Generationen +nicht mehr aufgeführt. @item build Die Ableitung des Betriebssystems erstellen, einschließlich aller @@ -23631,9 +24977,9 @@ Konfigurationsdateien und Programme, die zum Booten und Starten benötigt werden. Diese Aktion installiert jedoch nichts davon. @item init -Populate the given directory with all the files necessary to run the -operating system specified in @var{file}. This is useful for first-time -installations of Guix System. For instance: +In das angegebene Verzeichnis alle Dateien einfügen, um das in der +@var{Datei} angegebene Betriebssystem starten zu können. Dies ist nützlich +bei erstmaligen Installationen von »Guix System«. Zum Beispiel: @example guix system init my-os-config.scm /mnt @@ -23643,7 +24989,7 @@ Hiermit werden alle Store-Objekte nach @file{/mnt} kopiert, die von der in @file{my-os-config.scm} angegebenen Konfiguration vorausgesetzt werden. Dazu gehören Konfigurationsdateien, Pakete und so weiter. Auch andere essenzielle Dateien, die auf dem System vorhanden sein müssen, damit es richtig -funktioniert, werden erzeugt — z.B. die Verzeichnisse @file{/etc}, +funktioniert, werden erzeugt — z.B.@: die Verzeichnisse @file{/etc}, @file{/var} und @file{/run} und die Datei @file{/bin/sh}. Dieser Befehl installiert auch den Bootloader auf dem in @file{my-os-config} @@ -23654,20 +25000,23 @@ wurde übergeben. @cindex virtuelle Maschine @cindex VM @anchor{guix system vm} -Build a virtual machine that contains the operating system declared in -@var{file}, and return a script to run that virtual machine (VM). +Eine virtuelle Maschine (VM) erstellen, die das in der @var{Datei} +deklarierte Betriebssystem enthält, und ein Skript liefern, das diese +virtuelle Maschine startet. @quotation Anmerkung -The @code{vm} action and others below can use KVM support in the Linux-libre -kernel. Specifically, if the machine has hardware virtualization support, -the corresponding KVM kernel module should be loaded, and the -@file{/dev/kvm} device node must exist and be readable and writable by the -user and by the build users of the daemon (@pxref{Einrichten der Erstellungsumgebung}). +Die Aktion @code{vm} sowie solche, die weiter unten genannt werden, können +KVM-Unterstützung im Kernel Linux-libre ausnutzen. Insbesondere sollte, wenn +die Maschine Hardware-Virtualisierung unterstützt, das entsprechende +KVM-Kernelmodul geladen sein und das Gerät @file{/dev/kvm} muss dann +existieren und dem Benutzer und den Erstellungsbenutzern des Daemons müssen +Berechtigungen zum Lesen und Schreiben darauf gegeben werden (siehe +@ref{Einrichten der Erstellungsumgebung}). @end quotation -Arguments given to the script are passed to QEMU as in the example below, -which enables networking and requests 1@tie{}GiB of RAM for the emulated -machine: +An das Skript übergebene Argumente werden an QEMU weitergereicht, wie Sie am +folgenden Beispiel sehen können. Damit würde eine Netzwerkverbindung +aktiviert und 1@tie{}GiB an RAM für die emulierte Maschine angefragt: @example $ /gnu/store/@dots{}-run-vm.sh -m 1024 -net user @@ -23722,9 +25071,10 @@ Sie können den Dateisystemtyp für das Wurzeldateisystem mit der Befehlszeilenoption @option{--file-system-type} festlegen. Vorgegeben ist, @code{ext4} zu verwenden. -When using @code{vm-image}, the returned image is in qcow2 format, which the -QEMU emulator can efficiently use. @xref{Running Guix in a VM}, for more -information on how to run the image in a virtual machine. +Wenn Sie ein @code{vm-image} anfordern, ist das gelieferte Disk-Image im +qcow2-Format, was vom QEMU-Emulator effizient benutzt werden kann. Im +Abschnitt @ref{Guix in einer VM starten} finden Sie mehr Informationen, wie Sie +das Disk-Image in einer virtuellen Maschine laufen lassen. Wenn Sie ein @code{disk-image} anfordern, wird ein rohes Disk-Image hergestellt; es kann zum Beispiel auf einen USB-Stick kopiert @@ -23744,19 +25094,20 @@ haben. Sie können das Abbild dann wie folgt laden und einen Docker-Container damit erzeugen: @example -image_id="$(docker load < guixsd-docker-image.tar.gz)" +image_id="$(docker load < guix-system-docker-image.tar.gz)" docker run -e GUIX_NEW_SYSTEM=/var/guix/profiles/system \\ --entrypoint /var/guix/profiles/system/profile/bin/guile \\ $image_id /var/guix/profiles/system/boot @end example -This command starts a new Docker container from the specified image. It -will boot the Guix system in the usual manner, which means it will start any -services you have defined in the operating system configuration. Depending -on what you run in the Docker container, it may be necessary to give the -container additional permissions. For example, if you intend to build -software using Guix inside of the Docker container, you may need to pass the -@option{--privileged} option to @code{docker run}. +Dieser Befehl startet einen neuen Docker-Container aus dem angegebenen +Abbild. Damit wird das Guix-System auf die normale Weise hochgefahren, +d.h.@: zunächst werden alle Dienste gestartet, die Sie in der Konfiguration +des Betriebssystems angegeben haben. Je nachdem, was Sie im Docker-Container +ausführen, kann es nötig sein, dass Sie ihn mit weitergehenden +Berechtigungen ausstatten. Wenn Sie zum Beispiel Software mit Guix innerhalb +des Docker-Containers erstellen wollen, müssen Sie an @code{docker run} die +Befehlszeilenoption @option{--privileged} übergeben. @item container Liefert ein Skript, um das in der @var{Datei} deklarierte Betriebssystem in @@ -23772,7 +25123,7 @@ Zur Zeit muss das Skript als Administratornutzer »root« ausgeführt werden, damit darin mehr als nur ein einzelner Benutzer und eine Benutzergruppe unterstützt wird. Der Container teilt seinen Store mit dem Wirtssystem. -Wie bei der Aktion @code{vm} (@pxref{guix system vm}) können zusätzlich +Wie bei der Aktion @code{vm} (siehe @ref{guix system vm}) können zusätzlich weitere Dateisysteme zwischen Wirt und Container geteilt werden, indem man die Befehlszeilenoptionen @option{--share} und @option{--expose} verwendet: @@ -23788,21 +25139,22 @@ Diese Befehlszeilenoption funktioniert nur mit Linux-libre 3.19 oder neuer. @end table Unter den @var{Optionen} können beliebige gemeinsame Erstellungsoptionen -aufgeführt werden (siehe @pxref{Gemeinsame Erstellungsoptionen}). Des Weiteren kann -als @var{Optionen} Folgendes angegeben werden: +aufgeführt werden (siehe @ref{Gemeinsame Erstellungsoptionen}). Des Weiteren kann als +@var{Optionen} Folgendes angegeben werden: @table @option @item --expression=@var{Ausdruck} @itemx -e @var{Ausdruck} -Consider the operating-system @var{expr} evaluates to. This is an -alternative to specifying a file which evaluates to an operating system. -This is used to generate the Guix system installer @pxref{Ein Abbild zur Installation erstellen}). +Als Konfiguration des Betriebssystems das »operating-system« betrachten, zu +dem der @var{Ausdruck} ausgewertet wird. Dies ist eine Alternative dazu, die +Konfiguration in einer Datei festzulegen. Hiermit wird auch das +Installationsabbild des Guix-Systems erstellt, siehe @ref{Ein Abbild zur Installation erstellen}). @item --system=@var{System} @itemx -s @var{System} Versuche, für das angegebene @var{System} statt für denselben Systemtyp wie auf dem Wirtssystem zu erstellen. Dies funktioniert wie bei @command{guix -build} (@pxref{Aufruf von guix build}). +build} (siehe @ref{Aufruf von guix build}). @item --derivation @itemx -d @@ -23810,7 +25162,7 @@ Liefert den Namen der Ableitungsdatei für das angegebene Betriebssystem, ohne dazu etwas zu erstellen. @item --file-system-type=@var{Typ} -@itemx -t @var{type} +@itemx -t @var{Typ} Für die Aktion @code{disk-image} wird hiermit ein Dateisystem des angegebenen @var{Typ}s im Abbild bzw. Disk-Image erzeugt. @@ -23827,17 +25179,17 @@ für das Brennen auf CDs und DVDs geeignet ist. Für die Aktionen @code{vm-image} und @code{disk-image} wird hiermit festgelegt, dass ein Abbild der angegebenen @var{Größe} erstellt werden soll. Die @var{Größe} kann als Zahl die Anzahl Bytes angeben oder mit einer -Einheit als Suffix versehen werden (siehe @pxref{Block size, size +Einheit als Suffix versehen werden (siehe @ref{Block size, size specifications,, coreutils, GNU Coreutils}). Wird keine solche Befehlszeilenoption angegeben, berechnet @command{guix system} eine Schätzung der Abbildgröße anhand der Größe des in der @var{Datei} deklarierten Systems. -@item --root=@var{file} -@itemx -r @var{file} -Make @var{file} a symlink to the result, and register it as a garbage -collector root. +@item --root=@var{Datei} +@itemx -r @var{Datei} +Die @var{Datei} zu einer symbolischen Verknüpfung auf das Ergebnis machen +und als Müllsammlerwurzel registrieren. @item --skip-checks Die Konfiguration @emph{nicht} vor der Installation zur Sicherheit auf @@ -23847,14 +25199,14 @@ Das vorgegebene Verhalten von @command{guix system init} und @command{guix system reconfigure} sieht vor, die Konfiguration zur Sicherheit auf Fehler hin zu überprüfen, die ihr Autor übersehen haben könnte: Es wird sichergestellt, dass die in der @code{operating-system}-Deklaration -erwähnten Dateisysteme tatsächlich existieren (@pxref{Dateisysteme}) und +erwähnten Dateisysteme tatsächlich existieren (siehe @ref{Dateisysteme}) und dass alle Linux-Kernelmodule, die beim Booten benötigt werden könnten, auch -im @code{initrd-modules}-Feld aufgeführt sind (@pxref{Initiale RAM-Disk}). Mit dieser Befehlszeilenoption werden diese Tests allesamt +im @code{initrd-modules}-Feld aufgeführt sind (siehe @ref{Initiale RAM-Disk}). Mit dieser Befehlszeilenoption werden diese Tests allesamt übersprungen. @cindex on-error -@cindex on-error strategy -@cindex error strategy +@cindex on-error-Strategie +@cindex Fehlerstrategie @item --on-error=@var{Strategie} Beim Auftreten eines Fehlers beim Einlesen der @var{Datei} die angegebene @var{Strategie} verfolgen. Als @var{Strategie} dient eine der Folgenden: @@ -23874,15 +25226,15 @@ gestartet. Von dort können Sie Befehle ausführen, zum Beispiel können Sie sich mit @code{,bt} eine Rückverfolgung (»Backtrace«) anzeigen lassen und mit @code{,locals} die Werte lokaler Variabler anzeigen lassen. Im Allgemeinen können Sie mit Befehlen den Zustand des Programms -inspizieren. Siehe @xref{Debug Commands,,, guile, GNU Guile Reference -Manual} für eine Liste verfügbarer Befehle zur Fehlersuche. +inspizieren. Siehe @ref{Debug Commands,,, guile, GNU Guile Reference Manual} +für eine Liste verfügbarer Befehle zur Fehlersuche. @end table @end table -Once you have built, configured, re-configured, and re-re-configured your -Guix installation, you may find it useful to list the operating system -generations available on disk---and that you can choose from the bootloader -boot menu: +Sobald Sie Ihre Guix-Installation erstellt, konfiguriert, neu konfiguriert +und nochmals neu konfiguriert haben, finden Sie es vielleicht hilfreich, +sich die auf der Platte verfügbaren — und im Bootmenü des Bootloaders +auswählbaren — Systemgenerationen auflisten zu lassen: @table @code @@ -23890,7 +25242,7 @@ boot menu: Eine für Menschen verständliche Zusammenfassung jeder auf der Platte verfügbaren Generation des Betriebssystems ausgeben. Dies ähnelt der Befehlszeilenoption @option{--list-generations} von @command{guix package} -(@pxref{Aufruf von guix package}). +(siehe @ref{Aufruf von guix package}). Optional kann ein Muster angegeben werden, was dieselbe Syntax wie @command{guix package --list-generations} benutzt, um damit die Liste @@ -23913,7 +25265,7 @@ voneinander abhängen: @item extension-graph Im Dot-/Graphviz-Format auf die Standardausgabe den @dfn{Diensterweiterungsgraphen} des in der @var{Datei} definierten -Betriebssystems ausgeben (@pxref{Dienstkompositionen}, für mehr +Betriebssystems ausgeben (siehe @ref{Dienstkompositionen} für mehr Informationen zu Diensterweiterungen). Der Befehl: @@ -23929,28 +25281,30 @@ angezeigt wird. @item shepherd-graph Im Dot-/Graphviz-Format auf die Standardausgabe den @dfn{Abhängigkeitsgraphen} der Shepherd-Dienste des in der @var{Datei} -definierten Betriebssystems ausgeben. Siehe @xref{Shepherd-Dienste} für -mehr Informationen sowie einen Beispielgraphen. +definierten Betriebssystems ausgeben. Siehe @ref{Shepherd-Dienste} für mehr +Informationen sowie einen Beispielgraphen. @end table -@node Running Guix in a VM -@section Running Guix in a Virtual Machine +@node Guix in einer VM starten +@section Guix in einer virtuellen Maschine betreiben @cindex virtuelle Maschine -To run Guix in a virtual machine (VM), one can either use the pre-built Guix -VM image distributed at -@indicateurl{https://alpha.gnu.org/gnu/guix/guixsd-vm-image-@value{VERSION}.@var{system}.xz} -, or build their own virtual machine image using @command{guix system -vm-image} (@pxref{Aufruf von guix system}). The returned image is in qcow2 -format, which the @uref{http://qemu.org/, QEMU emulator} can efficiently -use. +Um Guix in einer virtuellen Maschine (VM) auszuführen, können Sie entweder +das vorerstellte Guix-VM-Abbild benutzen, das auf +@indicateurl{https://alpha.gnu.org/gnu/guix/guix-system-vm-image-@value{VERSION}.@var{System}.xz} +angeboten wird, oder Ihr eigenes Abbild erstellen, indem Sie @command{guix +system vm-image} benutzen (siehe @ref{Aufruf von guix system}). Das Abbild +wird im qcow2-Format zurückgeliefert, das der @uref{http://qemu.org/, +QEMU-Emulator} effizient benutzen kann. @cindex QEMU -If you built your own image, you must copy it out of the store (@pxref{Der Store}) and give yourself permission to write to the copy before you can use -it. When invoking QEMU, you must choose a system emulator that is suitable -for your hardware platform. Here is a minimal QEMU invocation that will -boot the result of @command{guix system vm-image} on x86_64 hardware: +Wenn Sie Ihr eigenes Abbild erstellen haben lassen, müssen Sie es aus dem +Store herauskopieren (siehe @ref{Der Store}) und sich darauf +Schreibberechtigung geben, um die Kopie benutzen zu können. Wenn Sie QEMU +aufrufen, müssen Sie einen Systememulator angeben, der für Ihre +Hardware-Plattform passend ist. Hier ist ein minimaler QEMU-Aufruf, der das +Ergebnis von @command{guix system vm-image} auf x86_64-Hardware bootet: @example $ qemu-system-x86_64 \ @@ -23958,84 +25312,99 @@ $ qemu-system-x86_64 \ -enable-kvm -m 256 /tmp/qemu-image @end example -Here is what each of these options means: +Die Bedeutung jeder dieser Befehlszeilenoptionen ist folgende: @table @code @item qemu-system-x86_64 -This specifies the hardware platform to emulate. This should match the -host. +Hiermit wird die zu emulierende Hardware-Plattform angegeben. Sie sollte zum +Wirtsrechner passen. @item -net user -Enable the unprivileged user-mode network stack. The guest OS can access -the host but not vice versa. This is the simplest way to get the guest OS -online. +Den als Nutzer ausgeführten Netzwerkstapel (»User-Mode Network Stack«) ohne +besondere Berechtigungen benutzen. Mit dieser Art von Netzwerkanbindung kann +das Gast-Betriebssystem eine Verbindung zum Wirt aufbauen, aber nicht +andersherum. Es ist die einfachste Art, das Gast-Betriebssystem mit dem +Internet zu verbinden. @item -net nic,model=virtio -You must create a network interface of a given model. If you do not create -a NIC, the boot will fail. Assuming your hardware platform is x86_64, you -can get a list of available NIC models by running -@command{qemu-system-x86_64 -net nic,model=help}. +Sie müssen ein Modell einer zu emulierenden Netzwerkschnittstelle +angeben. Wenn Sie keine Netzwerkkarte (englisch »Network Interface Card«, +kurz NIC) erzeugen lassen, wird das Booten fehlschlagen. Falls Ihre +Hardware-Plattform x86_64 ist, können Sie eine Liste verfügbarer NIC-Modelle +einsehen, indem Sie @command{qemu-system-x86_64 -net nic,model=help} +ausführen. @item -enable-kvm -If your system has hardware virtualization extensions, enabling the virtual -machine support (KVM) of the Linux kernel will make things run faster. +Wenn Ihr System über Erweiterungen zur Hardware-Virtualisierung verfügt, +beschleunigt es die Dinge, wenn Sie die Virtualisierungsunterstützung »KVM« +des Linux-Kernels benutzen lassen. @item -m 256 -RAM available to the guest OS, in mebibytes. Defaults to 128@tie{}MiB, -which may be insufficient for some operations. +Die Menge an Arbeitsspeicher (RAM), die dem Gastbetriebssystem zur Verfügung +stehen soll, in Mebibytes. Vorgegeben wären 128@tie{}MiB, was für einige +Operationen zu wenig sein könnte. @item /tmp/qemu-image -The file name of the qcow2 image. +Der Dateiname des qcow2-Abbilds. @end table -The default @command{run-vm.sh} script that is returned by an invocation of -@command{guix system vm} does not add a @command{-net user} flag by -default. To get network access from within the vm add the -@code{(dhcp-client-service)} to your system definition and start the VM -using @command{`guix system vm config.scm` -net user}. An important caveat -of using @command{-net user} for networking is that @command{ping} will not -work, because it uses the ICMP protocol. You'll have to use a different -command to check for network connectivity, for example @command{guix -download}. +Das voreingestellte @command{run-vm.sh}-Skript, das durch einen Aufruf von +@command{guix system vm} erzeugt wird, fügt keine Befehlszeilenoption +@command{-net user} an. Um innerhalb der virtuellen Maschine Netzwerkzugang +zu haben, fügen Sie den @code{(dhcp-client-service)} zu Ihrer +Systemdefinition hinzu und starten Sie die VM mit @command{`guix system vm +config.scm` -net user}. Erwähnt werden sollte der Nachteil, dass bei +Verwendung von @command{-net user} zur Netzanbindung der +@command{ping}-Befehl @emph{nicht} funktionieren wird, weil dieser das +ICMP-Protokoll braucht. Sie werden also einen anderen Befehl benutzen +müssen, um auszuprobieren, ob Sie mit dem Netzwerk verbunden sind, zum +Beispiel @command{guix download}. -@subsection Connecting Through SSH +@subsection Verbinden über SSH @cindex SSH @cindex SSH server -To enable SSH inside a VM you need to add a SSH server like -@code{(dropbear-service)} or @code{(lsh-service)} to your VM. The -@code{(lsh-service}) doesn't currently boot unsupervised. It requires you -to type some characters to initialize the randomness generator. In addition -you need to forward the SSH port, 22 by default, to the host. You can do -this with +Um SSH in der virtuellen Maschine zu aktivieren, müssen Sie einen SSH-Server +wie den @code{(dropbear-service)} oder den @code{(lsh-service)} zu ihr +hinzufügen. Der @code{(lsh-service}) kann derzeit nicht ohne +Benutzerinteraktion starten, weil der Benutzer erst ein paar Zeichen +eintippen muss, um den Zufallsgenerator zu initialisieren. Des Weiteren +müssen Sie den SSH-Port für das Wirtssystem freigeben (standardmäßig hat er +die Portnummer 22). Das geht zum Beispiel so: @example `guix system vm config.scm` -net user,hostfwd=tcp::10022-:22 @end example -To connect to the VM you can run +Um sich mit der virtuellen Maschine zu verbinden, benutzen Sie diesen +Befehl: @example ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no -p 10022 @end example -The @command{-p} tells @command{ssh} the port you want to connect to. -@command{-o UserKnownHostsFile=/dev/null} prevents @command{ssh} from -complaining every time you modify your @command{config.scm} file and the -@command{-o StrictHostKeyChecking=no} prevents you from having to allow a -connection to an unknown host every time you connect. +Mit @command{-p} wird @command{ssh} der Port mitgeteilt, über den eine +Verbindung hergestellt werden soll. @command{-o +UserKnownHostsFile=/dev/null} verhindert, dass @command{ssh} sich bei jeder +Modifikation Ihrer @command{config.scm}-Datei beschwert, ein anderer +bekannter Rechner sei erwartet worden, und @command{-o +StrictHostKeyChecking=no} verhindert, dass Sie die Verbindung zu unbekannten +Rechnern jedes Mal bestätigen müssen, wenn Sie sich verbinden. -@subsection Using @command{virt-viewer} with Spice +@subsection @command{virt-viewer} mit Spice benutzen -As an alternative to the default @command{qemu} graphical client you can use -the @command{remote-viewer} from the @command{virt-viewer} package. To -connect pass the @command{-spice port=5930,disable-ticketing} flag to -@command{qemu}. See previous section for further information on how to do -this. +Eine Alternative zur grafischen Schnittstelle des standardmäßigen +@command{qemu} ist, sich mit Hilfe des @command{remote-viewer} aus dem Paket +@command{virt-viewer} zu verbinden. Um eine Verbindung herzustellen, +übergeben Sie die Befehlszeilenoption @command{-spice +port=5930,disable-ticketing} an @command{qemu}. Siehe den vorherigen +Abschnitt für weitere Informationen, wie Sie das übergeben. -Spice also allows you to do some nice stuff like share your clipboard with -your VM. To enable that you'll also have to pass the following flags to -@command{qemu}: +Spice macht es auch möglich, ein paar nette Hilfestellungen zu benutzen, zum +Beispiel können Sie Ihren Zwischenspeicher zum Kopieren und Einfügen (Ihr +»Clipboard«) mit Ihrer virtuellen Maschine teilen. Um das zu aktivieren, +werden Sie die folgenden Befehlszeilennoptionen zusätzlich an @command{qemu} +übergeben müssen: @example -device virtio-serial-pci,id=virtio-serial0,max_ports=16,bus=pci.0,addr=0x5 @@ -24044,14 +25413,15 @@ your VM. To enable that you'll also have to pass the following flags to name=com.redhat.spice.0 @end example -You'll also need to add the @pxref{Verschiedene Dienste, Spice service}. +Sie werden auch den @ref{Verschiedene Dienste, Spice-Dienst} hinzufügen +müssen. @node Dienste definieren @section Dienste definieren -The previous sections show the available services and how one can combine -them in an @code{operating-system} declaration. But how do we define them -in the first place? And what is a service anyway? +Der vorhergehende Abschnitt präsentiert die verfügbaren Dienste und wie man +sie in einer @code{operating-system}-Deklaration kombiniert. Aber wie +definieren wir solche Dienste eigentlich? Und was ist überhaupt ein Dienst? @menu * Dienstkompositionen:: Wie Dienste zusammengestellt werden. @@ -24064,62 +25434,67 @@ in the first place? And what is a service anyway? @subsection Dienstkompositionen @cindex services -@cindex daemons -Here we define a @dfn{service} as, broadly, something that extends the -functionality of the operating system. Often a service is a process---a -@dfn{daemon}---started when the system boots: a secure shell server, a Web -server, the Guix build daemon, etc. Sometimes a service is a daemon whose -execution can be triggered by another daemon---e.g., an FTP server started -by @command{inetd} or a D-Bus service activated by @command{dbus-daemon}. -Occasionally, a service does not map to a daemon. For instance, the -``account'' service collects user accounts and makes sure they exist when -the system runs; the ``udev'' service collects device management rules and -makes them available to the eudev daemon; the @file{/etc} service populates -the @file{/etc} directory of the system. - -@cindex service extensions -Guix system services are connected by @dfn{extensions}. For instance, the -secure shell service @emph{extends} the Shepherd---the initialization -system, running as PID@tie{}1---by giving it the command lines to start and -stop the secure shell daemon (@pxref{Netzwerkdienste, -@code{openssh-service-type}}); the UPower service extends the D-Bus service -by passing it its @file{.service} specification, and extends the udev -service by passing it device management rules (@pxref{Desktop-Dienste, -@code{upower-service}}); the Guix daemon service extends the Shepherd by -passing it the command lines to start and stop the daemon, and extends the -account service by passing it a list of required build user accounts -(@pxref{Basisdienste}). - -All in all, services and their ``extends'' relations form a directed acyclic -graph (DAG). If we represent services as boxes and extensions as arrows, a -typical system might provide something like this: - -@image{images/service-graph,,5in,Typical service extension graph.} - -@cindex system service -At the bottom, we see the @dfn{system service}, which produces the directory -containing everything to run and boot the system, as returned by the -@command{guix system build} command. @xref{Service-Referenz}, to learn -about the other service types shown here. @xref{system-extension-graph, the -@command{guix system extension-graph} command}, for information on how to -generate this representation for a particular operating system definition. - -@cindex service types -Technically, developers can define @dfn{service types} to express these -relations. There can be any number of services of a given type on the -system---for instance, a system running two instances of the GNU secure -shell server (lsh) has two instances of @code{lsh-service-type}, with -different parameters. - -The following section describes the programming interface for service types -and services. +@cindex Daemons +Wir definieren hier einen @dfn{Dienst} (englisch »Service«) als, grob +gesagt, etwas, das die Funktionalität des Betriebssystems erweitert. Oft ist +ein Dienst ein Prozess — ein sogenannter @dfn{Daemon} —, der beim Hochfahren +des Systems gestartet wird: ein Secure-Shell-Server, ein Web-Server, der +Guix-Erstellungsdaemon usw. Manchmal ist ein Dienst ein Daemon, dessen +Ausführung von einem anderen Daemon ausgelöst wird — zum Beispiel wird ein +FTP-Server von @command{inetd} gestartet oder ein D-Bus-Dienst durch +@command{dbus-daemon} aktiviert. Manchmal entspricht ein Dienst aber auch +keinem Daemon. Zum Beispiel nimmt sich der Benutzerkonten-Dienst (»account +service«) die Benutzerkonten und sorgt dafür, dass sie existieren, wenn das +System läuft. Der »udev«-Dienst sammelt die Regeln zur Geräteverwaltung an +und macht diese für den eudev-Daemon verfügbar. Der @file{/etc}-Dienst fügt +Dateien in das Verzeichnis @file{/etc} des Systems ein. + +@cindex Diensterweiterungen +Dienste des Guix-Systems werden durch @dfn{Erweiterungen} (»Extensions«) +miteinander verbunden. Zum Beispiel @emph{erweitert} der Secure-Shell-Dienst +den Shepherd — Shepherd ist das Initialisierungssystem (auch »init«-System +genannt), was als PID@tie{}1 läuft —, indem es ihm die Befehlszeilen zum +Starten und Stoppen des Secure-Shell-Daemons übergibt (siehe @ref{Netzwerkdienste, @code{openssh-service-type}}). Der UPower-Dienst erweitert den +D-Bus-Dienst, indem es ihm seine @file{.service}-Spezifikation übergibt, und +erweitert den udev-Dienst, indem es ihm Geräteverwaltungsregeln übergibt +(siehe @ref{Desktop-Dienste, @code{upower-service}}). Der +Guix-Daemon-Dienst erweitert den Shepherd, indem er ihm die Befehlszeilen +zum Starten und Stoppen des Daemons übergibt, und er erweitert den +Benutzerkontendienst (»account service«), indem er ihm eine Liste der +benötigten Erstellungsbenutzerkonten übergibt (siehe @ref{Basisdienste}). + +Alles in allem bilden Dienste und ihre »Erweitert«-Relationen einen +gerichteten azyklischen Graphen (englisch »Directed Acyclic Graph«, kurz +DAG). Wenn wir Dienste als Kästen und Erweiterungen als Pfeile darstellen, +könnte ein typisches System so etwas hier anbieten: + +@image{images/service-graph,,5in,Typischer Diensterweiterungsgraph} + +@cindex Systemdienst +Ganz unten sehen wir den @dfn{Systemdienst}, der das Verzeichnis erzeugt, in +dem alles zum Ausführen und Hochfahren enthalten ist, so wie es der Befehl +@command{guix system build} liefert. Siehe @ref{Service-Referenz}, um mehr +über die anderen hier gezeigten Diensttypen zu erfahren. Beim +@ref{system-extension-graph, Befehl @command{guix system extension-graph}} +finden Sie Informationen darüber, wie Sie diese Darstellung für eine +Betriebssystemdefinition Ihrer Wahl generieren lassen. + +@cindex Diensttypen +Technisch funktioniert es so, dass Entwickler @dfn{Diensttypen} definieren +können, um diese Beziehungen auszudrücken. Im System kann es beliebig viele +Dienste zu jedem Typ geben — zum Beispiel können auf einem System zwei +Instanzen des GNU-Secure-Shell-Servers (lsh) laufen, mit zwei Instanzen des +Diensttyps @code{lsh-service-type} mit je unterschiedlichen Parametern. + +Der folgende Abschnitt beschreibt die Programmierschnittstelle für +Diensttypen und Dienste. @node Diensttypen und Dienste @subsection Diensttypen und Dienste -A @dfn{service type} is a node in the DAG described above. Let us start -with a simple example, the service type for the Guix build daemon -(@pxref{Aufruf des guix-daemon}): +Ein @dfn{Diensttyp} (»service type«) ist ein Knoten im oben beschriebenen +ungerichteten azyklischen Graphen (DAG). Fangen wir an mit einem einfachen +Beispiel: dem Diensttyp für den Guix-Erstellungsdaemon (siehe @ref{Aufruf des guix-daemon}): @example (define guix-service-type @@ -24133,44 +25508,47 @@ with a simple example, the service type for the Guix build daemon @end example @noindent -It defines three things: +Damit sind drei Dinge definiert: @enumerate @item -A name, whose sole purpose is to make inspection and debugging easier. +Ein Name, der nur dazu da ist, dass man leichter die Abläufe verstehen und +Fehler suchen kann. @item -A list of @dfn{service extensions}, where each extension designates the -target service type and a procedure that, given the parameters of the -service, returns a list of objects to extend the service of that type. +Eine Liste von @dfn{Diensterweiterungen} (»service extensions«). Jede +Erweiterung gibt den Ziel-Diensttyp an sowie eine Prozedur, die für gegebene +Parameter für den Dienst eine Liste von Objekten zurückliefert, um den +Dienst dieses Typs zu erweitern. -Every service type has at least one service extension. The only exception -is the @dfn{boot service type}, which is the ultimate service. +Jeder Diensttyp benutzt mindestens eine Diensterweiterung. Die einzige +Ausnahme ist der @dfn{boot service type}, der die Grundlage aller Dienste +ist. @item -Optionally, a default value for instances of this type. +Optional kann ein Vorgabewert für Instanzen dieses Typs angegeben werden. @end enumerate -In this example, @var{guix-service-type} extends three services: +In this example, @code{guix-service-type} extends three services: -@table @var +@table @code @item shepherd-root-service-type -The @var{guix-shepherd-service} procedure defines how the Shepherd service +The @code{guix-shepherd-service} procedure defines how the Shepherd service is extended. Namely, it returns a @code{<shepherd-service>} object that defines how @command{guix-daemon} is started and stopped (@pxref{Shepherd-Dienste}). @item account-service-type -This extension for this service is computed by @var{guix-accounts}, which +This extension for this service is computed by @code{guix-accounts}, which returns a list of @code{user-group} and @code{user-account} objects representing the build user accounts (@pxref{Aufruf des guix-daemon}). @item activation-service-type -Here @var{guix-activation} is a procedure that returns a gexp, which is a +Here @code{guix-activation} is a procedure that returns a gexp, which is a code snippet to run at ``activation time''---e.g., when the service is booted. @end table -A service of this type is instantiated like this: +Ein Dienst dieses Typs wird dann so instanziiert: @example (service guix-service-type @@ -24179,22 +25557,22 @@ A service of this type is instantiated like this: (use-substitutes? #f))) @end example -The second argument to the @code{service} form is a value representing the -parameters of this specific service instance. -@xref{guix-configuration-type, @code{guix-configuration}}, for information -about the @code{guix-configuration} data type. When the value is omitted, -the default value specified by @code{guix-service-type} is used: +Das zweite Argument an die @code{service}-Form ist ein Wert, der die +Parameter dieser bestimmten Dienstinstanz repräsentiert. Siehe +@ref{guix-configuration-type, @code{guix-configuration}} für Informationen +über den @code{guix-configuration}-Datentyp. Wird kein Wert angegeben, wird +die Vorgabe verwendet, die im @code{guix-service-type} angegeben wurde: @example (service guix-service-type) @end example -@var{guix-service-type} is quite simple because it extends other services +@code{guix-service-type} is quite simple because it extends other services but is not extensible itself. @c @subsubsubsection Extensible Service Types -The service type for an @emph{extensible} service looks like this: +Der Diensttyp eines @emph{erweiterbaren} Dienstes sieht ungefähr so aus: @example (define udev-service-type @@ -24203,107 +25581,114 @@ The service type for an @emph{extensible} service looks like this: (list (service-extension shepherd-root-service-type udev-shepherd-service))) - (compose concatenate) ;concatenate the list of rules - (extend (lambda (config rules) + (compose concatenate) ;Liste der Regeln zusammenfügen + (extend (lambda (config rules) ;Konfiguration und Regeln (match config (($ <udev-configuration> udev initial-rules) (udev-configuration - (udev udev) ;the udev package to use + (udev udev) ;zu benutzendes udev-Paket (rules (append initial-rules rules))))))))) @end example This is the service type for the @uref{https://wiki.gentoo.org/wiki/Project:Eudev, eudev device management daemon}. Compared to the previous example, in addition to an extension of -@var{shepherd-root-service-type}, we see two new fields: +@code{shepherd-root-service-type}, we see two new fields: @table @code @item compose -This is the procedure to @dfn{compose} the list of extensions to services of -this type. +Die Prozedur, um die Liste der jeweiligen Erweiterungen für den Dienst +dieses Typs zu einem Objekt zusammenzustellen (zu »komponieren«, englisch +@dfn{compose}). -Services can extend the udev service by passing it lists of rules; we -compose those extensions simply by concatenating them. +Dienste können den udev-Dienst erweitern, indem sie eine Liste von Regeln +(»Rules«) an ihn übergeben; wir komponieren mehrere solche Erweiterungen, +indem wir die Listen einfach zusammenfügen. @item extend -This procedure defines how the value of the service is @dfn{extended} with -the composition of the extensions. +Diese Prozedur definiert, wie der Wert des Dienstes um die Komposition mit +Erweiterungen erweitert (»extended«) werden kann. -Udev extensions are composed into a list of rules, but the udev service -value is itself a @code{<udev-configuration>} record. So here, we extend -that record by appending the list of rules it contains to the list of -contributed rules. +Udev-Erweiterungen werden zu einer einzigen Liste von Regeln komponiert, +aber der Wert des udev-Dienstes ist ein +@code{<udev-configuration>}-Verbundsobjekt. Deshalb erweitern wir diesen +Verbund, indem wir die Liste der von Erweiterungen beigetragenen Regeln an +die im Verbund gespeicherte Liste der Regeln anhängen. @item description -This is a string giving an overview of the service type. The string can -contain Texinfo markup (@pxref{Overview,,, texinfo, GNU Texinfo}). The -@command{guix system search} command searches these strings and displays -them (@pxref{Aufruf von guix system}). +Diese Zeichenkette gibt einen Überblick über den Systemtyp. Die Zeichenkette +darf mit Texinfo ausgezeichnet werden (siehe @ref{Overview,,, texinfo, GNU +Texinfo}). Der Befehl @command{guix system search} durchsucht diese +Zeichenketten und zeigt sie an (siehe @ref{Aufruf von guix system}). @end table There can be only one instance of an extensible service type such as -@var{udev-service-type}. If there were more, the @code{service-extension} +@code{udev-service-type}. If there were more, the @code{service-extension} specifications would be ambiguous. -Still here? The next section provides a reference of the programming -interface for services. +Sind Sie noch da? Der nächste Abschnitt gibt Ihnen eine Referenz der +Programmierschnittstelle für Dienste. @node Service-Referenz @subsection Service-Referenz -We have seen an overview of service types (@pxref{Diensttypen und Dienste}). This section provides a reference on how to manipulate services -and service types. This interface is provided by the @code{(gnu services)} -module. +Wir haben bereits einen Überblick über Diensttypen gesehen (siehe +@ref{Diensttypen und Dienste}). Dieser Abschnitt hier stellt eine +Referenz dar, wie Dienste und Diensttypen manipuliert werden können. Diese +Schnittstelle wird vom Modul @code{(gnu services)} angeboten. -@deffn {Scheme Procedure} service @var{type} [@var{value}] -Return a new service of @var{type}, a @code{<service-type>} object (see -below.) @var{value} can be any object; it represents the parameters of this -particular service instance. +@deffn {Scheme-Prozedur} service @var{Typ} [@var{Wert}] +Liefert einen neuen Dienst des angegebenen @var{Typ}s. Der @var{Typ} muss +als @code{<service-type>}-Objekt angegeben werden (siehe unten). Als +@var{Wert} kann ein beliebiges Objekt angegeben werden, das die Parameter +dieser bestimmten Instanz dieses Dienstes repräsentiert. -When @var{value} is omitted, the default value specified by @var{type} is -used; if @var{type} does not specify a default value, an error is raised. +Wenn kein @var{Wert} angegeben wird, wird der vom @var{Typ} festgelegte +Vorgabewert verwendet; verfügt der @var{Typ} über keinen Vorgabewert, dann +wird ein Fehler gemeldet. -For instance, this: +Zum Beispiel bewirken Sie hiermit: @example (service openssh-service-type) @end example @noindent -is equivalent to this: +dasselbe wie mit: @example (service openssh-service-type (openssh-configuration)) @end example -In both cases the result is an instance of @code{openssh-service-type} with -the default configuration. +In beiden Fällen ist das Ergebnis eine Instanz von +@code{openssh-service-type} mit der vorgegebenen Konfiguration. @end deffn -@deffn {Scheme Procedure} service? @var{obj} -Return true if @var{obj} is a service. +@deffn {Scheme-Prozedur} service? @var{Objekt} +Liefert wahr zurück, wenn das @var{Objekt} ein Dienst ist. @end deffn -@deffn {Scheme Procedure} service-kind @var{service} -Return the type of @var{service}---i.e., a @code{<service-type>} object. +@deffn {Scheme-Prozedur} service-kind @var{Dienst} +Liefert den Typ des @var{Dienst}es — d.h.@: ein +@code{<service-type>}-Objekt. @end deffn -@deffn {Scheme Procedure} service-value @var{service} -Return the value associated with @var{service}. It represents its -parameters. +@deffn {Scheme-Prozedur} service-value @var{Dienst} +Liefert den Wert, der mit dem @var{Dienst} assoziiert wurde. Er +repräsentiert die Parameter des @var{Dienst}es. @end deffn -Here is an example of how a service is created and manipulated: +Hier ist ein Beispiel, wie ein Dienst erzeugt und manipuliert werden kann: @example (define s (service nginx-service-type (nginx-configuration (nginx nginx) - (log-directory log-directory) - (run-directory run-directory) - (file config-file)))) + (log-directory log-Verzeichnis) + (run-directory run-Verzeichnis) + (file config-Datei)))) (service? s) @result{} #t @@ -24313,7 +25698,7 @@ Here is an example of how a service is created and manipulated: @end example The @code{modify-services} form provides a handy way to change the -parameters of some of the services of a list such as @var{%base-services} +parameters of some of the services of a list such as @code{%base-services} (@pxref{Basisdienste, @code{%base-services}}). It evaluates to a list of services. Of course, you could always use standard list combinators such as @code{map} and @code{fold} to do that (@pxref{SRFI-1, List Library,, guile, @@ -24332,7 +25717,7 @@ angegebenen Klauseln an. Jede Klausel hat die Form: wobei @var{Typ} einen Diensttyp (»service type«) bezeichnet — wie zum Beispiel @code{guix-service-type} — und @var{Variable} ein Bezeichner ist, -der im @var{Rumpf} an die Dienst-Parameter — z.B. eine +der im @var{Rumpf} an die Dienst-Parameter — z.B.@: eine @code{guix-configuration}-Instanz — des ursprünglichen Dienstes mit diesem @var{Typ} gebunden wird. @@ -24345,72 +25730,79 @@ Dienstparametern ausgewertet wird, indem Sie die Funktionalität namens @code{inherit} benutzen, die von @code{define-record-type*} bereitgestellt wird. -Siehe @xref{Das Konfigurationssystem nutzen} für ein Anwendungsbeispiel. +Siehe @ref{Das Konfigurationssystem nutzen} für ein Anwendungsbeispiel. @end deffn -Next comes the programming interface for service types. This is something -you want to know when writing new service definitions, but not necessarily -when simply looking for ways to customize your @code{operating-system} -declaration. +Als Nächstes ist die Programmierschnittstelle für Diensttypen an der +Reihe. Sie ist etwas, was Sie kennen werden wollen, wenn Sie neue +Dienstdefinitionen schreiben, aber wenn Sie nur Ihre +@code{operating-system}-Deklaration anpassen möchten, brauchen Sie diese +Schnittstelle wahrscheinlich nicht. -@deftp {Data Type} service-type -@cindex service type -This is the representation of a @dfn{service type} (@pxref{Diensttypen und Dienste}). +@deftp {Datentyp} service-type +@cindex Diensttyp +Die Repräsentation eines @dfn{Diensttypen} (siehe @ref{Diensttypen und Dienste}). @table @asis @item @code{name} -This is a symbol, used only to simplify inspection and debugging. +Dieses Symbol wird nur verwendet, um die Abläufe im System anzuzeigen und +die Fehlersuche zu erleichtern. @item @code{extensions} -A non-empty list of @code{<service-extension>} objects (see below). - -@item @code{compose} (default: @code{#f}) -If this is @code{#f}, then the service type denotes services that cannot be -extended---i.e., services that do not receive ``values'' from other -services. - -Otherwise, it must be a one-argument procedure. The procedure is called by -@code{fold-services} and is passed a list of values collected from -extensions. It may return any single value. - -@item @code{extend} (default: @code{#f}) -If this is @code{#f}, services of this type cannot be extended. - -Otherwise, it must be a two-argument procedure: @code{fold-services} calls -it, passing it the initial value of the service as the first argument and -the result of applying @code{compose} to the extension values as the second -argument. It must return a value that is a valid parameter value for the -service instance. +Eine nicht-leere Liste von @code{<service-extension>}-Objekten (siehe +unten). + +@item @code{compose} (Vorgabe: @code{#f}) +Wenn es auf @code{#f} gesetzt ist, dann definiert der Diensttyp Dienste, die +nicht erweitert werden können — d.h.@: diese Dienste erhalten ihren Wert +nicht von anderen Diensten. + +Andernfalls muss es eine Prozedur sein, die ein einziges Argument +entgegennimmt. Die Prozedur wird durch @code{fold-services} aufgerufen und +ihr wird die Liste von aus den Erweiterungen angesammelten Werten +übergeben. Sie gibt daraufhin einen einzelnen Wert zurück. + +@item @code{extend} (Vorgabe: @code{#f}) +Ist dies auf @code{#f} gesetzt, dann können Dienste dieses Typs nicht +erweitert werden. + +Andernfalls muss es eine zwei Argumente nehmende Prozedur sein, die von +@code{fold-services} mit dem anfänglichen Wert für den Dienst als erstes +Argument und dem durch Anwendung von @code{compose} gelieferten Wert als +zweites Argument aufgerufen wird. Als Ergebnis muss ein Wert geliefert +werden, der einen zulässigen neuen Parameterwert für die Dienstinstanz +darstellt. @end table -@xref{Diensttypen und Dienste}, for examples. +Siehe den Abschnitt @ref{Diensttypen und Dienste} für Beispiele. @end deftp -@deffn {Scheme Procedure} service-extension @var{target-type} @ - @var{compute} Return a new extension for services of type -@var{target-type}. @var{compute} must be a one-argument procedure: -@code{fold-services} calls it, passing it the value associated with the -service that provides the extension; it must return a valid value for the -target service. +@deffn {Scheme-Prozedur} service-extension @var{Zieltyp} @ + @var{Berechner} Liefert eine neue Erweiterung für den Dienst mit dem +@var{Zieltyp}. Als @var{Berechner} muss eine Prozedur angegeben werden, die +ein einzelnes Argument nimmt: @code{fold-services} ruft sie auf und übergibt +an sie den Wert des erweiternden Dienstes, sie muss dafür einen zulässigen +Wert für den @var{Zieltyp} liefern. @end deffn -@deffn {Scheme Procedure} service-extension? @var{obj} -Return true if @var{obj} is a service extension. +@deffn {Scheme-Prozedur} service-extension? @var{Objekt} +Liefert wahr zurück, wenn das @var{Objekt} eine Diensterweiterung ist. @end deffn -Occasionally, you might want to simply extend an existing service. This -involves creating a new service type and specifying the extension of -interest, which can be verbose; the @code{simple-service} procedure provides -a shorthand for this. +Manchmal wollen Sie vielleicht einfach nur einen bestehenden Dienst +erweitern. Dazu müssten Sie einen neuen Diensttyp definieren und die +Erweiterung definieren, für die Sie sich interessieren, was ganz schön +wortreich werden kann. Mit der Prozedur @code{simple-service} können Sie es +kürzer fassen. -@deffn {Scheme Procedure} simple-service @var{name} @var{target} @var{value} -Return a service that extends @var{target} with @var{value}. This works by -creating a singleton service type @var{name}, of which the returned service -is an instance. +@deffn {Scheme-Prozedur} simple-service @var{Name} @var{Zieltyp} @var{Wert} +Liefert einen Dienst, der den Dienst mit dem @var{Zieltyp} um den @var{Wert} +erweitert. Dazu wird ein Diensttyp mit dem @var{Name}n für den einmaligen +Gebrauch erzeugt, den der zurückgelieferte Dienst instanziiert. -For example, this extends mcron (@pxref{Geplante Auftragsausführung}) with an -additional job: +Zum Beispiel kann mcron (siehe @ref{Geplante Auftragsausführung}) so um einen +zusätzlichen Auftrag erweitert werden: @example (simple-service 'my-mcron-job mcron-service-type @@ -24418,198 +25810,213 @@ additional job: @end example @end deffn -At the core of the service abstraction lies the @code{fold-services} -procedure, which is responsible for ``compiling'' a list of services down to -a single directory that contains everything needed to boot and run the -system---the directory shown by the @command{guix system build} command -(@pxref{Aufruf von guix system}). In essence, it propagates service -extensions down the service graph, updating each node parameters on the way, -until it reaches the root node. - -@deffn {Scheme Procedure} fold-services @var{services} @ - [#:target-type @var{system-service-type}] Fold @var{services} by propagating -their extensions down to the root of type @var{target-type}; return the root -service adjusted accordingly. +Den Kern dieses abstrakten Modells für Dienste bildet die Prozedur +@code{fold-services}, die für das »Kompilieren« einer Liste von Diensten hin +zu einem einzelnen Verzeichnis verantwortlich ist, in welchem alles +enthalten ist, was Sie zum Booten und Hochfahren des Systems brauchen — +d.h.@: das Verzeichnis, das der Befehl @command{guix system build} anzeigt +(siehe @ref{Aufruf von guix system}). Einfach ausgedrückt propagiert +@code{fold-services} Diensterweiterungen durch den Dienstgraphen nach unten +und aktualisiert dabei in jedem Knoten des Graphen dessen Parameter, bis nur +noch der Wurzelknoten übrig bleibt. + +@deffn {Scheme-Prozedur} fold-services @var{Dienste} @ + [#:target-type @var{system-service-type}] Faltet die @var{Dienste} wie die +funktionale Prozedur @code{fold} zu einem einzigen zusammen, indem ihre +Erweiterungen nach unten propagiert werden, bis eine Wurzel vom +@var{target-type} als Diensttyp erreicht wird; dieser so angepasste +Wurzeldienst wird zurückgeliefert. @end deffn -Lastly, the @code{(gnu services)} module also defines several essential -service types, some of which are listed below. +Als Letztes definiert das Modul @code{(gnu services)} noch mehrere +essenzielle Diensttypen, von denen manche im Folgenden aufgelistet sind: -@defvr {Scheme Variable} system-service-type -This is the root of the service graph. It produces the system directory as -returned by the @command{guix system build} command. +@defvr {Scheme-Variable} system-service-type +Die Wurzel des Dienstgraphen. Davon wird das Systemverzeichnis erzeugt, wie +es vom Befehl @command{guix system build} zurückgeliefert wird. @end defvr -@defvr {Scheme Variable} boot-service-type -The type of the ``boot service'', which produces the @dfn{boot script}. The -boot script is what the initial RAM disk runs when booting. +@defvr {Scheme-Variable} boot-service-type +Der Typ des »Boot-Dienstes«, der das @dfn{Boot-Skript} erzeugt. Das +Boot-Skript ist das, was beim Booten durch die initiale RAM-Disk ausgeführt +wird. @end defvr -@defvr {Scheme Variable} etc-service-type -The type of the @file{/etc} service. This service is used to create files -under @file{/etc} and can be extended by passing it name/file tuples such -as: +@defvr {Scheme-Variable} etc-service-type +Der Typ des @file{/etc}-Dienstes. Dieser Dienst wird benutzt, um im +@file{/etc}-Verzeichnis Dateien zu platzieren. Er kann erweitert werden, +indem man Name-/Datei-Tupel an ihn übergibt wie in diesem Beispiel: @example -(list `("issue" ,(plain-file "issue" "Welcome!\n"))) +(list `("issue" ,(plain-file "issue" "Willkommen!\n"))) @end example -In this example, the effect would be to add an @file{/etc/issue} file -pointing to the given file. +Dieses Beispiel würde bewirken, dass eine Datei @file{/etc/issue} auf die +angegebene Datei verweist. @end defvr -@defvr {Scheme Variable} setuid-program-service-type -Type for the ``setuid-program service''. This service collects lists of -executable file names, passed as gexps, and adds them to the set of -setuid-root programs on the system (@pxref{Setuid-Programme}). +@defvr {Scheme-Variable} setuid-program-service-type +Der Typ des Dienstes für setuid-Programme, der eine Liste von ausführbaren +Dateien ansammelt, die jeweils als G-Ausdrücke übergeben werden und dann zur +Menge der setuid-gesetzten Programme auf dem System hinzugefügt werden +(siehe @ref{Setuid-Programme}). @end defvr -@defvr {Scheme Variable} profile-service-type -Type of the service that populates the @dfn{system profile}---i.e., the -programs under @file{/run/current-system/profile}. Other services can -extend it by passing it lists of packages to add to the system profile. +@defvr {Scheme-Variable} profile-service-type +Der Typ des Dienstes zum Einfügen von Dateien ins @dfn{Systemprofil} — +d.h.@: die Programme unter @file{/run/current-system/profile}. Andere +Dienste können ihn erweitern, indem sie ihm Listen von ins Systemprofil zu +installierenden Paketen übergeben. @end defvr @node Shepherd-Dienste @subsection Shepherd-Dienste -@cindex shepherd services +@cindex Shepherd-Dienste @cindex PID 1 -@cindex init system -The @code{(gnu services shepherd)} module provides a way to define services -managed by the GNU@tie{}Shepherd, which is the initialization system---the -first process that is started when the system boots, also known 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 Konfigurationssystem nutzen}) results in a service graph like this: - -@image{images/shepherd-graph,,5in,Typical shepherd service graph.} - -You can actually generate such a graph for any operating system definition -using the @command{guix system shepherd-graph} command -(@pxref{system-shepherd-graph, @command{guix system shepherd-graph}}). - -The @var{%shepherd-root-service} is a service object representing -PID@tie{}1, of type @var{shepherd-root-service-type}; it can be extended by +@cindex init-System +Das Modul @code{(gnu services shepherd)} gibt eine Methode an, mit der +Dienste definiert werden können, die von GNU@tie{}Shepherd verwaltet werden, +was das Initialisierungssystem (das »init«-System) ist — es ist der erste +Prozess, der gestartet wird, wenn das System gebootet wird, auch bekannt als +PID@tie{}1 (siehe @ref{Einführung,,, shepherd, The GNU Shepherd Manual}). + +Dienste unter dem Shepherd können voneinander abhängen. Zum Beispiel kann es +sein, dass der SSH-Daemon erst gestartet werden darf, nachdem der +Syslog-Daemon gestartet wurde, welcher wiederum erst gestartet werden kann, +sobald alle Dateisysteme eingebunden wurden. Das einfache Betriebssystem, +dessen Definition wir zuvor gesehen haben (siehe @ref{Das Konfigurationssystem nutzen}), ergibt folgenden Dienstgraphen: + +@image{images/shepherd-graph,,5in,Typischer Shepherd-Dienstgraph} + +Sie können so einen Graphen tatsächlich für jedes Betriebssystem erzeugen +lassen, indem Sie den Befehl @command{guix system shepherd-graph} benutzen +(siehe @ref{system-shepherd-graph, @command{guix system shepherd-graph}}). + +The @code{%shepherd-root-service} is a service object representing +PID@tie{}1, of type @code{shepherd-root-service-type}; it can be extended by passing it lists of @code{<shepherd-service>} objects. -@deftp {Data Type} shepherd-service -The data type representing a service managed by the Shepherd. +@deftp {Datentyp} shepherd-service +Der Datentyp, der einen von Shepherd verwalteten Dienst repräsentiert. @table @asis @item @code{provision} -This is a list of symbols denoting what the service provides. +Diese Liste von Symbolen gibt an, was vom Dienst angeboten wird. -These are the names that may be passed to @command{herd start}, -@command{herd status}, and similar commands (@pxref{Invoking herd,,, -shepherd, The GNU Shepherd Manual}). @xref{Slots of services, the -@code{provides} slot,, shepherd, The GNU Shepherd Manual}, for details. +Das bedeutet, es sind die Namen, die an @command{herd start}, @command{herd +status} und ähnliche Befehle übergeben werden können (siehe @ref{Invoking +herd,,, shepherd, The GNU Shepherd Manual}). Siehe @ref{Slots of services, +the @code{provides} slot,, shepherd, The GNU Shepherd Manual} für Details. -@item @code{requirements} (default: @code{'()}) -List of symbols denoting the Shepherd services this one depends on. +@item @code{requirements} (Vorgabe: @code{'()}) +Eine Liste von Symbolen, die angegeben, von welchen anderen +Shepherd-Diensten dieser hier abhängt. -@item @code{respawn?} (default: @code{#t}) -Whether to restart the service when it stops, for instance when the -underlying process dies. +@item @code{respawn?} (Vorgabe: @code{#t}) +Ob der Dienst neu gestartet werden soll, nachdem er gestoppt wurde, zum +Beispiel wenn der ihm zu Grunde liegende Prozess terminiert wird. @item @code{start} -@itemx @code{stop} (default: @code{#~(const #f)}) -The @code{start} and @code{stop} fields refer to the Shepherd's facilities -to start and stop processes (@pxref{Service De- and Constructors,,, -shepherd, The GNU Shepherd Manual}). They are given as G-expressions that -get expanded in the Shepherd configuration file (@pxref{G-Ausdrücke}). +@itemx @code{stop} (Vorgabe: @code{#~(const #f)}) +Die Felder @code{start} und @code{stop} beziehen sich auf Shepherds +Funktionen zum Starten und Stoppen von Prozessen (siehe @ref{Service De- and +Constructors,,, shepherd, The GNU Shepherd Manual}). Sie enthalten +G-Ausdrücke, die in eine Shepherd-Konfigurationdatei umgeschrieben werden +(siehe @ref{G-Ausdrücke}). @item @code{actions} (Vorgabe: @code{'()}) @cindex Aktionen, bei Shepherd-Diensten -This is a list of @code{shepherd-action} objects (see below) defining -@dfn{actions} supported by the service, in addition to the standard -@code{start} and @code{stop} actions. Actions listed here become available -as @command{herd} sub-commands: +Dies ist eine Liste von @code{shepherd-action}-Objekten (siehe unten), die +vom Dienst zusätzlich unterstützte @dfn{Aktionen} neben den Standardaktionen +@code{start} und @code{stop} angeben. Hier aufgeführte Aktionen werden als +@command{herd}-Unterbefehle verfügbar gemacht: @example -herd @var{action} @var{service} [@var{arguments}@dots{}] +herd @var{Aktion} @var{Dienst} [@var{Argumente}@dots{}] @end example @item @code{Dokumentation} -A documentation string, as shown when running: +Eine Zeichenkette zur Dokumentation, die angezeigt wird, wenn man dies +ausführt: @example -herd doc @var{service-name} +herd doc @var{Dienstname} @end example -where @var{service-name} is one of the symbols in @var{provision} +where @var{service-name} is one of the symbols in @code{provision} (@pxref{Invoking herd,,, shepherd, The GNU Shepherd Manual}). -@item @code{modules} (default: @var{%default-modules}) -This is the list of modules that must be in scope when @code{start} and -@code{stop} are evaluated. +@item @code{modules} (default: @code{%default-modules}) +Dies ist die Liste der Module, die in den Sichtbarkeitsbereich geladen sein +müssen, wenn @code{start} und @code{stop} ausgewertet werden. @end table @end deftp @deftp {Datentyp} shepherd-action -This is the data type that defines additional actions implemented by a -Shepherd service (see above). +Dieser Datentyp definiert zusätzliche Aktionen, die ein Shepherd-Dienst +implementiert (siehe oben). @table @code @item name Die Aktion bezeichnendes Symbol. @item Dokumentation -This is a documentation string for the action. It can be viewed by running: +Diese Zeichenkette ist die Dokumentation für die Aktion. Sie können sie +sehen, wenn Sie dies ausführen: @example -herd doc @var{service} action @var{action} +herd doc @var{Dienst} action @var{Aktion} @end example @item procedure -This should be a gexp that evaluates to a procedure of at least one -argument, which is the ``running value'' of the service (@pxref{Slots of -services,,, shepherd, The GNU Shepherd Manual}). +Dies sollte ein G-Ausdruck sein, der zu einer mindestens ein Argument +nehmenden Prozedur ausgewertet wird. Das Argument ist der »running«-Wert des +Dienstes (siehe @ref{Slots of services,,, shepherd, The GNU Shepherd +Manual}). @end table -The following example defines an action called @code{say-hello} that kindly -greets the user: +Das folgende Beispiel definiert eine Aktion namens @code{sag-hallo}, die den +Benutzer freundlich begrüßt: @example (shepherd-action - (name 'say-hello) - (documentation "Say hi!") + (name 'sag-hallo) + (documentation "Sag Hallo!") (procedure #~(lambda (running . args) - (format #t "Hello, friend! arguments: ~s\n" + (format #t "Hallo, Freund! Argumente: ~s\n" args) #t))) @end example -Assuming this action is added to the @code{example} service, then you can -do: +Wenn wir annehmen, dass wir die Aktion zum Dienst @code{beispiel} +hinzufügen, können Sie Folgendes ausführen: @example -# herd say-hello example -Hello, friend! arguments: () -# herd say-hello example a b c -Hello, friend! arguments: ("a" "b" "c") +# herd sag-hallo beispiel +Hallo, Freund! Argumente: () +# herd sag-hallo beispiel a b c +Hallo, Freund! Argumente: ("a" "b" "c") @end example -This, as you can see, is a fairly sophisticated way to say hello. -@xref{Service Convenience,,, shepherd, The GNU Shepherd Manual}, for more -info on actions. +Wie Sie sehen können, ist das eine sehr ausgeklügelte Art, Hallo zu +sagen. Siehe @ref{Service Convenience,,, shepherd, The GNU Shepherd Manual} +für mehr Informationen zu Aktionen. @end deftp -@defvr {Scheme Variable} shepherd-root-service-type -The service type for the Shepherd ``root service''---i.e., PID@tie{}1. +@defvr {Scheme-Variable} shepherd-root-service-type +Der Diensttyp für den Shepherd-»Wurzeldienst« — also für PID@tie{}1. -This is the service type that extensions target when they want to create -shepherd services (@pxref{Diensttypen und Dienste}, for an example). -Each extension must pass a list of @code{<shepherd-service>}. +Dieser Diensttyp stellt das Ziel für Diensterweiterungen dar, die +Shepherd-Dienste erzeugen sollen (siehe @ref{Diensttypen und Dienste} für +ein Beispiel). Jede Erweiterung muss eine Liste von +@code{<shepherd-service>}-Objekten übergeben. @end defvr -@defvr {Scheme Variable} %shepherd-root-service -This service represents PID@tie{}1. +@defvr {Scheme-Variable} %shepherd-root-service +Dieser Dienst repräsentiert PID@tie{}1. @end defvr @@ -24742,7 +26149,7 @@ check whether a package has a @code{debug} output, use @command{guix package @chapter Sicherheitsaktualisierungen @cindex security updates -@cindex security vulnerabilities +@cindex Sicherheitslücken Occasionally, important security vulnerabilities are discovered in software packages and must be patched. Guix developers try hard to keep track of known vulnerabilities and to apply fixes as soon as possible in the @@ -24786,7 +26193,7 @@ magnitudes lower than a full rebuild of the dependency chain. @cindex replacements of packages, for grafts For instance, suppose a security update needs to be applied to Bash. Guix developers will provide a package definition for the ``fixed'' Bash, say -@var{bash-fixed}, in the usual way (@pxref{Pakete definieren}). Then, the +@code{bash-fixed}, in the usual way (@pxref{Pakete definieren}). Then, the original package definition is augmented with a @code{replacement} field pointing to the package containing the bug fix: @@ -24800,15 +26207,15 @@ pointing to the package containing the bug fix: From there on, any package depending directly or indirectly on Bash---as reported by @command{guix gc --requisites} (@pxref{Aufruf von guix gc})---that -is installed is automatically ``rewritten'' to refer to @var{bash-fixed} -instead of @var{bash}. This grafting process takes time proportional to the -size of the package, usually less than a minute for an ``average'' package -on a recent machine. Grafting is recursive: when an indirect dependency -requires grafting, then grafting ``propagates'' up to the package that the -user is installing. +is installed is automatically ``rewritten'' to refer to @code{bash-fixed} +instead of @code{bash}. This grafting process takes time proportional to +the size of the package, usually less than a minute for an ``average'' +package on a recent machine. Grafting is recursive: when an indirect +dependency requires grafting, then grafting ``propagates'' up to the package +that the user is installing. Currently, the length of the name and version of the graft and that of the -package it replaces (@var{bash-fixed} and @var{bash} in the example above) +package it replaces (@code{bash-fixed} and @code{bash} in the example above) must be equal. This restriction mostly comes from the fact that grafting works by patching files, including binary files, directly. Other restrictions may apply: for instance, when adding a graft to a package @@ -25084,28 +26491,31 @@ generated binaries could be broken for some reason. @node Danksagungen @chapter Danksagungen -Guix is based on the @uref{http://nixos.org/nix/, Nix package manager}, -which was designed and implemented by Eelco Dolstra, with contributions from -other people (see the @file{nix/AUTHORS} file in Guix.) Nix pioneered -functional package management, and promoted unprecedented features, such as -transactional package upgrades and rollbacks, per-user profiles, and -referentially transparent build processes. Without this work, Guix would -not exist. +Guix baut auf dem @uref{http://nixos.org/nix/, Nix-Paketverwaltungsprogramm} +auf, das von Eelco Dolstra entworfen und entwickelt wurde, mit Beiträgen von +anderen Leuten (siehe die Datei @file{nix/AUTHORS} in Guix). Nix hat für die +funktionale Paketverwaltung die Pionierarbeit geleistet und noch nie +dagewesene Funktionalitäten vorangetrieben wie transaktionsbasierte +Paketaktualisierungen und die Rücksetzbarkeit selbiger, eigene Paketprofile +für jeden Nutzer und referenziell transparente Erstellungsprozesse. Ohne +diese Arbeit gäbe es Guix nicht. -The Nix-based software distributions, Nixpkgs and NixOS, have also been an -inspiration for Guix. +Die Nix-basierten Software-Distributionen Nixpkgs und NixOS waren auch eine +Inspiration für Guix. -GNU@tie{}Guix itself is a collective work with contributions from a number -of people. See the @file{AUTHORS} file in Guix for more information on -these fine people. The @file{THANKS} file lists people who have helped by -reporting bugs, taking care of the infrastructure, providing artwork and -themes, making suggestions, and more---thank you! +GNU@tie{}Guix ist selbst das Produkt kollektiver Arbeit mit Beiträgen durch +eine Vielzahl von Leuten. Siehe die Datei @file{AUTHORS} in Guix für mehr +Informationen, wer diese wunderbaren Menschen sind. In der Datei +@file{THANKS} finden Sie eine Liste der Leute, die uns geholfen haben, indem +Sie Fehler gemeldet, sich um unsere Infrastruktur gekümmert, künstlerische +Arbeit und schön gestaltete Themen beigesteuert, Vorschläge gemacht und noch +vieles mehr getan haben — vielen Dank! @c ********************************************************************* @node GNU-Lizenz für freie Dokumentation @appendix GNU-Lizenz für freie Dokumentation -@cindex license, GNU Free Documentation License +@cindex Lizenz, GNU-Lizenz für freie Dokumentation @include fdl-1.3.texi @c ********************************************************************* |