summaryrefslogtreecommitdiff
path: root/etc
diff options
context:
space:
mode:
Diffstat (limited to 'etc')
-rwxr-xr-xetc/committer.scm.in144
-rw-r--r--etc/completion/fish/guix.fish7
-rw-r--r--etc/completion/zsh/_guix2
-rwxr-xr-xetc/guix-install.sh4
-rw-r--r--etc/news.scm512
5 files changed, 604 insertions, 65 deletions
diff --git a/etc/committer.scm.in b/etc/committer.scm.in
index ebe6b96bcc..801b5d195e 100755
--- a/etc/committer.scm.in
+++ b/etc/committer.scm.in
@@ -3,7 +3,7 @@
!#
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -28,7 +28,10 @@
(import (sxml xpath)
(srfi srfi-1)
+ (srfi srfi-2)
(srfi srfi-9)
+ (srfi srfi-11)
+ (srfi srfi-26)
(ice-9 format)
(ice-9 popen)
(ice-9 match)
@@ -63,7 +66,8 @@ LINE-NO in PORT."
(make-hunk file-name
old-line-number
new-line-number
- diff)
+ diff-lines
+ definition?)
hunk?
(file-name hunk-file-name)
;; Line number before the change
@@ -71,38 +75,46 @@ LINE-NO in PORT."
;; Line number after the change
(new-line-number hunk-new-line-number)
;; The full diff to be used with "git apply --cached"
- (diff hunk-diff))
+ (diff-lines hunk-diff-lines)
+ ;; Does this hunk add a definition?
+ (definition? hunk-definition?))
(define* (hunk->patch hunk #:optional (port (current-output-port)))
(let ((file-name (hunk-file-name hunk)))
(format port
"diff --git a/~a b/~a~%--- a/~a~%+++ b/~a~%~a"
file-name file-name file-name file-name
- (hunk-diff hunk))))
+ (string-join (hunk-diff-lines hunk) ""))))
(define (diff-info)
"Read the diff and return a list of <hunk> values."
(let ((port (open-pipe* OPEN_READ
"git" "diff"
+ "--no-color"
"--no-prefix"
- ;; Do not include any context lines. This makes it
- ;; easier to find the S-expression surrounding the
- ;; change.
- "--unified=0")))
+ ;; Only include one context line to avoid lumping in
+ ;; new definitions with changes to existing
+ ;; definitions.
+ "--unified=1"
+ "gnu")))
(define (extract-line-number line-tag)
(abs (string->number
(car (string-split line-tag #\,)))))
(define (read-hunk)
- (reverse
- (let loop ((lines '()))
- (let ((line (read-line port 'concat)))
- (cond
- ((eof-object? line) lines)
- ((or (string-prefix? "@@ " line)
- (string-prefix? "diff --git" line))
- (unget-string port line)
- lines)
- (else (loop (cons line lines))))))))
+ (let loop ((lines '())
+ (definition? #false))
+ (let ((line (read-line port 'concat)))
+ (cond
+ ((eof-object? line)
+ (values (reverse lines) definition?))
+ ((or (string-prefix? "@@ " line)
+ (string-prefix? "diff --git" line))
+ (unget-string port line)
+ (values (reverse lines) definition?))
+ (else
+ (loop (cons line lines)
+ (or definition?
+ (string-prefix? "+(define" line))))))))
(define info
(let loop ((acc '())
(file-name #f))
@@ -116,17 +128,27 @@ LINE-NO in PORT."
((string-prefix? "@@ " line)
(match (string-split line #\space)
((_ old-start new-start . _)
- (loop (cons (make-hunk file-name
- (extract-line-number old-start)
- (extract-line-number new-start)
- (string-join (cons* line "\n"
- (read-hunk)) ""))
- acc)
- file-name))))
+ (let-values
+ (((diff-lines definition?) (read-hunk)))
+ (loop (cons (make-hunk file-name
+ (extract-line-number old-start)
+ (extract-line-number new-start)
+ (cons (string-append line "\n")
+ diff-lines)
+ definition?) acc)
+ file-name)))))
(else (loop acc file-name))))))
(close-pipe port)
info))
+(define (lines-to-first-change hunk)
+ "Return the number of diff lines until the first change."
+ (1- (count (lambda (line)
+ ((negate char-set-contains?)
+ (char-set #\+ #\-)
+ (string-ref line 0)))
+ (hunk-diff-lines hunk))))
+
(define (old-sexp hunk)
"Using the diff information in HUNK return the unmodified S-expression
corresponding to the top-level definition containing the staged changes."
@@ -138,7 +160,9 @@ corresponding to the top-level definition containing the staged changes."
(close-pipe port)
(call-with-input-string contents
(lambda (port)
- (surrounding-sexp port (hunk-old-line-number hunk))))))
+ (surrounding-sexp port
+ (+ (lines-to-first-change hunk)
+ (hunk-old-line-number hunk)))))))
(define (new-sexp hunk)
"Using the diff information in HUNK return the modified S-expression
@@ -146,9 +170,10 @@ corresponding to the top-level definition containing the staged changes."
(call-with-input-file (hunk-file-name hunk)
(lambda (port)
(surrounding-sexp port
- (hunk-new-line-number hunk)))))
+ (+ (lines-to-first-change hunk)
+ (hunk-new-line-number hunk))))))
-(define* (commit-message file-name old new #:optional (port (current-output-port)))
+(define* (change-commit-message file-name old new #:optional (port (current-output-port)))
"Print ChangeLog commit message for changes between OLD and NEW."
(define (get-values expr field)
(match ((sxpath `(// ,field quasiquote *)) expr)
@@ -193,6 +218,12 @@ corresponding to the top-level definition containing the staged changes."
(listify added)))))))))
'(inputs propagated-inputs native-inputs)))
+(define* (add-commit-message file-name variable-name #:optional (port (current-output-port)))
+ "Print ChangeLog commit message for a change to FILE-NAME adding a definition."
+ (format port
+ "gnu: Add ~a.~%~%* ~a (~a): New variable.~%"
+ variable-name file-name variable-name))
+
(define (group-hunks-by-sexp hunks)
"Return a list of pairs associating all hunks with the S-expression they are
modifying."
@@ -218,14 +249,45 @@ modifying."
(cons* new (old-sexp (first hunks)) hunks)))
(group-hunks-by-sexp hunks)))
+(define %delay 1000)
+
(define (main . args)
(match (diff-info)
(()
(display "Nothing to be done." (current-error-port)))
(hunks
- (for-each (match-lambda
- ((new old . hunks)
- (for-each (lambda (hunk)
+ (let-values
+ (((definitions changes)
+ (partition hunk-definition? hunks)))
+
+ ;; Additions.
+ (for-each (lambda (hunk)
+ (and-let*
+ ((define-line (find (cut string-prefix? "+(define" <>)
+ (hunk-diff-lines hunk)))
+ (variable-name (and=> (string-tokenize define-line) second)))
+ (add-commit-message (hunk-file-name hunk) variable-name)
+ (let ((port (open-pipe* OPEN_WRITE
+ "git" "apply"
+ "--cached"
+ "--unidiff-zero")))
+ (hunk->patch hunk port)
+ (unless (eqv? 0 (status:exit-val (close-pipe port)))
+ (error "Cannot apply")))
+
+ (let ((port (open-pipe* OPEN_WRITE "git" "commit" "-F" "-")))
+ (add-commit-message (hunk-file-name hunk)
+ variable-name port)
+ (usleep %delay)
+ (unless (eqv? 0 (status:exit-val (close-pipe port)))
+ (error "Cannot commit"))))
+ (usleep %delay))
+ definitions)
+
+ ;; Changes.
+ (for-each (match-lambda
+ ((new old . hunks)
+ (for-each (lambda (hunk)
(let ((port (open-pipe* OPEN_WRITE
"git" "apply"
"--cached"
@@ -233,18 +295,20 @@ modifying."
(hunk->patch hunk port)
(unless (eqv? 0 (status:exit-val (close-pipe port)))
(error "Cannot apply")))
- (sleep 1))
+ (usleep %delay))
hunks)
- (commit-message (hunk-file-name (first hunks))
- old new
- (current-output-port))
+ (change-commit-message (hunk-file-name (first hunks))
+ old new
+ (current-output-port))
(let ((port (open-pipe* OPEN_WRITE "git" "commit" "-F" "-")))
- (commit-message (hunk-file-name (first hunks))
- old new
- port)
- (sleep 1)
+ (change-commit-message (hunk-file-name (first hunks))
+ old new
+ port)
+ (usleep %delay)
(unless (eqv? 0 (status:exit-val (close-pipe port)))
(error "Cannot commit")))))
- (new+old+hunks hunks)))))
+ ;; XXX: we recompute the hunks here because previous
+ ;; insertions lead to offsets.
+ (new+old+hunks (diff-info)))))))
(main)
diff --git a/etc/completion/fish/guix.fish b/etc/completion/fish/guix.fish
index 73bd176112..422baab4bb 100644
--- a/etc/completion/fish/guix.fish
+++ b/etc/completion/fish/guix.fish
@@ -133,7 +133,7 @@ complete -f -c guix -n '__fish_guix_using_command pull' -l url -d 'download the
complete -f -c guix -n '__fish_guix_using_command pull' -l bootstrap -d 'use the bootstrap Guile to build the new Guix'
#### system
-set -l remotecommands reconfigure roll-back switch-generation list-generations build container vm vm-image disk-image init extension-graph shepherd-graph load-path keep-failed keep-going dry-run fallback no-substitutes substitutes-urls no-grafts no-offload max-silent-time timeout verbosity rounds cores max-jobs derivation on-error image-size no-grub share expose full-boot
+set -l remotecommands reconfigure roll-back switch-generation list-generations build container vm image init extension-graph shepherd-graph load-path keep-failed keep-going dry-run fallback no-substitutes substitutes-urls no-grafts no-offload max-silent-time timeout verbosity rounds cores max-jobs derivation on-error image-size no-grub share expose full-boot
complete -f -c guix -n '__fish_guix_needs_command' -a system -d 'Build the operating system declared in FILE according to ACTION.'
complete -f -c guix -n '__fish_guix_using_command system' -l reconfigure -d 'switch to a new operating system configuration'
complete -f -c guix -n '__fish_guix_using_command system' -l roll-back -d 'switch to the previous operating system configuration'
@@ -142,8 +142,7 @@ complete -f -c guix -n '__fish_guix_using_command system' -l list-generations -d
complete -f -c guix -n '__fish_guix_using_command system' -l build -d 'build the operating system without installing anything'
complete -f -c guix -n '__fish_guix_using_command system' -l container -d 'build a container that shares the host\'s store'
complete -f -c guix -n '__fish_guix_using_command system' -l vm -d 'build a virtual machine image that shares the host\'s store'
-complete -f -c guix -n '__fish_guix_using_command system' -l vm-image -d 'build a freestanding virtual machine image'
-complete -f -c guix -n '__fish_guix_using_command system' -l disk-image -d 'build a disk image, suitable for a USB stick'
+complete -f -c guix -n '__fish_guix_using_command system' -l image -d 'build a disk image, suitable for a USB stick'
complete -f -c guix -n '__fish_guix_using_command system' -l init -d 'initialize a root file system to run GNU'
complete -f -c guix -n '__fish_guix_using_command system' -l extension-graph -d 'emit the service extension graph in Dot format'
complete -f -c guix -n '__fish_guix_using_command system' -l shepherd-graph -d 'emit the graph of shepherd services in Dot format'
@@ -167,7 +166,7 @@ complete -f -c guix -n '__fish_guix_using_command system' -s M -d 'allow at most
complete -f -c guix -n '__fish_guix_using_command system' -a "--max-jobs=" -d 'allow at most N build jobs'
complete -f -c guix -n '__fish_guix_using_command system' -s d -l derivation -d 'return the derivation of the given system'
complete -f -c guix -n '__fish_guix_using_command system' -a "--on-error=" -d 'apply STRATEGY when an error occurs while reading FILE'
-complete -f -c guix -n '__fish_guix_using_command system' -a "--image-size=" -d 'for \'vm-image\', produce an image of SIZE'
+complete -f -c guix -n '__fish_guix_using_command system' -a "--image-size=" -d 'for \'image\', produce an image of SIZE'
complete -f -c guix -n '__fish_guix_using_command system' -l no-grub -d 'for \'init\', do not install GRUB'
complete -f -c guix -n '__fish_guix_using_command system' -a "--share=" -d 'for \'vm\', share host file system according to SPEC'
complete -f -c guix -n '__fish_guix_using_command system' -a "--expose=" -d 'for \'vm\', expose host file system according to SPEC'
diff --git a/etc/completion/zsh/_guix b/etc/completion/zsh/_guix
index ae93b62b1d..aa1a859e0d 100644
--- a/etc/completion/zsh/_guix
+++ b/etc/completion/zsh/_guix
@@ -383,7 +383,7 @@ _guix_list_installed_packages()
'--max-jobs=[allow at most N build jobs]:N' \
'--derivation[return the derivation of the given system]' \
'--on-error=[apply STRATEGY when an error occurs while reading FILE]:STRATEGY' \
- '--image-size=[for "vm-image", produce an image of SIZE]:SIZE' \
+ '--image-size=[for "image", produce an image of SIZE]:SIZE' \
'--no-grub[for "init", do not install GRUB]' \
'--share=[for "vm", share host file system according to SPEC]:SPEC' \
'--expose=[for "vm", expose host file system according to SPEC]:SPEC' \
diff --git a/etc/guix-install.sh b/etc/guix-install.sh
index 94c04aa646..c84e7b7577 100755
--- a/etc/guix-install.sh
+++ b/etc/guix-install.sh
@@ -8,6 +8,7 @@
# Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
# Copyright © 2020 Daniel Brooks <db48x@db48x.net>
# Copyright © 2021 Jakub Kądziołka <kuba@kadziolka.net>
+# Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
#
# This file is part of GNU Guix.
#
@@ -187,6 +188,9 @@ chk_sys_arch()
armv7l)
local arch=armhf
;;
+ ppc64le | powerpc64le)
+ local arch=powerpc64le
+ ;;
*)
_err "${ERR}Unsupported CPU type: ${arch}"
exit 1
diff --git a/etc/news.scm b/etc/news.scm
index 1b92886dca..65d83061df 100644
--- a/etc/news.scm
+++ b/etc/news.scm
@@ -1,15 +1,19 @@
;; GNU Guix news, for use by 'guix pull'.
;;
;; Copyright © 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
-;; Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;; Copyright © 2019–2021 Tobias Geerinckx-Rice <me@tobias.gr>
;; Copyright © 2019, 2020 Miguel Ángel Arruga Vivas <rosen644835@gmail.com>
;; Copyright © 2019, 2020 Konrad Hinsen <konrad.hinsen@fastmail.net>
-;; Copyright © 2019, 2020 Julien Lepiller <julien@lepiller.eu>
+;; Copyright © 2019, 2020, 2021 Julien Lepiller <julien@lepiller.eu>
;; Copyright © 2019, 2020, 2021 Florian Pelz <pelzflorian@pelzflorian.de>
;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
-;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
+;; Copyright © 2020, 2021 Mathieu Othacehe <m.othacehe@gmail.com>
;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
-;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;; Copyright © 2021 Leo Famulari <leo@famulari.name>
+;; Copyright © 2021 Zhu Zihao <all_but_last@163.com>
+;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
+;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;
;; Copying and distribution of this file, with or without modification, are
;; permitted in any medium without royalty provided the copyright notice and
@@ -18,11 +22,397 @@
(channel-news
(version 0)
+ (entry (commit "2161820ebbbab62a5ce76c9101ebaec54dc61586")
+ (title
+ (en "Risk of local privilege escalation during user account creation")
+ (de "Risiko lokaler Rechteausweitung während der Erstellung von Benutzerkonten"))
+ (body
+ (en "A security vulnerability that can lead to local privilege
+escalation has been found in the code that creates user accounts on Guix
+System---Guix on other distros is unaffected. The system is only vulnerable
+during the activation of user accounts that do not already exist.
+
+This bug is fixed and Guix System users are advised to upgrade their system,
+with a command along the lines of:
+
+@example
+guix system reconfigure /run/current-system/configuration.scm
+@end example
+
+The attack can happen when @command{guix system reconfigure} is running.
+Running @command{guix system reconfigure} can trigger the creation of new user
+accounts if the configuration specifies new accounts. If a user whose account
+is being created manages to log in after the account has been created but
+before ``skeleton files'' copied to its home directory have the right
+ownership, they may, by creating an appropriately-named symbolic link in the
+home directory pointing to a sensitive file, such as @file{/etc/shadow}, get
+root privileges.
+
+See @uref{https://issues.guix.gnu.org/47584} for more information on this
+bug.")
+ (de "Eine Sicherheitslücke, die eine lokale Rechteausweitung zur
+Folge haben kann, wurde in dem Code gefunden, mit dem Benutzerkonten auf Guix
+System angelegt werden — Guix auf anderen Distributionen ist nicht betroffen.
+Das System kann nur während der Aktivierung noch nicht existierender
+Benutzerkonten angegriffen werden.
+
+Der Fehler wurde behoben und wir empfehlen Nutzern von Guix System, ihre
+Systeme zu aktualisieren, mit einem Befehl wie:
+
+@example
+guix system reconfigure /run/current-system/configuration.scm
+@end example
+
+Der Angriff kann erfolgen, während @command{guix system reconfigure} läuft.
+Wenn @command{guix system reconfigure} ausgeführt wird, kann das die Erzeugung
+neuer Benutzerkonten auslösen, wenn in der Konfiguration neue Konten angegeben
+wurden. Wenn ein Benutzer, dessen Konto gerade angelegt wird, es
+fertigbringt, sich anzumelden, bevor „Skeleton-Dateien“ in seinem Persönlichen
+Verzeichnis den richtigen Besitzer haben, kann er durch Anlegen einer gezielt
+benannten symbolischen Verknüpfung in seinem Persönlichen Verzeichnis auf eine
+sensible Datei wie @file{/etc/shadow} Administratorrechte erlangen.
+
+Siehe @uref{https://issues.guix.gnu.org/47584} für mehr Informationen zu
+diesem Fehler.")))
+
+ (entry (commit "e52ec6c64a17a99ae4bb6ff02309067499915b06")
+ (title
+ (en "New supported platform: powerpc64le-linux")
+ (de "Neue Plattform wird unterstützt: powerpc64le-linux")
+ (fr "Nouvelle plate-forme prise en charge : powerpc64le-linux"))
+ (body
+ (en "A new platform, powerpc64le-linux, has been added for
+little-endian 64-bit Power ISA processors using the Linux-Libre kernel. This
+includes POWER9 systems such as the
+@uref{https://www.fsf.org/news/talos-ii-mainboard-and-talos-ii-lite-mainboard-now-fsf-certified-to-respect-your-freedom,
+RYF Talos II mainboard}. This platform is available as a \"technology
+preview\": although it is supported, substitutes are not yet available from
+the build farm, and some packages may fail to build. In addition, Guix System
+is not yet available on this platform. That said, the Guix community is
+actively working on improving this support, and now is a great time to try it
+and get involved!")
+ (de "Eine neue Plattform, powerpc64le-linux, wurde hinzugefügt. Mit
+ihr können Prozessoren mit 64-Bit-Power-Befehlssatz, little-endian, mit dem
+Linux-Libre-Kernel betrieben werden. Dazu gehören POWER9-Systeme wie die
+@uref{https://www.fsf.org/news/talos-ii-mainboard-and-talos-ii-lite-mainboard-now-fsf-certified-to-respect-your-freedom,
+RYF-zertifizierte Talos-II-Hauptplatine}. Bei der Plattform handelt es sich
+um eine „Technologievorschau“; obwohl sie unterstützt wird, gibt es noch keine
+Substitute von der Erstellungsfarm und bei manchen Paketen könnte die
+Erstellung fehlschlagen. Des Weiteren ist Guix System auf dieser Plattform
+noch nicht verfügbar. Dennoch arbeitet die Guix-Gemeinde aktiv daran, diese
+Unterstützung auszubauen, und jetzt ist eine gute Gelegenheit, sie
+auszuprobieren und mitzumachen!")
+ (fr "Une nouvelle plate-forme, powerpc64le-linux, a été ajoutée pour
+les processeurs POWER 64-bits utilisant le noyau Linux-libre. Ça inclut les
+systèmes POWER9 tels que les
+@uref{https://www.fsf.org/news/talos-ii-mainboard-and-talos-ii-lite-mainboard-now-fsf-certified-to-respect-your-freedom,
+cartes Talos II RYF}. Il s'agit pour le moment d'un « avant-goût » de la
+technologie : bien que la plate-forme soit prise en charge, la ferme de
+compilation ne fournit pas encore de substituts et certains paquets risquent
+de ne pas compiler. En outre, Guix System n'est pas encore disponible sur
+cette plate-forme. Ceci dit, la communauté Guix travaille activement pour
+améliorer cette prise en charge et c'est maintenant un bon moment pour
+l'essayer et pour s'impliquer !")))
+
+ (entry (commit "9ade2b720af91acecf76278b4d9b99ace406781e")
+ (title
+ (en "Update on previous @command{guix-daemon} local privilege escalation")
+ (de "Nachtrag zur lokalen Rechteausweitung bei @command{guix-daemon}")
+ (nl "Aanvulling bij escalatie van bevoegdheden via @command{guix-daemon}"))
+ (body
+ (en "The previous news item described a potential local privilege
+escalation in @command{guix-daemon}, and claimed that systems with the Linux
+@uref{https://www.kernel.org/doc/Documentation/sysctl/fs.txt,
+``protected hardlink''} feature enabled were unaffected by the vulnerability.
+
+This is not entirely correct. Exploiting the bug on such systems is harder,
+but not impossible. To avoid unpleasant surprises, all users are advised to
+upgrade @command{guix-daemon}. Run @command{info \"(guix) Upgrading Guix\"}
+for info on how to do that. See
+@uref{https://guix.gnu.org/en/blog/2021/risk-of-local-privilege-escalation-via-guix-daemon/}
+for more information on this bug.")
+ (de "In der letzten Neuigkeit wurde eine mögliche lokale
+Rechteausweitung im @command{guix-daemon} beschrieben und behauptet, dass
+Systeme, auf denen Linux’
+@uref{https://www.kernel.org/doc/Documentation/sysctl/fs.txt,
+„Geschützte-Hardlinks“-Funktionalität} aktiviert ist, von der Sicherheitslücke
+nicht betroffen seien.
+
+Das stimmt nicht ganz. Die Lücke auf solchen Systemen auszunutzen, ist
+schwerer, aber nicht unmöglich. Um unangenehme Überraschungen zu vermeiden,
+empfehlen wir allen Nutzern, @command{guix-daemon} zu aktualisieren. Führen
+Sie @command{info \"(guix.de) Aktualisieren von Guix\"} aus, um zu erfahren,
+wie Sie ihn aktualisieren können. Siehe
+@uref{https://guix.gnu.org/de/blog/2021/risk-of-local-privilege-escalation-via-guix-daemon/}
+für mehr Informationen zu diesem Fehler.")
+ (nl "Het vorige nieuwsbericht beschreef een beveiligingsprobleem in
+@command{guix-daemon} dat kan leiden tot de escalatie van lokale bevoegdheden.
+Het bericht stelde dat machines waarop de
+@uref{https://www.kernel.org/doc/Documentation/sysctl/fs.txt,
+``protected hardlink''}-optie van Linux is inschakeld niet kwetsbaar zijn.
+
+Dit is niet volledig juist. De optie maakt het uitbuiten van de fout
+moeilijker maar niet onmogelijk. Om onaangename verrassingen te voorkomen
+is het voor iedereen aangeraden om @command{guix-daemon} op te waarderen.
+Voer @command{info \"(guix) Upgrading Guix\"} uit voor meer informatie
+daarover. Lees
+@uref{https://guix.gnu.org/en/blog/2021/risk-of-local-privilege-escalation-via-guix-daemon/}
+voor meer informatie over het probleem.")))
+
+ (entry (commit "ec7fb669945bfb47c5e1fdf7de3a5d07f7002ccf")
+ (title
+ (en "Risk of local privilege escalation @i{via} @command{guix-daemon}")
+ (de "Risiko lokaler Rechteausweitung über @command{guix-daemon}")
+ (fr "Risque d'élévation locale de privilèges @i{via} @command{guix-daemon}")
+ (nl "Risico op escalatie van bevoegdheden via @command{guix-daemon}"))
+ (body
+ (en "A security vulnerability that can lead to local privilege
+escalation has been found in @command{guix-daemon}. It affects multi-user
+setups in which @command{guix-daemon} runs locally.
+
+It does @emph{not} affect multi-user setups where @command{guix-daemon} runs
+on a separate machine and is accessed over the network, @i{via}
+@env{GUIX_DAEMON_SOCKET}, as is customary on cluster setups. Machines where
+the Linux @uref{https://www.kernel.org/doc/Documentation/sysctl/fs.txt,
+``protected hardlink''} feature is enabled, which is common, are also
+unaffected---this is the case when the contents of
+@file{/proc/sys/fs/protected_hardlinks} are @code{1}.
+
+The attack consists in having an unprivileged user spawn a build process, for
+instance with @command{guix build}, that makes its build directory
+world-writable. The user then creates a hardlink within the build directory
+to a root-owned file from outside of the build directory, such as
+@file{/etc/shadow}. If the user passed the @option{--keep-failed} option and
+the build eventually fails, the daemon changes ownership of the whole build
+tree, including the hardlink, to the user. At that point, the user has write
+access to the target file.
+
+You are advised to upgrade @command{guix-daemon}. Run @command{info \"(guix)
+Upgrading Guix\"}, for info on how to do that. See
+@uref{https://issues.guix.gnu.org/47229} for more information on this bug.")
+ (de "Eine Sicherheitslücke, die zu einer lokalen Rechteausweitung
+führen kann, wurde in @command{guix-daemon} gefunden. Sie betrifft
+Mehrbenutzersysteme, auf denen @command{guix-daemon} lokal läuft.
+
+@emph{Nicht} betroffen sind Mehrbenutzersysteme, auf denen
+@command{guix-daemon} auf einer separaten Maschine läuft und darauf über das
+Netzwerk mittels @env{GUIX_DAEMON_SOCKET} zugegriffen wird, was auf
+Rechen-Clustern üblich ist. Auch Maschinen, auf denen Linux’
+@uref{https://www.kernel.org/doc/Documentation/sysctl/fs.txt,
+„Geschützte-Hardlinks“-Funktionalität} aktiviert ist@tie{}– was häufig der
+Fall ist@tie{}–, sind nicht betroffen; sie ist aktiviert, wenn
+@file{/proc/sys/fs/protected_hardlinks} den Inhalt @code{1} hat.
+
+Der Angriff besteht darin, dass ein unprivilegierter Benutzer einen
+Erstellungsprozess startet, etwa mit @command{guix build}, der allen
+Schreibberechtigung auf sein Erstellungsverzeichnis erteilt. In diesem
+Erstellungsverzeichnis erzeugt der Benutzer nun eine harte Verknüpfung auf
+eine Datei außerhalb des Erstellungsverzeichnisses, die dem
+Administratornutzer root gehört, etwa @file{/etc/shadow}. Wenn der Nutzer die
+Befehlszeilenoption @option{--keep-failed} angegeben hat und die Erstellung
+irgendwann fehlschlägt, trägt der Daemon als Besitzer des gesamten
+Erstellungsverzeichnisses den Benutzer ein, Hardlink eingeschlossen. Jetzt
+hat der Benutzer Schreibzugriff auf die Zieldatei bekommen.
+
+Wir empfehlen, dass Sie @command{guix-daemon} aktualisieren. Führen Sie
+@command{info \"(guix.de) Aktualisieren von Guix\"} aus, um zu erfahren, wie
+Sie ihn aktualisieren können. Siehe @uref{https://issues.guix.gnu.org/47229}
+für mehr Informationen zu diesem Fehler.")
+ (fr "Une faille de sécurité pouvant mener à une élévation locale de
+privilèges a été trouvée dans @command{guix-daemon}. Elle touche les
+installations multi-utilisateur·ices dans lesquelles @command{guix-daemon}
+tourne en local.
+
+Elle @emph{n'affecte pas} les installations où @command{guix-daemon} tourne
+sur une machine séparée et qu'on y accède à travers le réseau, @i{via}
+@env{GUIX_DAEMON_SOCKET}, comme c'est typiquement le cas sur les grappes de
+calcul (@i{clusters}). Les machines où les
+@uref{https://www.kernel.org/doc/Documentation/sysctl/fs.txt, ``liens
+protégés''} de Linux sont activés, ce qui est courant, ne sont pas non plus
+touchées ; cette fonctionnalité est activée si le contenu de
+@file{/proc/sys/fs/protected_hardlinks} est @code{1}.
+
+Pour mener cette attaque, un·e utilisateur·rice démarre un processus de
+compilation, par exemple avec @command{guix build}, qui rend le répertoire de
+compilation inscriptible pour tout le monde. La personne créée ensuite un
+lien dur (@i{hard link}) dans ce répertoire vers un fichier appartenant à
+@code{root}, tel que @file{/etc/shadow}. Si on a passé l'option
+@option{--keep-failed} et que la compilation finit par échouer, le démon met
+l'utilisateur·rice appelant·e comme propriétaire de l'ensemble du répertoire
+de compilation, y compris le lien. À ce stade, cette personne a accès en
+écriture sur le fichier cible.
+
+Nous conseillons de mettre à jour @command{guix-daemon}. Lancer @command{info
+\"(guix.fr) Mettre à niveau Guix\"} pour voir comment faire. Voir
+@uref{https://issues.guix.gnu.org/47229} pour plus d'informations sur cette
+faille.")
+ (nl "In @command{guix-daemon} werd een beveiligingsprobleem
+gevonden dat kan leiden tot de escalatie van lokale bevoegdheden. Het
+probleem doet zich voor bij installaties met meerdere gebruikers waarop een
+lokale @command{guix-daemon} draait.
+
+Het heeft @emph{geen} invloed op systemen met meerdere gebruikers waarbij de
+@command{guix-daemon} op een afzonderlijke machine draait en via
+@env{GUIX_DAEMON_SOCKET} over het netwerk wordt aangesproken, zoals
+gebruikelijk bij computerclusters. Ook machines waarop de
+@uref{https://www.kernel.org/doc/Documentation/sysctl/fs.txt,
+``protected hardlink''}-optie van Linux is inschakeld, wat vaak het geval is,
+zijn niet kwetsbaar.
+
+De aanval bestaat erin dat een gebruiker zonder privileges een bouwproces
+opstart, bijvoorbeeld met @command{guix build}, dat zijn werkmap beschrijfbaar
+maakt voor alle gebruikers. Vervolgens maakt de gebruiker vanuit deze map een
+harde link naar een bestand erbuiten met @code{root} als eigenaar, zoals
+@file{/etc/shadow}. Als de gebruiker de @option{--keep-failed}-optie opgaf
+en de bouw faalt, maakt @command{guix-daemon} de gebruiker eigenaar van de
+volledige inhoud van de werkmap, met inbegrip van de harde link. Op dat
+moment bezit de gebruiker schrijfrechten over het doelbestand.
+
+Het is aangeraden om @command{guix-daemon} op te waarderen. Voer
+@command{info \"(guix) Upgrading Guix\"} uit voor meer informatie daarover.
+Lees @uref{https://issues.guix.gnu.org/47229} voor meer informatie over het
+probleem.")))
+
+ (entry (commit "77c2f4e2068ebec3f384c826c5a99785125ff72c")
+ (title
+ (en "@code{qemu-binfmt-service-type} is usable for any container")
+ (de "@code{qemu-binfmt-service-type} funktioniert mit jedem Container")
+ (fr "@code{qemu-binfmt-service-type} fonctionne avec tous les conteneurs"))
+ (body
+ (en "The service now makes use of the statically built QEMU binaries
+along with the fix binary (F) @code{binfmt_misc} flag, which allows the kernel
+to fully pre-load it in memory. QEMU can thus now be used with any container
+without extra configuration. The @code{guix-support?} field of the
+@code{qemu-binfmt-configuration} record is removed, as it is no longer
+necessary.")
+ (de "Der Dienst benutzt jetzt statisch gebundene QEMU-Binärdateien
+zusammen mit der Fix-Binary-Flag (F) von @code{binfmt_misc}. Dadurch kann der
+Kernel die QEMU-Binärdatei als Ganzes vorab in den Speicher laden. Dann kann
+sie auch ohne weitere Konfiguration in jeder Art von isolierter Umgebung
+benutzt werden. Darum wurde das Feld @code{guix-support?} des
+@code{qemu-binfmt-configuration}-Verbundsobjekts entfernt; es wird nicht mehr
+gebraucht.")
+ (fr "Le service utilise maintenant les binaire QEMU statiques avec
+le drapeau « fixed » (F) de @code{binfmt_misc}, ce qui permet au noyau
+de le charger entièrement en mémoire. On peut donc maintenant utiliser QEMU
+avec n'importe quel conteneur sans configuration supplémentaire. Le champ
+@code{guix-support?} de l'enregistrement @code{qemu-binfmt-configuration} a
+été supprimé car il n'est pas nécessaire.")))
+
+ (entry (commit "02e2e093e858e8a0ca7bd66c1f1f6fd0a1705edb")
+ (title
+ (en "New @command{guix import go} command")
+ (de "Neuer Befehl @command{guix import go}")
+ (fr "Nouvelle commande @command{guix import go}")
+ (nl "Nieuwe @command{guix import go}-opdracht"))
+ (body
+ (en "The new @command{guix import go} command allows packagers to
+generate a package definition or a template thereof given the name of a Go
+package available through @url{https://proxy.golang.org}, like so:
+
+@example
+guix import go golang.org/x/sys
+@end example
+
+Run @command{info \"(guix) Invoking guix import\"} for more info.")
+ (de "Mit dem neuen Befehl @command{guix import go} können
+Paketautoren eine Paketdefinition oder eine Vorlage dafür anhand des Namens
+eines auf @url{https://proxy.golang.org} verfügbaren Go-Pakets erzeugen, etwa
+so:
+
+@example
+guix import go golang.org/x/sys
+@end example
+
+Führen Sie @command{info \"(guix.de) Aufruf von guix import\"} aus, um mehr
+Informationen zu bekommen.")
+ (fr "La nouvelle commande @command{guix import go} permet aux
+empaqueteur·ice·s de générer une définition de paquet ou un modèle de
+définition à partir du nom d'un paquet Go disponible via
+@url{https://proxy.golang.org}, comme ceci :
+
+@example
+guix import go golang.org/x/sys
+@end example
+
+Lancez @command{info \"(guix.fr) Invoquer guix import\"} pour en savoir plus.")
+ (nl "Met de nieuwe @command{guix import go}-opdracht kunnen
+pakketschrijvers een pakketdefinitie of -sjabloon aanmaken, op basis van de
+naam van een Go-pakket te vinden op @url{https://proxy.golang.org}:
+
+@example
+guix import go golang.org/x/sys
+@end example
+
+Voer @command{info \"(guix) Invoking guix import\"} uit voor meer
+informatie.")))
+
+ (entry (commit "1b5b882120daf7d111aa351a919a90e818324347")
+ (title
+ (en "The @code{linux-libre} kernel is updated to 5.11.2")
+ (de "Der Kernel @code{linux-libre} wird auf 5.11.2 aktualisiert")
+ (fr "Le noyau @code{linux-libre} est mis à jour vers la 5.11.2")
+ (nl "De @code{linux-libre}-kernel werd bijgewertk naar 5.11.2"))
+ (body
+ (en "The default @code{linux-libre} kernel is now based on the 5.11
+stable kernel series, beginning with version 5.11.2. Promiment features include
+improved Wine performance, unprivileged Overlayfs mounts, support for Intel SGX,
+support for new graphics hardware, and improved performance of the Btrfs
+file system.")
+ (de "Der standardmäßig verwendete @code{linux-libre}-Kernel basiert
+jetzt auf der 5.11-„stable“-Versionsreihe, angefangen mit Version 5.11.2. Zu
+den markanten Neuerungen gehören bessere Wine-Unterstützung, Einbinden per
+Overlayfs für Nutzer ohne erweiterte Rechte, Unterstützung für Intel SGX, für
+neue Grafikhardware und bessere Leistung beim Btrfs-Dateisystem.")
+ (fr "Le noyau @code{linux-libre} par défaut est maintenant basé sur la
+lignée stable 5.11 du noyau, à commencer par la version 5.11.2. Parmi les
+fonctionnalités notables on trouve des performances améliorées pour Wine, le
+montage Overlayfs non privilégié, la prise en charge d'Intel SGX, celle des
+nouveaux périphériques graphiques et de meilleures performances du système de
+fichiers Btrfs.")
+ (nl "De standaard @code{linux-libre}-kernel is nu geëent op de
+stabiele 5.11-reeks, te beginnen met versie 5.11.2. Deze update biedt onder
+andere verbeterde prestaties voor Wine en het Btfrs-bestandssysteem, laat
+gewone gebruikers toe om met Overlayfs bestandssystemen te combineren, en
+ondersteunt Intel SGX en nieuwe grafische apparatuur.")))
+
+ (entry (commit "6e8cdf1d26092cb9654e179b04730fff7c15c94f")
+ (title
+ (en "The @command{guix system image} command can now operate on image records")
+ (de "Der Befehl @command{guix system image} kann jetzt auch mit @code{image}-Verbundsobjekten umgehen")
+ (fr "La commande @command{guix system image} peut désormais fonctionner sur des images"))
+ (body
+ (en "The @command{guix system image} command can now operate on
+@code{image} records. This means that the file parameter or the expression
+passed to this command can return @code{image} or @code{operating-system}
+records.
+
+The @file{gnu/system/images} directory contains default images that can be
+built by running @command{guix system image gnu/system/images/pine64.scm} for
+instance.")
+ (de "Sie können den Befehl @command{guix system image} jetzt auch auf
+Verbundsobjekte vom Typ @code{image} anwenden. Das heißt, wenn Sie eine Datei
+oder einen Ausdruck als Parameter übergeben, darf dieser ein Verbundsobjekt
+vom Typ @code{image} oder @code{operating-system} zurückliefern.
+
+Im Verzeichnis @file{gnu/system/images} finden Sie vorkonfigurierte Abbilder
+als @code{image}-Verbundsobjekte. Sie können zum Beispiel @command{guix system
+image gnu/system/images/pine64.scm} ausführen, um das Abbild zu erstellen.")
+ (fr "La commande @command{guix system image} peut désormais
+fonctionner sur des images. Cela signifie que le fichier ou l'expression
+passé en paramètre de cette commande peuvent retourner une structure de type
+@code{image} ou @code{operating-system}.
+
+Le dossier @file{gnu/system/images} contient des images par défaut qui peuvent
+être construites en lançant la commande @command{guix system image
+gnu/system/images/pine64.scm} par exemple.")))
+
(entry (commit "aa8de806252e3835d57fab351b02d13db762deac")
(title
(en "Risk of local privilege escalation @i{via} setuid programs")
(de "Risiko lokaler Rechteausweitung bei setuid-Programmen")
- (fr "Risque de gain local de privilèges @i{via} les programmes setuid"))
+ (fr "Risque de gain local de privilèges @i{via} les programmes setuid")
+ (zh "存在通过 setuid 程序进行本地提权的风险"))
(body
(en "On Guix System, setuid programs were, until now, installed as
setuid-root @emph{and} setgid-root (in the @file{/run/setuid-programs}
@@ -70,7 +460,19 @@ guix system reconfigure /run/current-system/configuration.scm
Les usagers de Guix sur une distrib externe ne sont pas touché·es. Plus
d'informations sont disponibles à @url{https://issues.guix.gnu.org/46395} (en
-anglais).")))
+anglais).")
+ (zh "到目前为止,Guix 系统上的 setuid 程序(位于 @file{/run/setuid-programs})
+同时具有 setuid-root @emph{和} setgid-root 权限。然而,此类程序大多被设计为在拥有
+setuid 权限而非 setgid 权限时运行。因此,这样的设置可能会使系统受到本地提权攻击。
+
+此漏洞已经被修复,同时建议用户使用下列命令升级他们的系统:
+
+@example
+guix system reconfigure /run/current-system/configuration.scm
+@end example
+
+在 ``第三方宿主系统'' 上使用 Guix 的用户不受此漏洞影响,详情请参阅
+@url{https://issues.guix.gnu.org/46395}。")))
(entry (commit "aedbc5ff32a62f45aeed74c6833399a6cf2c22dc")
(title
@@ -299,7 +701,8 @@ l'instant grâce à la librairie Guile-Avahi.")))
(entry (commit "a9a2fdaabcc78e7a54d9a6bcfa4ee3de308e9a90")
(title (en "Logical Volume Manager (LVM) now supported on Guix System")
(de "Logical Volume Manager (LVM) wird jetzt auf Guix System unterstützt")
- (es "El sistema Guix ahora implementa también volúmenes lógicos LVM"))
+ (es "El sistema Guix ahora implementa también volúmenes lógicos LVM")
+ (fr "Le gestionnaire de volumes logiques (LVM) est maintenant pris en charge par le système Guix"))
(body
(en "On Guix System, the new @code{lvm-device-mapping} variable
allows you to declare ``mapped devices'' for LVM, the Linux Logical Volume
@@ -341,7 +744,20 @@ los volúmenes lógicos «alfa» y «beta» del grupo de volúmenes «vg0»:
@end lisp
Véase @command{info \"(guix.es) Dispositivos traducidos\"} para obtener más
-información.")))
+información.")
+ (fr "Sur le système Guix, la nouvelle variable @code{lvm-device-mapping}
+vous permet de déclarer des « périphériques mappés » pour LVM, le gestionnaire
+de volumes logiques. Par exemple, vous pouvez déclarer les volumes logiques
+« alpha » et « beta » du groupe « vg0 » comme ceci :
+
+@lisp
+(mapped-device
+ (source \"vg0\")
+ (target (list \"vg0-alpha\" \"vg0-beta\"))
+ (type lvm-device-mapping))
+@end lisp
+
+Voir @command{info \"(guix.fr) Périphériques mappés\"} pour en savoir plus.")))
(entry (commit "3b6e4e5fd05e72b8a32ff1a2d5e21464260e21e6")
(title (en "List of substitute keys is now declarative on Guix System")
@@ -992,7 +1408,8 @@ engine")
(es "@command{guix pack -RR} introduce un nuevo motor
de ejecución")
(de "@command{guix pack -RR} führt neuen Ausführungstreiber
-ein"))
+ein")
+ (fr "@command{guix pack -RR} introduit un nouveau moteur d'exécution"))
(body
(en "The @command{guix pack -RR} command allows you to create a
tarball containing @dfn{relocatable binaries}. Until now, those would rely
@@ -1051,12 +1468,30 @@ export GUIX_EXECUTION_ENGINE
@end example
Führen Sie @command{info \"(guix.de) Aufruf von guix pack\"} aus, wenn Sie
-mehr wissen wollen.")))
+mehr wissen wollen.")
+ (fr "La commande @command{guix pack -RR} vous permet de créer une
+archive tar contenant des @dfn{binaires repositionnables}. Jusqu'ici, ils
+s'appuyaient sur les « espaces de noms non privilégiés » de Linux ou sur
+PRoot, quand les espaces de noms non privilégiés n'étaient pas disponibles.
+Cependant, PRoot ralenti significativement certains profils d'exécution.
+
+Pour éviter cela, @command{guix pack -RR} introduit une troisième possibilité
+basée sur une extension de l'éditeur des liens à l'exécution de GNU (ld.so) et
+sur Fakechroot, qui ralenti très peu l'exécution. Vous pouvez choisir l'option
+la plus rapide à l'exécution d'un binaire relocalisable de cette manière :
+
+@example
+GUIX_EXECUTION_ENGINE=performance
+export GUIX_EXECUTION_ENGINE
+@end example
+
+Lancez @command{info \"(guix.fr) Invoquer guix pack\"} pour en savoir plus.")))
(entry (commit "88a96c568c47c97d05d883ada5afbc4e1200b10f")
(title (en "New @option{--path} option for @command{guix graph}")
(es "Nueva opción @option{--path} para @command{guix graph}")
- (de "Neue Option @option{--path} für @command{guix graph}"))
+ (de "Neue Option @option{--path} für @command{guix graph}")
+ (fr "Nouvelle option @option{--path} pour @command{guix graph}"))
(body
(en "The @command{guix graph} command has a new @option{--path}
option that instructs it to display the shortest path between two packages,
@@ -1091,7 +1526,18 @@ guix graph --path libreoffice libunistring
@end example
Führen Sie @code{info \"(guix.de) Aufruf von guix graph\"} aus, um mehr zu
-erfahren.")))
+erfahren.")
+ (fr "La commande @command{guix graph} a une nouvelle option
+@option{--path} qui lui dit d'afficer le plus court chemin entre deux
+paquets, dérivations ou éléments du dépôt. Par exemple, la commande ci-dessous
+affiche le plus court chemin entre le paquet @code{libreoffice} et
+@code{libunistring} :
+
+@example
+guix graph --path libreoffice libunistring
+@end example
+
+Lancez @code{info \"(guix.fr) Invoquer guix graph\"} pour en savoir plus.")))
(entry (commit "a33eac038a811603c8b9ed106ae405a5f80a0e9d")
(title (en "GNU C Library upgraded")
@@ -1197,7 +1643,8 @@ Rezepte mit uns zu teilen!")))
(entry (commit "2ca7af43fe17d9acf082dce85d137a27a8ac4887")
(title (en "Further reduced binary seed bootstrap")
- (de "Bootstrapping jetzt mit noch kleinerem Seed"))
+ (de "Bootstrapping jetzt mit noch kleinerem Seed")
+ (fr "Le bootstrap binaire est encore plus réduit"))
(body
(en "The package graph on x86_64 and i686 is now rooted in a further
@dfn{reduced set of binary seeds}. The initial set of binaries from which
@@ -1209,11 +1656,18 @@ the talk at @uref{https://fosdem.org/2020/schedule/event/gnumes/}.")
Menge an Binärdateien, aus denen heraus Pakete erstellt werden, machen nun
ungefähr 60 MiB aus, ein Viertel der früheren Größe. Führen Sie @code{info
\"(guix.de) Bootstrapping\"} aus, um mehr zu erfahren, oder schauen Sie sich
-den Vortrag auf @uref{https://fosdem.org/2020/schedule/event/gnumes/} an.")))
+den Vortrag auf @uref{https://fosdem.org/2020/schedule/event/gnumes/} an.")
+ (fr "Le graphe des paquets sur x86_64 et i686 prend maintenant racine
+dans un @dfn{ensemble de graines binaires} plus réduit. L'ensemble initial
+des binaires à partir desquels les paquets sont désormais construit pèse
+environ 60 Mo, un quart de ce qu'il était. Lancez
+@code{info \"(guix.fr) Bootstrapping\"} pour en savoir plus, ou regardez
+la présentation sur @uref{https://fosdem.org/2020/schedule/event/gnumes/}.")))
(entry (commit "0468455e7d279c89ea3ad1b51935efb2b785ec47")
(title (en "Rottlog service added to @code{%base-services}")
- (de "Rottlog-Dienst ist nun Teil der @code{%base-services}"))
+ (de "Rottlog-Dienst ist nun Teil der @code{%base-services}")
+ (fr "Le service rottlog a été ajouté à @code{%base-services}"))
(body (en "An instance of @code{rottlog-service-type}, the system
service responsible for log rotation, has been added to @code{%base-services}.
If your operating system configuration for Guix System is explicitly adding
@@ -1223,11 +1677,18 @@ the ``Log Rotation'' section of the manual for more information.")
Log-Rotation wurde zu den @code{%base-services} hinzugefügt. Wenn der
Systemdienst bereits in Ihrer Konfiguration für Guix System ausdrücklich
genannt wurde, sollten Sie ihn jetzt daraus entfernen. Siehe den Abschnitt
-„Log-Rotation“ im Handbuch für weitere Informationen.")))
+„Log-Rotation“ im Handbuch für weitere Informationen.")
+ (fr "Une instance de @code{rottlog-service-type}, le service
+système responsable de la rotation des journaux, a été ajoutée à
+@code{%base-services}. Si votre configuration de système d'exploitation Guix
+System ajoute @code{rottlog-service-type} explicitement, vous devriez maintenant
+le supprimer. Voir la section « Rotation des journaux » dans le manuel
+pour en savoir plus.")))
(entry (commit "b6bee63bed4f013064c0d902e7c8b83ed7514ade")
(title (en "@code{guile} package now refers to version 3.0")
- (de "Das @code{guile}-Paket bezeichnet jetzt Version 3.0"))
+ (de "Das @code{guile}-Paket bezeichnet jetzt Version 3.0")
+ (fr "Le paquet @code{guile} se réfère maintenant à la version 3.0"))
(body (en "The @code{guile} package has been upgraded to version 3.0
(instead of 2.2). The @code{guile3.0-} packages have been renamed to their
original name, and @code{guile2.2-} variants of these packages have been
@@ -1238,7 +1699,12 @@ system services also run on 3.0.")
beginnen, wurden umbenannt, so dass sie nun den unveränderten Namen tragen,
während ihre Varianten mit @code{guile2.2-} hinzugefügt wurden. Des Weiteren
werden jetzt alle Ableitungen mit Guile 3.0 erstellt und die Systemdienste
-laufen auch auf 3.0.")))
+laufen auch auf 3.0.")
+ (fr "Le paquet @code{guile} a été mis à jour vers la version 3.0
+(au lieu de la 2.2). Les paquets @code{guile3.0-} ont été renommés en leur
+nom d'origine et les variantes @code{guile2.2-} de ces paquets ont été définis.
+En plus, les dérivation sont maintenant construites avec Guile 3.0, et les
+services systèmes utilisent aussi la 3.0.")))
(entry (commit "e3e1a7ba08af2d58c47264c543617e499c239444")
(title (en "@command{guix pull} now supports SSH authenticated
@@ -1344,7 +1810,9 @@ historique.")))
(entry (commit "3e962e59d849e4300e447d94487684102d9d412e")
(title (en "@command{guix graph} now supports package
transformations")
- (de "@command{guix graph} unterstützt nun Paketumwandlungen"))
+ (de "@command{guix graph} unterstützt nun Paketumwandlungen")
+ (fr "@command{guix graph} prend maintenant en charge les
+transformations de paquets"))
(body
(en "The @command{guix graph} command now supports the common package
transformation options (see @command{info \"(guix) Package Transformation
@@ -1359,7 +1827,11 @@ Abhängigkeitsgraphen zu sehen.")
comunes de transformación de paquetes (véase @command{info \"(guix.es)
Opciones de transformación de paquetes\"}). Esto es particularmente
útil para comprobar el efecto de la opción de reescritura del grafo
-de dependencias @option{--with-input}.")))
+de dependencias @option{--with-input}.")
+ (fr "La commande @command{guix graph} prend maintenant en charge les
+transformations de paquets communes (voir @command{info \"(guix.fr) Options de
+transformation de paquets\"}). C'est particulièrement utile pour voir l'effet
+de l'option @option{--with-input} qui réécrit de graphe de dépendance.")))
(entry (commit "49af34cfac89d384c46269bfd9388b2c73b1220a")
(title (en "@command{guix pull} now honors