From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id SIA6KlM+HmNEJQAAbAwnHQ (envelope-from ) for ; Sun, 11 Sep 2022 22:00:19 +0200 Received: from aspmx1.migadu.com ([2001:41d0:8:6d80::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id eIJoKVM+HmMcBQEAG6o9tA (envelope-from ) for ; Sun, 11 Sep 2022 22:00:19 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 28DD91E77F for ; Sun, 11 Sep 2022 22:00:19 +0200 (CEST) Received: from localhost ([::1]:56388 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oXT7p-0001FF-Tn for larch@yhetil.org; Sun, 11 Sep 2022 16:00:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53464) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oXT7a-0001Es-Us for guix-patches@gnu.org; Sun, 11 Sep 2022 16:00:03 -0400 Received: from debbugs.gnu.org ([209.51.188.43]:54914) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1oXT7a-0007v2-Lz for guix-patches@gnu.org; Sun, 11 Sep 2022 16:00:02 -0400 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1oXT7a-0006PH-I8 for guix-patches@gnu.org; Sun, 11 Sep 2022 16:00:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#57031] [PATCH v2 2/2] scripts: Warn the first time pull or package is run as root. Resent-From: "(" Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Sun, 11 Sep 2022 20:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 57031 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 57031@debbugs.gnu.org Cc: "\(" Received: via spool by 57031-submit@debbugs.gnu.org id=B57031.166292639524571 (code B ref 57031); Sun, 11 Sep 2022 20:00:02 +0000 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) 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== 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-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" Reply-to: "\(" X-ACL-Warn: , "\( via Guix-patches" From: "\( via Guix-patches" via X-Migadu-Flow: FLOW_IN X-Migadu-To: larch@yhetil.org X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1662926419; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=FdkPqWo9sJV3xuJlpX/Rpnw0T1HuSqNfxTtye4CdWlI=; b=hUihBwtStjIvMBpT2DxkKndscP9KFNioRc+sxVKMqyrT2NGLc9P6bMMRBCf7woj7vIYfhP xdDY8uWfjfRfR0nFTpuSadKN0UAeL4hoLv/nSngdrNxQL8F02jdxDKYqdPyvYmAta0kxCH zigyCgmRZVKhHoNGYjfm2XDCU3UPtPJ4ak/CTRa+h21EF1hECUGFF3AqVCkoGnwQ/gwFSz xgyw3O3wuQeHJLtz2912fLBl6lZMoJrZx4Ie+x2BvugtN/RrP6MQcxHFahZvtAfB64Da1h WKjmo2yUWdxxlRPzszbHaQuF7dEkymx6blkbJG0piHyTS6euF7PaJfoFSeufgg== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1662926419; a=rsa-sha256; cv=none; b=uFyFj4wpEgo3sVdfKAjMSVbtF83NfFAXUtAGMtMq6PGoMTOLVq0O9V702lvTd2Rl0r5lDy CoSAi7HsV8j3Ue1gR5aCTAakHFa4mwVUoGOlVifvPDa2jorXbpGWC+OKhDKJ4b51tsT6H1 IUxOIkIhzEuvqtv2Cn1+2wsHmqFOErlfYto1yhXd3KMvuC3s9QGMYXjsW1KYMDzyeZyRp7 2lD7QOvODWZ09n58dlJQvfdtukCVZdOQDtz+pH3cK/cVltAfqjwKTktZmBCwVAivTFWrGm KHWru8ctzdi/tUYhhnDhyD2+vXb7VNfgt7CIQBu6KepGvqswXc2VpCC6F1kbIQ== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=disroot.org header.s=mail header.b="MVV/X8yp"; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -2.80 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=disroot.org header.s=mail header.b="MVV/X8yp"; dmarc=pass (policy=none) header.from=gnu.org; spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 28DD91E77F X-Spam-Score: -2.80 X-Migadu-Scanner: scn1.migadu.com X-TUID: bQiJI3xN7IXl * 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