From unknown Fri Jun 20 18:12:28 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#57031 <57031@debbugs.gnu.org> To: bug#57031 <57031@debbugs.gnu.org> Subject: Status: [PATCH] scripts: Show a hint the first time some commands are run as root. Reply-To: bug#57031 <57031@debbugs.gnu.org> Date: Sat, 21 Jun 2025 01:12:28 +0000 retitle 57031 [PATCH] scripts: Show a hint the first time some commands are= run as root. reassign 57031 guix-patches submitter 57031 "(" severity 57031 normal tag 57031 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Sun Aug 07 07:14:43 2022 Received: (at submit) by debbugs.gnu.org; 7 Aug 2022 11:14:43 +0000 Received: from localhost ([127.0.0.1]:36053 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oKeF0-0000G2-J5 for submit@debbugs.gnu.org; Sun, 07 Aug 2022 07:14:43 -0400 Received: from lists.gnu.org ([209.51.188.17]:55146) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oKeEx-0000Fs-DX for submit@debbugs.gnu.org; Sun, 07 Aug 2022 07:14:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:58594) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oKeEx-0000g8-9L for guix-patches@gnu.org; Sun, 07 Aug 2022 07:14:39 -0400 Received: from knopi.disroot.org ([178.21.23.139]:34124) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oKeEu-0001tp-HW for guix-patches@gnu.org; Sun, 07 Aug 2022 07:14:39 -0400 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 6AD7144F79; Sun, 7 Aug 2022 13:14:32 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1v34r6XHONIK; Sun, 7 Aug 2022 13:14:31 +0200 (CEST) From: "(" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1659870871; bh=a4OR6X+4gicNOiGfFNkjyP3XnMiOjvybp0Jap0i0VRo=; h=From:To:Cc:Subject:Date; b=BVjevEJDd3xW91L5vm6h2xNbnodN9lai2TYMAS8gyAjogsc/LqMzIF+rFKAGzuPBL FC0L1mfNj6gDM+B4KJVnWMf7Np37MrEiUV6YU2Tschv+Da9ROhzKpZf5aRmhntTUZw /Dhp3J1oU7xpam72SBlW3U8hnMO5PXnEVtvFEq6pbhTV0X2nPlDXOripBZzSTOHXqL KsRfNGYohga6ivJ6lMdZZBXMrtStSHEe2LZONCRIWb8qMkbeT36SCnU8guFLvVIUvx kzk5bY1iL35eUNewuXKBZqKO53utIDznQugYRRRx5qeDa+Q8+Qgf/om4rKWre/v2vh E7ofIvKbQ7hHQ== To: guix-patches@gnu.org Subject: [PATCH] scripts: Show a hint the first time some commands are run as root. Date: Sun, 7 Aug 2022 12:14:21 +0100 Message-Id: <20220807111421.14771-1-paren@disroot.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=178.21.23.139; envelope-from=paren@disroot.org; helo=knopi.disroot.org X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 0.6 (/) X-Debbugs-Envelope-To: submit Cc: "\(" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.4 (/) * guix/scripts/package.scm (guix-package*): Add `#:root-hint?` keyword argument. Display a hint if Guix is being run as root and `root-hint?` is #t. * guix/scripts/install.scm (guix-install): Use `#:root-hint? #t` here... * guix/scripts/remove.scm (guix-remove): ...here... * guix/scripts/upgrade.scm (guix-upgrade): ...and here. * guix/scripts/pull.scm (guix-pull): (guix-pull): Display a hint if Guix is being run as root. A pretty common beginner mistake, it seems, is assuming that since every other package manager you've used requires root for installing, removing, and upgrading packages, Guix must too. This commit tries to make it harder to make such an assumption, by making commands such as `pull`, `package`, and `upgrade` display a hint the first time they are run as root. --- guix/scripts/install.scm | 3 ++- guix/scripts/package.scm | 16 +++++++++++++--- guix/scripts/pull.scm | 7 +++++++ guix/scripts/remove.scm | 3 ++- guix/scripts/upgrade.scm | 3 ++- guix/ui.scm | 29 +++++++++++++++++++++++++++++ 6 files changed, 55 insertions(+), 6 deletions(-) diff --git a/guix/scripts/install.scm b/guix/scripts/install.scm index 63e625f266..bf11fc7b11 100644 --- a/guix/scripts/install.scm +++ b/guix/scripts/install.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019, 2020 Ludovic Courtès +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -80,4 +81,4 @@ (define opts (list %package-default-options #f) #:argument-handler handle-argument)) - (guix-package* opts)) + (guix-package* opts #:root-hint? #t)) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 7d92598efa..8936c70e1f 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -12,6 +12,7 @@ ;;; Copyright © 2018 Steve Sprang ;;; Copyright © 2022 Josselin Poiret ;;; Copyright © 2022 Antero Mejr +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -1077,12 +1078,21 @@ (define opts (parse-command-line args %options (list %default-options #f) #:argument-handler handle-argument)) - (guix-package* opts)) + (guix-package* opts #:root-hint? #t)) -(define (guix-package* opts) +(define* (guix-package* opts #:key (root-hint? #f)) "Run the 'guix package' command on OPTS, an alist resulting for command-line -option processing with 'parse-command-line'." +option processing with 'parse-command-line'. If ROOT-HINT? is #T, a hint is +shown on the first usage of this procedure that informs users about Guix's +support for per-user package management." (with-error-handling + (when (and root-hint? + (not (hint-given? 'package-root-hint)) + (= (getuid) 0)) + (record-hint 'package-root-hint) + (display-hint (G_ "`guix package' is user-specific, not system-wide, +so running this command as root will affect only the `root' user."))) + (or (process-query opts) (parameterize ((%store (open-connection)) (%graft? (assoc-ref opts 'graft?))) diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index b0cc459d63..6e3d7db7c7 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013-2015, 2017-2022 Ludovic Courtès ;;; Copyright © 2017 Marius Bakke ;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -834,6 +835,12 @@ (define (no-arguments arg _) (current-channels (profile-channels profile)) (validate-pull (assoc-ref opts 'validate-pull)) (authenticate? (assoc-ref opts 'authenticate-channels?))) + (when (and (not (hint-given? 'pull-root-hint)) + (= (getuid) 0)) + (record-hint 'pull-root-hint) + (display-hint (G_ "`guix pull' is user-specific, not system-wide; +running it as root will only affect the `root' user."))) + (cond ((assoc-ref opts 'query) (process-query opts profile)) diff --git a/guix/scripts/remove.scm b/guix/scripts/remove.scm index a46ad04d56..131649eace 100644 --- a/guix/scripts/remove.scm +++ b/guix/scripts/remove.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019, 2020 Ludovic Courtès +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -76,4 +77,4 @@ (define opts (list %package-default-options #f) #:argument-handler handle-argument)) - (guix-package* opts)) + (guix-package* opts #:root-hint? #t)) diff --git a/guix/scripts/upgrade.scm b/guix/scripts/upgrade.scm index beb59cbe6f..dd14600fe4 100644 --- a/guix/scripts/upgrade.scm +++ b/guix/scripts/upgrade.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2019, 2020 Ludovic Courtès ;;; Copyright © 2020 Jakub Kądziołka ;;; Copyright © 2020 Simon Tournier +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -87,4 +88,4 @@ (define opts #f) #:argument-handler handle-argument)) - (guix-package* opts)) + (guix-package* opts #:root-hint? #t)) diff --git a/guix/ui.scm b/guix/ui.scm index a7acd41440..44607d80d2 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -18,6 +18,7 @@ ;;; Copyright © 2020 Maxim Cournoyer ;;; Copyright © 2018 Steve Sprang ;;; Copyright © 2022 Taiju HIGASHI +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -136,6 +137,11 @@ (define-module (guix ui) switch-to-generation* delete-generation* + hint-directory + hint-file + record-hint + hint-given? + %default-message-language current-message-language @@ -2032,6 +2038,29 @@ (define* (package-specification->name+version+output spec (package-name->name+version name))) (values name version sub-drv))) + +;;; +;;; One-time hints. +;;; + +(define (hint-directory) + "Return the directory name where previously given hints are recorded." + (string-append (cache-directory #:ensure? #f) "/hints")) + +(define (hint-file hint) + "Return the name of the file that marks HINT as already printed." + (string-append (hint-directory) "/" (symbol->string hint))) + +(define (record-hint hint) + "Mark HINT as already given." + (let ((file (hint-file hint))) + (mkdir-p (dirname file)) + (close-fdes (open-fdes file (logior O_CREAT O_WRONLY))))) + +(define (hint-given? hint) + "Return true if HINT was already given." + (file-exists? (hint-file hint))) + ;;; ;;; Command-line option processing. -- 2.37.1 From debbugs-submit-bounces@debbugs.gnu.org Sun Aug 07 07:19:35 2022 Received: (at 57031) by debbugs.gnu.org; 7 Aug 2022 11:19:35 +0000 Received: from localhost ([127.0.0.1]:36059 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oKeJi-0000O6-Jl for submit@debbugs.gnu.org; Sun, 07 Aug 2022 07:19:35 -0400 Received: from knopi.disroot.org ([178.21.23.139]:52698) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oKeJg-0000Ny-PF for 57031@debbugs.gnu.org; Sun, 07 Aug 2022 07:19:33 -0400 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 24A5844FE6; Sun, 7 Aug 2022 13:19:32 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OrsBhXYrvaVl; Sun, 7 Aug 2022 13:19:30 +0200 (CEST) From: "(" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1659871170; bh=Oaqilhtl+xUnLp1X+Xf7qfOo3GvJ9MY28hRuzF1F48E=; h=From:To:Cc:Subject:Date; b=bTWPO72fAOQuzCauEeumzwIOkPalyO8BvoKLFh68HEHBswWTYu/mZpBSEI32oNayP vHJgMI4UqqQPbG/kR1lOWm2aIv0e4vYdWA8JYkAspX/PFYtfyUVEdwN8T/5rHafiHK h7pDaRQqJBvR/tqBa5hYtRFwsjgfFA7Ms8VqkyWyIh5+Lr915Qb12pubR9EfDFP7DV M8q0oRtns4jgCpWcmYILM0IFw+Q1bydVBVGfcFmvrCGBWlo83Zyp0qouMx68wgA3EN hY66lEoiq9w8F3y7ojnRrkYhQgsMY3BREQwttZJEcarrbY45MiNzTVdXpaJBllnRp6 D6nf9DuOMZNcA== To: 57031@debbugs.gnu.org Subject: [PATCH v2] scripts: Show a hint the first time some commands are run as root. Date: Sun, 7 Aug 2022 12:19:29 +0100 Message-Id: <20220807111929.15617-1-paren@disroot.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 2.0 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: * guix/scripts/shell.scm (hint-given?, hint-directory, hint-file, record-hint): Move these... * guix/ui.scm: ...here. Export them. * guix/scripts/package.scm (guix-package*): Add `#:root-hint?` keywor [...] Content analysis details: (2.0 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: jpoiret.xyz (xyz)] -0.0 SPF_PASS SPF: sender matches SPF record X-Debbugs-Envelope-To: 57031 Cc: "\(" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 1.0 (+) * guix/scripts/shell.scm (hint-given?, hint-directory, hint-file, record-hint): Move these... * guix/ui.scm: ...here. Export them. * guix/scripts/package.scm (guix-package*): Add `#:root-hint?` keyword argument. Display a hint if Guix is being run as root and `root-hint?` is #t. * guix/scripts/install.scm (guix-install): Use `#:root-hint? #t` here... * guix/scripts/remove.scm (guix-remove): ...here... * guix/scripts/upgrade.scm (guix-upgrade): ...and here. * guix/scripts/pull.scm (guix-pull): (guix-pull): Display a hint if Guix is being run as root. A pretty common beginner mistake, it seems, is assuming that since every other package manager you've used requires root for installing, removing, and upgrading packages, Guix must too. This commit tries to make it harder to make such an assumption, by making commands such as `pull`, `package`, and `upgrade` display a hint the first time they are run as root. --- guix/scripts/install.scm | 3 ++- guix/scripts/package.scm | 16 +++++++++++++--- guix/scripts/pull.scm | 7 +++++++ guix/scripts/remove.scm | 3 ++- guix/scripts/shell.scm | 23 ----------------------- guix/scripts/upgrade.scm | 3 ++- guix/ui.scm | 29 +++++++++++++++++++++++++++++ 7 files changed, 55 insertions(+), 29 deletions(-) diff --git a/guix/scripts/install.scm b/guix/scripts/install.scm index 63e625f266..bf11fc7b11 100644 --- a/guix/scripts/install.scm +++ b/guix/scripts/install.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019, 2020 Ludovic Courtès +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -80,4 +81,4 @@ (define opts (list %package-default-options #f) #:argument-handler handle-argument)) - (guix-package* opts)) + (guix-package* opts #:root-hint? #t)) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 7d92598efa..8936c70e1f 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -12,6 +12,7 @@ ;;; Copyright © 2018 Steve Sprang ;;; Copyright © 2022 Josselin Poiret ;;; Copyright © 2022 Antero Mejr +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -1077,12 +1078,21 @@ (define opts (parse-command-line args %options (list %default-options #f) #:argument-handler handle-argument)) - (guix-package* opts)) + (guix-package* opts #:root-hint? #t)) -(define (guix-package* opts) +(define* (guix-package* opts #:key (root-hint? #f)) "Run the 'guix package' command on OPTS, an alist resulting for command-line -option processing with 'parse-command-line'." +option processing with 'parse-command-line'. If ROOT-HINT? is #T, a hint is +shown on the first usage of this procedure that informs users about Guix's +support for per-user package management." (with-error-handling + (when (and root-hint? + (not (hint-given? 'package-root-hint)) + (= (getuid) 0)) + (record-hint 'package-root-hint) + (display-hint (G_ "`guix package' is user-specific, not system-wide, +so running this command as root will affect only the `root' user."))) + (or (process-query opts) (parameterize ((%store (open-connection)) (%graft? (assoc-ref opts 'graft?))) diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index b0cc459d63..6e3d7db7c7 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013-2015, 2017-2022 Ludovic Courtès ;;; Copyright © 2017 Marius Bakke ;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -834,6 +835,12 @@ (define (no-arguments arg _) (current-channels (profile-channels profile)) (validate-pull (assoc-ref opts 'validate-pull)) (authenticate? (assoc-ref opts 'authenticate-channels?))) + (when (and (not (hint-given? 'pull-root-hint)) + (= (getuid) 0)) + (record-hint 'pull-root-hint) + (display-hint (G_ "`guix pull' is user-specific, not system-wide; +running it as root will only affect the `root' user."))) + (cond ((assoc-ref opts 'query) (process-query opts profile)) diff --git a/guix/scripts/remove.scm b/guix/scripts/remove.scm index a46ad04d56..131649eace 100644 --- a/guix/scripts/remove.scm +++ b/guix/scripts/remove.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019, 2020 Ludovic Courtès +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -76,4 +77,4 @@ (define opts (list %package-default-options #f) #:argument-handler handle-argument)) - (guix-package* opts)) + (guix-package* opts #:root-hint? #t)) diff --git a/guix/scripts/shell.scm b/guix/scripts/shell.scm index c115a00320..3ac7d80eb0 100644 --- a/guix/scripts/shell.scm +++ b/guix/scripts/shell.scm @@ -489,29 +489,6 @@ (define (validated-spec spec) (exp (pretty-print exp port))))) - -;;; -;;; One-time hints. -;;; - -(define (hint-directory) - "Return the directory name where previously given hints are recorded." - (string-append (cache-directory #:ensure? #f) "/hints")) - -(define (hint-file hint) - "Return the name of the file that marks HINT as already printed." - (string-append (hint-directory) "/" (symbol->string hint))) - -(define (record-hint hint) - "Mark HINT as already given." - (let ((file (hint-file hint))) - (mkdir-p (dirname file)) - (close-fdes (open-fdes file (logior O_CREAT O_WRONLY))))) - -(define (hint-given? hint) - "Return true if HINT was already given." - (file-exists? (hint-file hint))) - (define-command (guix-shell . args) (category development) diff --git a/guix/scripts/upgrade.scm b/guix/scripts/upgrade.scm index beb59cbe6f..dd14600fe4 100644 --- a/guix/scripts/upgrade.scm +++ b/guix/scripts/upgrade.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2019, 2020 Ludovic Courtès ;;; Copyright © 2020 Jakub Kądziołka ;;; Copyright © 2020 Simon Tournier +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -87,4 +88,4 @@ (define opts #f) #:argument-handler handle-argument)) - (guix-package* opts)) + (guix-package* opts #:root-hint? #t)) diff --git a/guix/ui.scm b/guix/ui.scm index a7acd41440..44607d80d2 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -18,6 +18,7 @@ ;;; Copyright © 2020 Maxim Cournoyer ;;; Copyright © 2018 Steve Sprang ;;; Copyright © 2022 Taiju HIGASHI +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -136,6 +137,11 @@ (define-module (guix ui) switch-to-generation* delete-generation* + hint-directory + hint-file + record-hint + hint-given? + %default-message-language current-message-language @@ -2032,6 +2038,29 @@ (define* (package-specification->name+version+output spec (package-name->name+version name))) (values name version sub-drv))) + +;;; +;;; One-time hints. +;;; + +(define (hint-directory) + "Return the directory name where previously given hints are recorded." + (string-append (cache-directory #:ensure? #f) "/hints")) + +(define (hint-file hint) + "Return the name of the file that marks HINT as already printed." + (string-append (hint-directory) "/" (symbol->string hint))) + +(define (record-hint hint) + "Mark HINT as already given." + (let ((file (hint-file hint))) + (mkdir-p (dirname file)) + (close-fdes (open-fdes file (logior O_CREAT O_WRONLY))))) + +(define (hint-given? hint) + "Return true if HINT was already given." + (file-exists? (hint-file hint))) + ;;; ;;; Command-line option processing. -- 2.37.1 From debbugs-submit-bounces@debbugs.gnu.org Sun Aug 07 07:22:44 2022 Received: (at 57031) by debbugs.gnu.org; 7 Aug 2022 11:22:45 +0000 Received: from localhost ([127.0.0.1]:36063 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oKeMm-0000TO-LK for submit@debbugs.gnu.org; Sun, 07 Aug 2022 07:22:44 -0400 Received: from knopi.disroot.org ([178.21.23.139]:55070) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oKeMl-0000TG-3S for 57031@debbugs.gnu.org; Sun, 07 Aug 2022 07:22:43 -0400 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 7704044F71; Sun, 7 Aug 2022 13:22:42 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id BMc5quHDxtvw; Sun, 7 Aug 2022 13:22:41 +0200 (CEST) Mime-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1659871361; bh=n8+989l7TlR7dcmumOS3J0LGbhOv2e80OxniX/nZynQ=; h=Date:Subject:From:To:References:In-Reply-To; b=QIrQ+HFKmJ2qhSxmuNsyoH1TiCn6yUPzV67U77xMXbt2wIt0us9P4Na7kJJFYnMJw vR6ZO2RUc4PKcyusDy9UKornwpmzsPU9nzombvOEPN1Ka/GxX5FWlqiuHlN1KMHd5T 2cOUkDWofo52NttaoLQdZC3CGGoU0MQUtVxYKRIkHbVO8yXxFbC38cfoetGfcCh7ZR 54IzA9BBnkSvFn/1VJqJN8w/ni6NU/Hi/GFA45P4csKJVIW7nuty/wY+6TBDW89I5j NbRav3SKWfNuplaqim5Pat25BDHeZ3ZiDB6mQKQLNj1OpdCvrJxw5W+23d9ilayaTS W1SsC4vEW3FFw== Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Sun, 07 Aug 2022 12:22:41 +0100 Message-Id: Subject: Re: [PATCH v2] scripts: Show a hint the first time some commands are run as root. From: "(" To: "(" , <57031@debbugs.gnu.org> References: <20220807111929.15617-1-paren@disroot.org> In-Reply-To: <20220807111929.15617-1-paren@disroot.org> X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 57031 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) This patch tries to solve the same problem as #57016, except instead of bailing out on `sudo guix pull`, `sudo guix package`, or similar, it displays a hint the first time they are run advising users that Guix's package management is per-user. -- ( From debbugs-submit-bounces@debbugs.gnu.org Mon Sep 05 17:11:21 2022 Received: (at 57031) by debbugs.gnu.org; 5 Sep 2022 21:11:21 +0000 Received: from localhost ([127.0.0.1]:49058 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oVJNJ-0002uF-68 for submit@debbugs.gnu.org; Mon, 05 Sep 2022 17:11:21 -0400 Received: from eggs.gnu.org ([209.51.188.92]:54064) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oVJNH-0002u2-GD for 57031@debbugs.gnu.org; Mon, 05 Sep 2022 17:11:19 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:40640) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oVJNC-0002yl-3g; Mon, 05 Sep 2022 17:11:14 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-Version:In-Reply-To:Date:References:Subject:To: From; bh=ZfuHBFKHKKcDt0YvsoliiCRGoUaD2rmrRcuTh6xMJBY=; b=ZbsPdolsDjyMA1OL3yTy pp7N+CyWa7J5Izaeb06rD7G2LurEl1G0jVkVDbgGiHfew4DEMVgdBWo7IuSeaD3T0hT31rcoov3QO EGxE9cons6CnGVvgb2HnZXK5v2CplScGkJ9IXTkv5LXPJsL0Jgh3ZwTDpzgWBjHsGivpO+G3QYlwk drU4zV3s3P6vpD9gsMyFSikbs2jgpi+V7k5wAAcRP3/QjH9U14XmgOS1NTKecreSzq5Tpb0tEx8ME UKE2xVlMl0rCctg5BPRlZD27f+E4EBOkddFgInm/bYS9QaqQGFUAUV3xKS5RsjKgxbvc1TtyBsJef THe3wZTWrE0acA==; Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=33234 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oVJNB-0003qE-NW; Mon, 05 Sep 2022 17:11:13 -0400 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: "(" Subject: Re: bug#57031: [PATCH] scripts: Show a hint the first time some commands are run as root. References: <20220807111421.14771-1-paren@disroot.org> <20220807111929.15617-1-paren@disroot.org> Date: Mon, 05 Sep 2022 23:11:11 +0200 In-Reply-To: <20220807111929.15617-1-paren@disroot.org> (paren@disroot.org's message of "Sun, 7 Aug 2022 12:19:29 +0100") Message-ID: <87tu5l1q8g.fsf_-_@gnu.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 57031 Cc: 57031@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Hello, "(" skribis: > * guix/scripts/shell.scm (hint-given?, hint-directory, hint-file, > record-hint): Move these... > * guix/ui.scm: ...here. Export them. > * guix/scripts/package.scm (guix-package*): Add `#:root-hint?` keyword > argument. Display a hint if Guix is being run as root and `root-hint?` > is #t. > * guix/scripts/install.scm (guix-install): Use `#:root-hint? #t` here... > * guix/scripts/remove.scm (guix-remove): ...here... > * guix/scripts/upgrade.scm (guix-upgrade): ...and here. > * guix/scripts/pull.scm (guix-pull): (guix-pull): Display a hint if > Guix is being run as root. > > A pretty common beginner mistake, it seems, is assuming that since > every other package manager you've used requires root for installing, > removing, and upgrading packages, Guix must too. > > This commit tries to make it harder to make such an assumption, by > making commands such as `pull`, `package`, and `upgrade` display > a hint the first time they are run as root. I like this change! One nitpick: Could you make moving the hint code from shell.scm to ui.scm a separate commit? [...] > + (display-hint (G_ "`guix pull' is user-specific, not system-wid= e; > +running it as root will only affect the `root' user."))) Please use Texinfo markup in hints: @command{guix pull}, etc. (Likewise for the second hint.) > +(define* (guix-package* opts #:key (root-hint? #f)) > "Run the 'guix package' command on OPTS, an alist resulting for comman= d-line > -option processing with 'parse-command-line'." > +option processing with 'parse-command-line'. If ROOT-HINT? is #T, a hin= t is > +shown on the first usage of this procedure that informs users about Guix= 's > +support for per-user package management." > (with-error-handling > + (when (and root-hint? > + (not (hint-given? 'package-root-hint)) > + (=3D (getuid) 0)) Unless I=E2=80=99m mistaken, =E2=80=98root-hint?=E2=80=99 is always true; s= hould we just remove it? BTW, when running =E2=80=98sudo guix install=E2=80=99, the hint is going to ~root/.cache/guix, right? Thanks, Ludo=E2=80=99. From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 11 09:05:54 2022 Received: (at 57031) by debbugs.gnu.org; 11 Sep 2022 13:05:55 +0000 Received: from localhost ([127.0.0.1]:41093 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oXMeo-0006bs-LW for submit@debbugs.gnu.org; Sun, 11 Sep 2022 09:05:54 -0400 Received: from knopi.disroot.org ([178.21.23.139]:48676) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oXMem-0006bg-0g for 57031@debbugs.gnu.org; Sun, 11 Sep 2022 09:05:52 -0400 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 5696D4A040; Sun, 11 Sep 2022 15:05:50 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 3lpcZEERd2ZL; Sun, 11 Sep 2022 15:05:49 +0200 (CEST) Mime-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1662901529; bh=BpKEM/V0i+MGA3vyE0OH71E1xJcRSoUKVxuJiZ/mJQM=; h=Date:Cc:Subject:From:To:References:In-Reply-To; b=c/+7o62iP0r7S3mMhKpyc3llpcSvWX+1tFKtJLwqYucU2p35D0W7+0Bvr3G4uo0u8 iWt38OHHN9OrAym5s3rhOHEw769WHBYIHQ5WODhFrddSm2PCahTIwcJg2wVBtsC8QI f09rkxTXa9ZRTF8s4InaFnPmCWHhbo2dvCnlCKA4GYQBsibXXDjrGW/03Og1fxt3vh ltH8rEmtsLpsO0hMjlbDbYsU14DPq1vx9poQghD4iVJSaNRAVO4O6+geO86bnWE54s V940DgEpZUtxjFGVZnHbmHzG8AeB0Gsi6/aNDQxIRSYXsTT5zEj8qb/Sbg852XT2t0 qojhOKsukmqTA== Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Sun, 11 Sep 2022 14:05:28 +0100 Message-Id: Subject: Re: bug#57031: [PATCH] scripts: Show a hint the first time some commands are run as root. From: "(" To: =?utf-8?q?Ludovic_Court=C3=A8s?= References: <20220807111421.14771-1-paren@disroot.org> <20220807111929.15617-1-paren@disroot.org> <87tu5l1q8g.fsf_-_@gnu.org> In-Reply-To: <87tu5l1q8g.fsf_-_@gnu.org> X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 57031 Cc: 57031@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) Hey Ludo, On Mon Sep 5, 2022 at 10:11 PM BST, Ludovic Court=C3=A8s wrote: > One nitpick: Could you make moving the hint code from shell.scm to > ui.scm a separate commit? Sure! > > + (display-hint (G_ "`guix pull' is user-specific, not system-w= ide; > > +running it as root will only affect the `root' user."))) > > Please use Texinfo markup in hints: @command{guix pull}, etc. (Likewise > for the second hint.) Oh, I didn't realize you could do that. > > +(define* (guix-package* opts #:key (root-hint? #f)) > > "Run the 'guix package' command on OPTS, an alist resulting for comm= and-line > > -option processing with 'parse-command-line'." > > +option processing with 'parse-command-line'. If ROOT-HINT? is #T, a h= int is > > +shown on the first usage of this procedure that informs users about Gu= ix's > > +support for per-user package management." > > (with-error-handling > > + (when (and root-hint? > > + (not (hint-given? 'package-root-hint)) > > + (=3D (getuid) 0)) > > Unless I=E2=80=99m mistaken, =E2=80=98root-hint?=E2=80=99 is always true;= should we just remove > it? No, it's not always true; we don't use `#:root-hint #t' in `guix search' an= d `guix show', so that `sudo guix show foobar' doesn't trigger the root hint. > BTW, when running =E2=80=98sudo guix install=E2=80=99, the hint is going = to > ~root/.cache/guix, right? Probably -.o.- -- ( From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 11 15:59:51 2022 Received: (at 57031) by debbugs.gnu.org; 11 Sep 2022 19:59:51 +0000 Received: from localhost ([127.0.0.1]:43610 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oXT7P-0006Nx-3g for submit@debbugs.gnu.org; Sun, 11 Sep 2022 15:59:51 -0400 Received: from knopi.disroot.org ([178.21.23.139]:59702) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oXT7N-0006Nl-23 for 57031@debbugs.gnu.org; Sun, 11 Sep 2022 15:59:49 -0400 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 33C224A06A; Sun, 11 Sep 2022 21:59:48 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ClGgwd7ye4Vc; Sun, 11 Sep 2022 21:59:46 +0200 (CEST) From: "(" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1662926386; bh=59Y8FNHYI47zfC+7QOGV/W/vMtqsFtjf/5X+93Cf7yo=; h=From:To:Cc:Subject:Date; b=h+C2SlGEcMApc/ciK39iTaSHPJ1ALuSXQ2oHJ2PhAugrIy8BrePKXXyi9vS8H6+Oj WPl5xTpA6YZAsgb2KSVRwCZ9tmAETJSz3e6kf+rlOEDPAnrxD97mcI78UwT/8tA/k/ NngByrDG9ZhREVpkT1isriGySsJyl/SYOyZ2gnAG6/x79H/pgNADqt5NMH2TmtNiWR PUlW5D+Ex1JjfC6/y0EDy/nQP1bNSfL+t8uX8AM1YWmZ1FWjC+bJNKl8dHhddbMjBG XrVK2r7UxeZOFkc2W5hS5E49TLWVNBX6CEiUlLExYfNtdrbXxMwtpM/zCW630jw7Sp E5f/tf7kVuvGw== To: 57031@debbugs.gnu.org Subject: [PATCH v2 1/2] ui: Make one-time hint API public. Date: Sun, 11 Sep 2022 20:59:40 +0100 Message-Id: <20220911195941.8442-1-paren@disroot.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 1.0 (+) X-Debbugs-Envelope-To: 57031 Cc: "\(" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) * guix/scripts/shell.scm (hint-directory, hint-file, record-hint, hint-given?): Move these... * guix/ui.scm (hint-directory, hint-file, record-hint, hint-given?): ...here. --- guix/scripts/shell.scm | 23 ----------------------- guix/ui.scm | 29 +++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/guix/scripts/shell.scm b/guix/scripts/shell.scm index c115a00320..3ac7d80eb0 100644 --- a/guix/scripts/shell.scm +++ b/guix/scripts/shell.scm @@ -489,29 +489,6 @@ (define (validated-spec spec) (exp (pretty-print exp port))))) - -;;; -;;; One-time hints. -;;; - -(define (hint-directory) - "Return the directory name where previously given hints are recorded." - (string-append (cache-directory #:ensure? #f) "/hints")) - -(define (hint-file hint) - "Return the name of the file that marks HINT as already printed." - (string-append (hint-directory) "/" (symbol->string hint))) - -(define (record-hint hint) - "Mark HINT as already given." - (let ((file (hint-file hint))) - (mkdir-p (dirname file)) - (close-fdes (open-fdes file (logior O_CREAT O_WRONLY))))) - -(define (hint-given? hint) - "Return true if HINT was already given." - (file-exists? (hint-file hint))) - (define-command (guix-shell . args) (category development) diff --git a/guix/ui.scm b/guix/ui.scm index dad2b853ac..3512c761d2 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -19,6 +19,7 @@ ;;; Copyright © 2018 Steve Sprang ;;; Copyright © 2022 Taiju HIGASHI ;;; Copyright © 2022 Liliana Marie Prikler +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -137,6 +138,11 @@ (define-module (guix ui) switch-to-generation* delete-generation* + hint-directory + hint-file + record-hint + hint-given? + %default-message-language current-message-language @@ -2057,6 +2063,29 @@ (define* (package-specification->name+version+output spec (package-name->name+version name))) (values name version sub-drv))) + +;;; +;;; One-time hints. +;;; + +(define (hint-directory) + "Return the directory name where previously given hints are recorded." + (string-append (cache-directory #:ensure? #f) "/hints")) + +(define (hint-file hint) + "Return the name of the file that marks HINT as already printed." + (string-append (hint-directory) "/" (symbol->string hint))) + +(define (record-hint hint) + "Mark HINT as already given." + (let ((file (hint-file hint))) + (mkdir-p (dirname file)) + (close-fdes (open-fdes file (logior O_CREAT O_WRONLY))))) + +(define (hint-given? hint) + "Return true if HINT was already given." + (file-exists? (hint-file hint))) + ;;; ;;; Command-line option processing. -- 2.37.3 From debbugs-submit-bounces@debbugs.gnu.org Sun Sep 11 15:59:55 2022 Received: (at 57031) by debbugs.gnu.org; 11 Sep 2022 19:59:55 +0000 Received: from localhost ([127.0.0.1]:43612 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oXT7S-0006OE-L6 for submit@debbugs.gnu.org; Sun, 11 Sep 2022 15:59:55 -0400 Received: from knopi.disroot.org ([178.21.23.139]:60004) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oXT7O-0006Nq-7m for 57031@debbugs.gnu.org; Sun, 11 Sep 2022 15:59:51 -0400 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 89CC74A05F; Sun, 11 Sep 2022 21:59:49 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id IU8JOtr7iJe5; Sun, 11 Sep 2022 21:59:48 +0200 (CEST) From: "(" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1662926386; bh=2OIz/g1AGKdN7bhp06i5QfSAegwJ3pRM6+GN+a7vxZg=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=MVV/X8yp+FJg4cM9StVUsBH3EMoCaw2baMHZoj3+ZoDJs0/AIE2l2vZMHXHEg/x8I 5tbSpwTPa6hixMN+y+FKNFOefRGEEXMF0bcWgQfwOEuTbsOKwYciLdjZu7YvFW7s9W WEZC0uzjvve/Yz6RaEhBapG7Pn4/JZKZvVB4MRTae+msTSE/lsvE6KiuprcFYI2skg CIvlXjBVHLbK+Z5BGv2OtvdFGPl+SqNkwi4AA0wrxWRqngX9T+nHHGbo/Ybgz5qsJC utxlV930PAz7iOFUBAtig9JCOlot+UgPCaY3rJmw5Enj/gbJnus4c22SBCylQ5HtSX j0KQ/P9DVlCOA== To: 57031@debbugs.gnu.org Subject: [PATCH v2 2/2] scripts: Warn the first time pull or package is run as root. Date: Sun, 11 Sep 2022 20:59:41 +0100 Message-Id: <20220911195941.8442-2-paren@disroot.org> In-Reply-To: <20220911195941.8442-1-paren@disroot.org> References: <20220911195941.8442-1-paren@disroot.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 3.0 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: * guix/scripts/pull.scm (guix-pull): Warn the first time it's being run as root. * guix/scripts/package.scm (guix-package*): Likewise if the new `root-hint?' argument is `#t'. (guix-package): Use `#:r [...] Content analysis details: (3.0 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.0 FROM_ONE_CHAR Bogus FROM name 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: jpoiret.xyz (xyz)] -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: 57031 Cc: "\(" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.0 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: * guix/scripts/pull.scm (guix-pull): Warn the first time it's being run as root. * guix/scripts/package.scm (guix-package*): Likewise if the new `root-hint?' argument is `#t'. (guix-package): Use `#:r [...] Content analysis details: (2.0 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.0 FROM_ONE_CHAR Bogus FROM name 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: jpoiret.xyz (xyz)] -0.0 T_SCC_BODY_TEXT_LINE No description available. -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager * guix/scripts/pull.scm (guix-pull): Warn the first time it's being run as root. * guix/scripts/package.scm (guix-package*): Likewise if the new `root-hint?' argument is `#t'. (guix-package): Use `#:root-hint? #t' in invocation of `guix-package*'. * guix/scripts/install.scm (guix-install): Likewise. * guix/scripts/remove.scm (guix-remove): Likewise. * guix/scripts/remove.scm (guix-upgrade): Likewise. A pretty common beginner mistake, it seems, is assuming that since every other package manager you've used requires root for installing, removing, and upgrading packages, Guix must too. This commit tries to make it harder to make such an assumption, by making commands such as `pull`, `package`, and `upgrade` display a warning the first time they are run as root. --- guix/scripts/install.scm | 3 ++- guix/scripts/package.scm | 15 ++++++++++++--- guix/scripts/pull.scm | 6 ++++++ guix/scripts/remove.scm | 3 ++- guix/scripts/upgrade.scm | 3 ++- 5 files changed, 24 insertions(+), 6 deletions(-) diff --git a/guix/scripts/install.scm b/guix/scripts/install.scm index 63e625f266..bf11fc7b11 100644 --- a/guix/scripts/install.scm +++ b/guix/scripts/install.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019, 2020 Ludovic Courtès +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -80,4 +81,4 @@ (define opts (list %package-default-options #f) #:argument-handler handle-argument)) - (guix-package* opts)) + (guix-package* opts #:root-hint? #t)) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index 7ba2661bbb..7379e69388 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -12,6 +12,7 @@ ;;; Copyright © 2018 Steve Sprang ;;; Copyright © 2022 Josselin Poiret ;;; Copyright © 2022 Antero Mejr +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -1079,12 +1080,20 @@ (define opts (parse-command-line args %options (list %default-options #f) #:argument-handler handle-argument)) - (guix-package* opts)) + (guix-package* opts #:root-hint? #t)) -(define (guix-package* opts) +(define* (guix-package* opts #:key (root-hint? #f)) "Run the 'guix package' command on OPTS, an alist resulting for command-line -option processing with 'parse-command-line'." +option processing with 'parse-command-line'. If ROOT-HINT? is #T, a hint is +shown on the first usage of this procedure that informs users about Guix's +support for per-user package management." (with-error-handling + (when (and root-hint? + (not (hint-given? 'package-root-hint)) + (zero? (getuid))) + (record-hint 'package-root-hint) + (warning (G_ "this command is user-specific, so running it as root \ +will affect only the 'root' user~%"))) (or (process-query opts) (parameterize ((%store (open-connection)) (%graft? (assoc-ref opts 'graft?))) diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index 19224cf70b..188b632450 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013-2015, 2017-2022 Ludovic Courtès ;;; Copyright © 2017 Marius Bakke ;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -827,6 +828,11 @@ (define (no-arguments arg _) (leave (G_ "~A: extraneous argument~%") arg)) (with-error-handling + (when (and (not (hint-given? 'pull-root-hint)) + (zero? (getuid))) + (record-hint 'pull-root-hint) + (warning (G_ "this command is user-specific, so running it as root \ +will affect only the 'root' user~%"))) (with-git-error-handling (let* ((opts (parse-command-line args %options (list %default-options) diff --git a/guix/scripts/remove.scm b/guix/scripts/remove.scm index a46ad04d56..131649eace 100644 --- a/guix/scripts/remove.scm +++ b/guix/scripts/remove.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019, 2020 Ludovic Courtès +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -76,4 +77,4 @@ (define opts (list %package-default-options #f) #:argument-handler handle-argument)) - (guix-package* opts)) + (guix-package* opts #:root-hint? #t)) diff --git a/guix/scripts/upgrade.scm b/guix/scripts/upgrade.scm index beb59cbe6f..dd14600fe4 100644 --- a/guix/scripts/upgrade.scm +++ b/guix/scripts/upgrade.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2019, 2020 Ludovic Courtès ;;; Copyright © 2020 Jakub Kądziołka ;;; Copyright © 2020 Simon Tournier +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -87,4 +88,4 @@ (define opts #f) #:argument-handler handle-argument)) - (guix-package* opts)) + (guix-package* opts #:root-hint? #t)) -- 2.37.3 From debbugs-submit-bounces@debbugs.gnu.org Wed Oct 26 18:53:09 2022 Received: (at submit) by debbugs.gnu.org; 26 Oct 2022 22:53:09 +0000 Received: from localhost ([127.0.0.1]:55477 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1onpGn-0002hS-B5 for submit@debbugs.gnu.org; Wed, 26 Oct 2022 18:53:09 -0400 Received: from lists.gnu.org ([209.51.188.17]:49216) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1onpGl-0002hF-MW for submit@debbugs.gnu.org; Wed, 26 Oct 2022 18:53:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1onpGl-0005Ok-FP for guix-patches@gnu.org; Wed, 26 Oct 2022 18:53:07 -0400 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1onpGj-0001OC-MF for guix-patches@gnu.org; Wed, 26 Oct 2022 18:53:07 -0400 Received: by mail-wr1-x435.google.com with SMTP id w14so4670877wru.8 for ; Wed, 26 Oct 2022 15:53:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:from:to:cc:subject:date:message-id :reply-to; bh=JV1yqY6C+F7cj3clF1shYHjJCMupUjrla+Weq/KAS50=; b=jQ2ve+ISYfHroaw9Hhm33gIH9W7c0mDUx1cY0F31iGCB3fgGDu9vGHcWsk/evSk65c l9i49WXDH+hdPU3yRk/FhiDjgxNmLtKNLVvnnD+jElAWNw7Q3+JLUJcyCdx3Q7i8K0cF nepoXvtt8cbvo5W3SvfV9k5/Vf7KpETGWt/YethLYFhlLMy0axxLf2r+XkemxgrRdYN3 svg2DhEOeEgD5PgQpGVO+6o4S4gxgdBkGXZOCEEI0YSPnzHZB/ZMW+cEBDIxG1UWZ4Fm uiQFRmUYhRAgtBAVlV5Y72qKD92mw8ZUERavUEIFXnI8YBnoOLdQ2FYlZ/TTr6DBndDz PFbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=JV1yqY6C+F7cj3clF1shYHjJCMupUjrla+Weq/KAS50=; b=Pc19CdogxjSsuHTM6yANjEwdkAxj0DZA1vjwli2gmSwwhLon6jgwAJo6vwqGRVuMFf /sYOwCrgsmpHmYRlp4eyJOt9YuYmEe8u9mbA3DnEqPZcAuTPH1xj+MNzOFH6GcdOwKKR rP0t1SVImjda22iAqClWNTtKNPxhEa/MqrSwPzkZsRVxO45cG+N8L9bkpHVDcWLd51NT kLWFB8pXJhMgEg290Pk5bgqC8BtaAF0oA3KCv1W8rXuaj0qp6zG+y3h5z6oxoTpsebbD z9m7ePdonaS/u0vdcYygIztWcZm8vy/2F5pIos0yEi8cfVlBTt72vk86K3/PkIG3fmZI CI7g== X-Gm-Message-State: ACrzQf1iKff1DUWHabHgfyskTG5oaPd3eQUoprcDOBZnX/sWoi8iA4RK LyGV54J74ukwpoIDBoD3GpU= X-Google-Smtp-Source: AMsMyM5gLubu45+Be+t6IC3STO0hpRQKnuPUJqa9En85SJq1JqU+ssrLLP4z7H7d6JBu6P2uVM/ihQ== X-Received: by 2002:adf:f68a:0:b0:236:6e9b:dc91 with SMTP id v10-20020adff68a000000b002366e9bdc91mr13168774wrp.207.1666824782074; Wed, 26 Oct 2022 15:53:02 -0700 (PDT) Received: from lili ([2a01:e0a:59b:9120:65d2:2476:f637:db1e]) by smtp.gmail.com with ESMTPSA id l8-20020a5d4808000000b002345cb2723esm6195458wrq.17.2022.10.26.15.53.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 26 Oct 2022 15:53:01 -0700 (PDT) From: zimoun To: "( via Guix-patches via" , 57031@debbugs.gnu.org Subject: Re: [bug#57031] [PATCH v2 2/2] scripts: Warn the first time pull or package is run as root. In-Reply-To: <20220911195941.8442-2-paren@disroot.org> References: <20220911195941.8442-1-paren@disroot.org> <20220911195941.8442-2-paren@disroot.org> Date: Wed, 26 Oct 2022 20:14:49 +0200 Message-ID: <86lep2jvty.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Received-SPF: pass client-ip=2a00:1450:4864:20::435; envelope-from=zimon.toutoune@gmail.com; helo=mail-wr1-x435.google.com X-Spam_score_int: -4 X-Spam_score: -0.5 X-Spam_bar: / X-Spam_report: (-0.5 / 5.0 requ) BAYES_00=-1.9, DATE_IN_PAST_03_06=1.592, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Spam-Score: -0.3 (/) X-Debbugs-Envelope-To: submit Cc: "\(" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.3 (-) Hi, On Sun, 11 Sep 2022 at 20:59, "\( via Guix-patches" via wrote: > * guix/scripts/pull.scm (guix-pull): Warn the first time it's being > run as root. > * guix/scripts/package.scm (guix-package*): Likewise if the new > `root-hint?' argument is `#t'. > (guix-package): Use `#:root-hint? #t' in invocation of `guix-package*'. > * guix/scripts/install.scm (guix-install): Likewise. > * guix/scripts/remove.scm (guix-remove): Likewise. > * guix/scripts/remove.scm (guix-upgrade): Likewise. > > A pretty common beginner mistake, it seems, is assuming that since > every other package manager you've used requires root for installing, > removing, and upgrading packages, Guix must too. > > This commit tries to make it harder to make such an assumption, by > making commands such as `pull`, `package`, and `upgrade` display > a warning the first time they are run as root. This patch LGTM aside=E2=80=A6 > - (guix-package* opts)) > + (guix-package* opts #:root-hint? #t)) [...] > - (guix-package* opts)) > + (guix-package* opts #:root-hint? #t)) [...] > -(define (guix-package* opts) > +(define* (guix-package* opts #:key (root-hint? #f)) Why this =E2=80=99root-hint?=E2=80=99 argument? Is it useful or can we dro= p it? > + (when (and root-hint? > + (not (hint-given? 'package-root-hint)) > + (zero? (getuid))) > + (record-hint 'package-root-hint) > + (warning (G_ "this command is user-specific, so running it as root= \ > +will affect only the 'root' user~%"))) [...] > + (when (and (not (hint-given? 'pull-root-hint)) > + (zero? (getuid))) > + (record-hint 'pull-root-hint) > + (warning (G_ "this command is user-specific, so running it as root= \ > +will affect only the 'root' user~%"))) It looks pretty similar. Is it possible to avoid the duplication? Cheers, simon From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 27 01:52:54 2022 Received: (at submit) by debbugs.gnu.org; 27 Oct 2022 05:52:54 +0000 Received: from localhost ([127.0.0.1]:55934 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1onvoz-0005Yx-LF for submit@debbugs.gnu.org; Thu, 27 Oct 2022 01:52:53 -0400 Received: from lists.gnu.org ([209.51.188.17]:38986) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1onvoy-0005Yq-3u for submit@debbugs.gnu.org; Thu, 27 Oct 2022 01:52:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1onvoq-0006Ca-DL for guix-patches@gnu.org; Thu, 27 Oct 2022 01:52:48 -0400 Received: from knopi.disroot.org ([178.21.23.139]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1onvoo-0004UZ-4x for guix-patches@gnu.org; Thu, 27 Oct 2022 01:52:44 -0400 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 64C684E735; Thu, 27 Oct 2022 07:52:38 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id OMjDqZlUFB0a; Thu, 27 Oct 2022 07:52:37 +0200 (CEST) Mime-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1666849957; bh=3rAD1/KyJ69qz8QIvl9pzAPsYF/pcTUPIW0AT/nbCDw=; h=Date:Subject:From:To:References:In-Reply-To; b=b+/qMCfrgHsTEPbebTZLaWcYr8dYIeLKdEJBl3VEY5yxb50ETruPwu18zwZHj6xWP yKX5aG/3r8BaY6Tt7bITWOzgCffgg5FmujVEhKjntEhIfKb6uBroQ5OM7NrlGp1Fun XvLGZdEu/nfYBUXeC/T0hvatpCHpq/0b89EeTcfU8yzQZ5qRmv/9CfZ9kjTTaACQVm bM816vbSVTm+Mo/+t5/ZbHgDZGxmcHB2L/GSDD91qr6AsrcIgEoAhaCi9EisUVm5uj zs2qT3Qh67HK5obmGoaMgwDtpbn7DjR0gAL/Mcalr0u0AGMk6Ytkr382OOvhW2Zgvv MbWh/LnIgOh9A== Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Thu, 27 Oct 2022 06:52:36 +0100 Message-Id: Subject: Re: [bug#57031] [PATCH v2 2/2] scripts: Warn the first time pull or package is run as root. From: "(" To: "zimoun" , "( via Guix-patches via" , <57031@debbugs.gnu.org> References: <20220911195941.8442-1-paren@disroot.org> <20220911195941.8442-2-paren@disroot.org> <86lep2jvty.fsf@gmail.com> In-Reply-To: <86lep2jvty.fsf@gmail.com> Received-SPF: pass client-ip=178.21.23.139; envelope-from=paren@disroot.org; helo=knopi.disroot.org X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Heya, On Wed Oct 26, 2022 at 7:14 PM BST, zimoun wrote: > > - (guix-package* opts)) > > + (guix-package* opts #:root-hint? #t)) > > [...] > > > - (guix-package* opts)) > > + (guix-package* opts #:root-hint? #t)) > > [...] > > > -(define (guix-package* opts) > > +(define* (guix-package* opts #:key (root-hint? #f)) > > Why this =E2=80=99root-hint?=E2=80=99 argument? Is it useful or can we d= rop it? This allows us to disable root hints for ``guix package'' variants, so eg ``sudo guix show'' will not trigger the root hint. > > + (when (and root-hint? > > + (not (hint-given? 'package-root-hint)) > > + (zero? (getuid))) > > + (record-hint 'package-root-hint) > > + (warning (G_ "this command is user-specific, so running it as ro= ot \ > > +will affect only the 'root' user~%"))) > > [...] > > > + (when (and (not (hint-given? 'pull-root-hint)) > > + (zero? (getuid))) > > + (record-hint 'pull-root-hint) > > + (warning (G_ "this command is user-specific, so running it as ro= ot \ > > +will affect only the 'root' user~%"))) > > It looks pretty similar. Is it possible to avoid the duplication? ...I guess? Maybe we could do something like this?: ;;;; guix/scripts.scm (define (warn-if-root hint-name) (when (and (not (hint-given hint-name)) (zero? (getuid))) (record-hint hint-name) (warning (G_ "this command is user-specific, so running it as root \ > > +will affect only the 'root' user~%")))) ;;;; guix/scripts/package.scm (when root-hint? (warn-if-root 'package-root-hint)) ;;;; guix/scripts/pull.scm (warn-if-root 'pull-root-hint) -- ( From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 27 15:42:56 2022 Received: (at 57031) by debbugs.gnu.org; 27 Oct 2022 19:42:56 +0000 Received: from localhost ([127.0.0.1]:59415 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oo8mF-00073M-Qc for submit@debbugs.gnu.org; Thu, 27 Oct 2022 15:42:56 -0400 Received: from knopi.disroot.org ([178.21.23.139]:57158) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oo8mE-000737-CO for 57031@debbugs.gnu.org; Thu, 27 Oct 2022 15:42:55 -0400 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id CB1744E81B; Thu, 27 Oct 2022 21:42:52 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with UTF8SMTP id C6BIFCH-tePl; Thu, 27 Oct 2022 21:42:51 +0200 (CEST) From: "(" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1666899770; bh=aD82VbXMexYv2POWO4x3TPxE3rTnQJpkD/WFHqo4aWg=; h=From:To:Cc:Subject:Date; b=R0icBIqSQ7bs4r82geWg6sj/E5XY71hD1l0rkHQtoRlbGz+0tyGiXDU0lV3HWro+U RXlMfT/MT/kyKU6MqZi2ORu/pFOSSUbHNMzmClEcK62biBMTqvbkgCLlPv2xUM0Z9L TO8yJmVQMGax0Nc4FGQkh90q4XiBOKNGMepQhCuUg8YLyKkzW3drFSZLxgFbO9RYIW uuKKOzK3n5gEjHCqJeqH4ZdAUL3GYX9jHLx8cG3K9P8hEkChORh9ai7ab9gXqVj1LI Aq7cQLybf0iVAYQguyM2sAbDiGOzc0RC+DJ4/xOJAl30gfGPyMf13tRIuFiDyoDdhL EAf0QpaEXwVQg== To: 57031@debbugs.gnu.org Subject: [PATCH v3 1/2] ui: Make one-time hint API public. Date: Thu, 27 Oct 2022 20:42:42 +0100 Message-Id: <20221027194243.15612-1-paren@disroot.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 1.3 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: * guix/scripts/shell.scm (hint-directory, hint-file, record-hint, hint-given?): Move these... * guix/ui.scm (hint-directory, hint-file, record-hint, hint-given?): ...here. --- guix/scripts/shell.scm | [...] Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.3 FROM_ONE_CHAR Bogus FROM name -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-Debbugs-Envelope-To: 57031 Cc: "\(" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.3 (/) * guix/scripts/shell.scm (hint-directory, hint-file, record-hint, hint-given?): Move these... * guix/ui.scm (hint-directory, hint-file, record-hint, hint-given?): ...here. --- guix/scripts/shell.scm | 23 ----------------------- guix/ui.scm | 29 +++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/guix/scripts/shell.scm b/guix/scripts/shell.scm index a2836629ad..c66ff4e5c4 100644 --- a/guix/scripts/shell.scm +++ b/guix/scripts/shell.scm @@ -505,29 +505,6 @@ (define (validated-spec spec) (exp (pretty-print exp port))))) - -;;; -;;; One-time hints. -;;; - -(define (hint-directory) - "Return the directory name where previously given hints are recorded." - (string-append (cache-directory #:ensure? #f) "/hints")) - -(define (hint-file hint) - "Return the name of the file that marks HINT as already printed." - (string-append (hint-directory) "/" (symbol->string hint))) - -(define (record-hint hint) - "Mark HINT as already given." - (let ((file (hint-file hint))) - (mkdir-p (dirname file)) - (close-fdes (open-fdes file (logior O_CREAT O_WRONLY))))) - -(define (hint-given? hint) - "Return true if HINT was already given." - (file-exists? (hint-file hint))) - (define-command (guix-shell . args) (category development) diff --git a/guix/ui.scm b/guix/ui.scm index dad2b853ac..3512c761d2 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -19,6 +19,7 @@ ;;; Copyright © 2018 Steve Sprang ;;; Copyright © 2022 Taiju HIGASHI ;;; Copyright © 2022 Liliana Marie Prikler +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -137,6 +138,11 @@ (define-module (guix ui) switch-to-generation* delete-generation* + hint-directory + hint-file + record-hint + hint-given? + %default-message-language current-message-language @@ -2057,6 +2063,29 @@ (define* (package-specification->name+version+output spec (package-name->name+version name))) (values name version sub-drv))) + +;;; +;;; One-time hints. +;;; + +(define (hint-directory) + "Return the directory name where previously given hints are recorded." + (string-append (cache-directory #:ensure? #f) "/hints")) + +(define (hint-file hint) + "Return the name of the file that marks HINT as already printed." + (string-append (hint-directory) "/" (symbol->string hint))) + +(define (record-hint hint) + "Mark HINT as already given." + (let ((file (hint-file hint))) + (mkdir-p (dirname file)) + (close-fdes (open-fdes file (logior O_CREAT O_WRONLY))))) + +(define (hint-given? hint) + "Return true if HINT was already given." + (file-exists? (hint-file hint))) + ;;; ;;; Command-line option processing. base-commit: f928abac369f699f425ddee925d0d0c2dc0a635d -- 2.38.0 From debbugs-submit-bounces@debbugs.gnu.org Thu Oct 27 15:43:00 2022 Received: (at 57031) by debbugs.gnu.org; 27 Oct 2022 19:43:00 +0000 Received: from localhost ([127.0.0.1]:59417 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oo8mK-00073Z-89 for submit@debbugs.gnu.org; Thu, 27 Oct 2022 15:43:00 -0400 Received: from knopi.disroot.org ([178.21.23.139]:57292) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1oo8mE-000738-BE for 57031@debbugs.gnu.org; Thu, 27 Oct 2022 15:42:55 -0400 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 394DF4E821; Thu, 27 Oct 2022 21:42:53 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with UTF8SMTP id SBmJFtkuryEX; Thu, 27 Oct 2022 21:42:51 +0200 (CEST) From: "(" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1666899771; bh=6NEkYhvLxikMziXYAM8sT06+h0t6jC1dinzPnK4aS3Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=NA1TZ0T5MCFYIBlUhyjnvH5Y6qB/wUFrzYwqPBQjqE8h8uXrAX7rQYQiq2aaECETc z2bxSztnqIte62NNWYvZiUfBwGk8XvuYTihquU0BaNC4a7r1bBeOZQvwLz+rSHrHtE TzNbD7zs65bqlFQPlqve3D6VgW0msqgR5Miljz/mlvrRgYfe2HgSE/GrMx7Rt7zsfI cOv9d1r8J2YOv3VIwDngLYMebq+95EvT3AVfSqbp1ieTZHgDxD+f41g7RMxYMl9dMo +ScYbIpBiaO3WlxLJifiya5ebaLqeO59+v44r56g7+atUE0nj631S9cwAn0jRN8Bfl XhTeWGeD/zetg== To: 57031@debbugs.gnu.org Subject: [PATCH v3 2/2] scripts: Warn the first time pull or package is run as root. Date: Thu, 27 Oct 2022 20:42:43 +0100 Message-Id: <20221027194243.15612-2-paren@disroot.org> In-Reply-To: <20221027194243.15612-1-paren@disroot.org> References: <20221027194243.15612-1-paren@disroot.org> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Score: 3.3 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: * guix/ui.scm (root-warning): New variable. * guix/scripts/pull.scm (guix-pull): Warn the first time it's being run as root. * guix/scripts/package.scm (guix-package*): Likewise if the new `root-hint? [...] Content analysis details: (3.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.3 FROM_ONE_CHAR Bogus FROM name -0.0 SPF_PASS SPF: sender matches SPF record 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: jpoiret.xyz (xyz)] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-Debbugs-Envelope-To: 57031 Cc: "\(" X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 2.3 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: * guix/ui.scm (root-warning): New variable. * guix/scripts/pull.scm (guix-pull): Warn the first time it's being run as root. * guix/scripts/package.scm (guix-package*): Likewise if the new `root-hint? [...] Content analysis details: (2.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.3 FROM_ONE_CHAR Bogus FROM name -0.0 SPF_PASS SPF: sender matches SPF record 2.0 PDS_OTHER_BAD_TLD Untrustworthy TLDs [URI: jpoiret.xyz (xyz)] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager * guix/ui.scm (root-warning): New variable. * guix/scripts/pull.scm (guix-pull): Warn the first time it's being run as root. * guix/scripts/package.scm (guix-package*): Likewise if the new `root-hint?' argument is `#t'. (guix-package): Use `#:root-hint? #t' in invocation of `guix-package*'. * guix/scripts/install.scm (guix-install): Likewise. * guix/scripts/remove.scm (guix-remove): Likewise. * guix/scripts/remove.scm (guix-upgrade): Likewise. A pretty common beginner mistake, it seems, is assuming that since every other package manager you've used requires root for installing, removing, and upgrading packages, Guix must too. This commit tries to make it harder to make such an assumption, by making commands such as `pull`, `package`, and `upgrade` display a warning the first time they are run as root. --- guix/scripts/install.scm | 3 ++- guix/scripts/package.scm | 11 ++++++++--- guix/scripts/pull.scm | 2 ++ guix/scripts/remove.scm | 3 ++- guix/scripts/upgrade.scm | 3 ++- guix/ui.scm | 8 ++++++++ 6 files changed, 24 insertions(+), 6 deletions(-) diff --git a/guix/scripts/install.scm b/guix/scripts/install.scm index 63e625f266..bf11fc7b11 100644 --- a/guix/scripts/install.scm +++ b/guix/scripts/install.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019, 2020 Ludovic Courtès +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -80,4 +81,4 @@ (define opts (list %package-default-options #f) #:argument-handler handle-argument)) - (guix-package* opts)) + (guix-package* opts #:root-hint? #t)) diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm index b9090307ac..10cf32475b 100644 --- a/guix/scripts/package.scm +++ b/guix/scripts/package.scm @@ -12,6 +12,7 @@ ;;; Copyright © 2018 Steve Sprang ;;; Copyright © 2022 Josselin Poiret ;;; Copyright © 2022 Antero Mejr +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -1078,12 +1079,16 @@ (define opts (parse-command-line args %options (list %default-options #f) #:argument-handler handle-argument)) - (guix-package* opts)) + (guix-package* opts #:root-hint? #t)) -(define (guix-package* opts) +(define* (guix-package* opts #:key (root-hint? #f)) "Run the 'guix package' command on OPTS, an alist resulting for command-line -option processing with 'parse-command-line'." +option processing with 'parse-command-line'. If ROOT-HINT? is #T, a hint is +shown on the first usage of this procedure that informs users about Guix's +support for per-user package management." (with-error-handling + (when root-hint? + (root-warning 'package-root-hint)) (or (process-query opts) (parameterize ((%store (open-connection)) (%graft? (assoc-ref opts 'graft?))) diff --git a/guix/scripts/pull.scm b/guix/scripts/pull.scm index 7b6c58dbc3..98aaf0b377 100644 --- a/guix/scripts/pull.scm +++ b/guix/scripts/pull.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013-2015, 2017-2022 Ludovic Courtès ;;; Copyright © 2017 Marius Bakke ;;; Copyright © 2020, 2021 Tobias Geerinckx-Rice +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -826,6 +827,7 @@ (define (no-arguments arg _) (leave (G_ "~A: extraneous argument~%") arg)) (with-error-handling + (root-warning 'pull-root-hint) (with-git-error-handling (let* ((opts (parse-command-line args %options (list %default-options) diff --git a/guix/scripts/remove.scm b/guix/scripts/remove.scm index a46ad04d56..131649eace 100644 --- a/guix/scripts/remove.scm +++ b/guix/scripts/remove.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019, 2020 Ludovic Courtès +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -76,4 +77,4 @@ (define opts (list %package-default-options #f) #:argument-handler handle-argument)) - (guix-package* opts)) + (guix-package* opts #:root-hint? #t)) diff --git a/guix/scripts/upgrade.scm b/guix/scripts/upgrade.scm index beb59cbe6f..dd14600fe4 100644 --- a/guix/scripts/upgrade.scm +++ b/guix/scripts/upgrade.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2019, 2020 Ludovic Courtès ;;; Copyright © 2020 Jakub Kądziołka ;;; Copyright © 2020 Simon Tournier +;;; Copyright © 2022 ( ;;; ;;; This file is part of GNU Guix. ;;; @@ -87,4 +88,4 @@ (define opts #f) #:argument-handler handle-argument)) - (guix-package* opts)) + (guix-package* opts #:root-hint? #t)) diff --git a/guix/ui.scm b/guix/ui.scm index 3512c761d2..0f1a603025 100644 --- a/guix/ui.scm +++ b/guix/ui.scm @@ -142,6 +142,7 @@ (define-module (guix ui) hint-file record-hint hint-given? + root-warning %default-message-language current-message-language @@ -2086,6 +2087,13 @@ (define (hint-given? hint) "Return true if HINT was already given." (file-exists? (hint-file hint))) +(define (root-warning hint-name) + (when (and (not (hint-given? hint-name)) + (zero? (getuid))) + (record-hint hint-name) + (warning (G_ "this command is user-specific, so running it as root \ +will affect only the 'root' user~%")))) + ;;; ;;; Command-line option processing. -- 2.38.0 From debbugs-submit-bounces@debbugs.gnu.org Fri Oct 28 04:47:41 2022 Received: (at 57031) by debbugs.gnu.org; 28 Oct 2022 08:47:41 +0000 Received: from localhost ([127.0.0.1]:60345 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ooL1g-00024O-TT for submit@debbugs.gnu.org; Fri, 28 Oct 2022 04:47:41 -0400 Received: from mail-wm1-f53.google.com ([209.85.128.53]:39793) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ooL1a-00023B-Bu for 57031@debbugs.gnu.org; Fri, 28 Oct 2022 04:47:34 -0400 Received: by mail-wm1-f53.google.com with SMTP id i5-20020a1c3b05000000b003cf47dcd316so5954299wma.4 for <57031@debbugs.gnu.org>; Fri, 28 Oct 2022 01:47:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=STSXfoqAmQsYcchJhd2H6IEh0jzU2K4hGNSKO6jVTMM=; b=STMctmXIoL2UwzV41nieBGgPmA+RFp1WKknRDsJ0lMV83o2NZyObGF9BIxPeeUgkPO FTgpdwUFgXklulKjpoCVTfMzdQUKA6K2VGiUT+ulAXxqGvVfkB12VdjGIsH4UXJWzEZ9 z5zvNpp/6coeuP7GKrIC0PtAXVx7sO8h+oxZ58Q231uNRC1CO3F9I8zrULAsuB8DIkb3 TGux9oJe9daJbk6ELDN0hM5xK0L8sy9vQI4x2zamL03Wg01vYvAr6Jynux7F/4DF47xM n1+3DhTrORcx+8IlCXhlm21IPVn4+Uk/Ep5tmpVIpvgwjCVrBjUyoOKqJ9+HgA3iu2Jm YTQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:references :in-reply-to:subject:to:from:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to; bh=STSXfoqAmQsYcchJhd2H6IEh0jzU2K4hGNSKO6jVTMM=; b=6pnkLWIXVTF/q37wq2WF3SDzsGbab2SZhYZijDAwD+Q/TvzFJlpc9drOhUc6f2+jah 9JX6yNfAvIDj5n5PlfAHSlcfh6hiZ1iQFgmUn5DGR6aqBdq/qxIIlPgSYr6QicGvzRA1 wKF0dehmlxd50Ru6IycoBVJJV04Peh0vzjc/jHAozHwr6UErSyn1MZubDiNepxzGIjpb w9GTPa9/MQ6Thcr3I25JWwhSXEn7YL/L+z55D1YFGGfpT1Am/Pf0O03s3Fbq/NPw7CwE 2yI7FJUToEo2n6yGeBxNV03NHb8JNTWECimd98Jk773QUUwiq07ByVxylP7XfT8XAOpz AYUw== X-Gm-Message-State: ACrzQf1qNZyFtF1yIevZJCEQ8I0BkFH6B+Z7QXJvoBEa3ChXcruoIq0X WJgrbyq8vbbiXMUFp7HErkLz9zkigw4= X-Google-Smtp-Source: AMsMyM4HMpSTvydFk9+9SwSNICzhfmSi2eIAvILJuy+bPWTojk+aFu9AupKys8sMv283RAuYC6nLLQ== X-Received: by 2002:a5d:6c6f:0:b0:22e:3fdf:4b27 with SMTP id r15-20020a5d6c6f000000b0022e3fdf4b27mr34576761wrz.150.1666946848593; Fri, 28 Oct 2022 01:47:28 -0700 (PDT) Received: from lili ([2a01:e0a:59b:9120:65d2:2476:f637:db1e]) by smtp.gmail.com with ESMTPSA id j17-20020a05600c191100b003b47b913901sm14793135wmq.1.2022.10.28.01.47.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 28 Oct 2022 01:47:28 -0700 (PDT) From: zimoun To: "(" , 57031@debbugs.gnu.org Subject: Re: [bug#57031] [PATCH v2 2/2] scripts: Warn the first time pull or package is run as root. In-Reply-To: References: <20220911195941.8442-1-paren@disroot.org> <20220911195941.8442-2-paren@disroot.org> <86lep2jvty.fsf@gmail.com> Date: Thu, 27 Oct 2022 10:23:19 +0200 Message-ID: <864jvpbrpk.fsf@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: 0.5 (/) X-Debbugs-Envelope-To: 57031 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.5 (/) Hi, On Thu, 27 Oct 2022 at 06:52, "\( via Guix-patches" via wrote: > On Wed Oct 26, 2022 at 7:14 PM BST, zimoun wrote: >> > - (guix-package* opts)) >> > + (guix-package* opts #:root-hint? #t)) >> >> [...] >> >> > - (guix-package* opts)) >> > + (guix-package* opts #:root-hint? #t)) >> >> [...] >> >> > -(define (guix-package* opts) >> > +(define* (guix-package* opts #:key (root-hint? #f)) >> >> Why this =E2=80=99root-hint?=E2=80=99 argument? Is it useful or can we = drop it? > > This allows us to disable root hints for ``guix package'' variants, so eg > ``sudo guix show'' will not trigger the root hint. Ah, I see. But then, guix package --show=3Dhello would print the hint, no? > ;;;; guix/scripts.scm > > (define (warn-if-root hint-name) > (when (and (not (hint-given hint-name)) > (zero? (getuid))) > (record-hint hint-name) > (warning (G_ "this command is user-specific, so running it as root \ > > > +will affect only the 'root' user~%")))) > > ;;;; guix/scripts/package.scm > > (when root-hint? > (warn-if-root 'package-root-hint)) > > ;;;; guix/scripts/pull.scm > > (warn-if-root 'pull-root-hint) Something like that SGTM. Cheers, simon From debbugs-submit-bounces@debbugs.gnu.org Fri Oct 28 10:45:03 2022 Received: (at 57031) by debbugs.gnu.org; 28 Oct 2022 14:45:03 +0000 Received: from localhost ([127.0.0.1]:34062 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ooQbW-0003TO-Sx for submit@debbugs.gnu.org; Fri, 28 Oct 2022 10:45:03 -0400 Received: from knopi.disroot.org ([178.21.23.139]:48508) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ooQbV-0003Si-2E for 57031@debbugs.gnu.org; Fri, 28 Oct 2022 10:45:01 -0400 Received: from localhost (localhost [127.0.0.1]) by disroot.org (Postfix) with ESMTP id 60DF84E9BB; Fri, 28 Oct 2022 16:45:00 +0200 (CEST) X-Virus-Scanned: SPAM Filter at disroot.org Received: from knopi.disroot.org ([127.0.0.1]) by localhost (disroot.org [127.0.0.1]) (amavisd-new, port 10024) with UTF8SMTP id Fkik95uCoKu0; Fri, 28 Oct 2022 16:44:59 +0200 (CEST) Mime-Version: 1.0 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=disroot.org; s=mail; t=1666967616; bh=t3mlTMtgifZ17SwQ0NhoNV+PcpF4SIZ//dIz7dL++KA=; h=Date:From:To:Subject:References:In-Reply-To; b=YBwER5UfPaiJ1GZxBBQQw417rMbH99RKqvhEHQZobo7h2FkUgGcBcByl9cQGBRmQo U+6MzsYyHGYCYFlL1xUX+0PAEDxt21X8IIS5ZYZ14prW4V8JG1Nf9Pr7/z59yIlHLu dEwIVMC6EKZM+pQjWX8XgiBv5GuzlaxCrL8o/IRR0X3eaDiZubGr+3ShYGR84lTply s9iv2DaBFXS1GzueVwgPLeAgnQaeMJDrkgJFgByUzknwYKmWxKlZnrb1tyx07bsftD a0jq2Zx8yXLxOvDsYEJ7RlOxEpPPAZ17wphl06QTXgqjPLfF6oO0p15GlDhKMsTkyb ldpL2ELuWQTIw== Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=UTF-8 Date: Fri, 28 Oct 2022 15:33:35 +0100 Message-Id: From: "(" To: "zimoun" , <57031@debbugs.gnu.org> Subject: Re: [bug#57031] [PATCH v2 2/2] scripts: Warn the first time pull or package is run as root. References: <20220911195941.8442-1-paren@disroot.org> <20220911195941.8442-2-paren@disroot.org> <86lep2jvty.fsf@gmail.com> <864jvpbrpk.fsf@gmail.com> In-Reply-To: <864jvpbrpk.fsf@gmail.com> X-Spam-Score: 1.3 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On Thu Oct 27, 2022 at 9:23 AM BST, zimoun wrote: > Ah, I see. But then, > > guix package --show=hello > > would print the hint, no? Sadly, yes. I'm not sure how to remedy this, and it doesn't seem too consequential; I've never seen someone using ``--show'' or ``--search'' in practice. Content analysis details: (1.3 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.3 FROM_ONE_CHAR Bogus FROM name -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-Debbugs-Envelope-To: 57031 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.3 (/) On Thu Oct 27, 2022 at 9:23 AM BST, zimoun wrote: > Ah, I see. But then, > > guix package --show=3Dhello > > would print the hint, no? Sadly, yes. I'm not sure how to remedy this, and it doesn't seem too consequential; I've never seen someone using ``--show'' or ``--search'' in practice. -- (