GNU bug report logs - #53224
Cookbook recipe about profile collisions

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: guix; Reported by: Leo Famulari <leo@HIDDEN>; dated Thu, 13 Jan 2022 00:13:02 UTC; Maintainer for guix is bug-guix@HIDDEN.

Message received at 53224 <at> debbugs.gnu.org:


Received: (at 53224) by debbugs.gnu.org; 17 Jan 2022 18:14:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jan 17 13:14:13 2022
Received: from localhost ([127.0.0.1]:47938 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1n9WWC-0001Yr-W2
	for submit <at> debbugs.gnu.org; Mon, 17 Jan 2022 13:14:13 -0500
Received: from sender4-op-o14.zoho.com ([136.143.188.14]:17461)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <matt@HIDDEN>) id 1n9WF6-00014c-Kb
 for 53224 <at> debbugs.gnu.org; Mon, 17 Jan 2022 12:56:36 -0500
ARC-Seal: i=1; a=rsa-sha256; t=1642442184; cv=none; 
 d=zohomail.com; s=zohoarc; 
 b=JfvYJEPp6sJtCbY2HLh1Vc/ul0NIrZInGpt+D3IHnsSyv+sUgAXmYvexK6x7coqBOrNTFjBwyK6KffZc16FePzTH2/ViPBBb+9vDCJvdDPLaoPorPBD28m7ANEgBtgqMetmGjJivQZerp6/a8LU0z+E2oQY5vUXLmoWtrc/AROA=
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com;
 s=zohoarc; t=1642442184;
 h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Subject:To;
 bh=zgFBI1IL4DKCzwOIjo4Np6MEqxv7MDTFA+hgxORZoFg=; 
 b=TXkJOaYL1lphjq+KbX3iqaaxXD+gaTDiCIdpX2a2Rocn8gaR+an/SD7H8bYnp3UNyiMG0z1ypc0MRBglvUsqwVw5+b36WSORLDhcLhJaamKCxvdG2+mJyC6L1OoZwhGEnS6QulmLJ1cRg8W1DtfJKAu5BinCzAO2NuNWZlQsrMo=
ARC-Authentication-Results: i=1; mx.zohomail.com;
 dkim=pass  header.i=excalamus.com;
 spf=pass  smtp.mailfrom=matt@HIDDEN;
 dmarc=pass header.from=<matt@HIDDEN>
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1642442184; 
 s=zmail; d=excalamus.com; i=matt@HIDDEN;
 h=Date:From:To:Cc:Message-ID:In-Reply-To:References:Subject:MIME-Version:Content-Type:Content-Transfer-Encoding;
 bh=zgFBI1IL4DKCzwOIjo4Np6MEqxv7MDTFA+hgxORZoFg=;
 b=XrFMvEwfjdh8xXGWOtWkiuGxAB5aeGPdFmpqFa0f38wamdm7o4wHYYY03/rlQX7J
 2vZQkhBUPS/crPcO0lPVpolIhY+phmQQuHYL09VF06OqRLrokcSzOozZtPvBCDInZLU
 tH/Z5+2rtaEkCd4f1TIPw5XjKj0W5PvzxYJ9vk8E=
Received: from mail.zoho.com by mx.zohomail.com
 with SMTP id 1642442181025114.52065913082595;
 Mon, 17 Jan 2022 09:56:21 -0800 (PST)
Date: Mon, 17 Jan 2022 12:56:20 -0500
From: Matt <matt@HIDDEN>
To: =?UTF-8?Q?=22Ludovic_Court=C3=A8s=22?= <ludo@HIDDEN>
Message-ID: <17e692ec987.c9fc5e4191836.2115614241637446332@HIDDEN>
In-Reply-To: <87pmoqo3b7.fsf@HIDDEN>
References: <Yd9uT579+YLI5HIx@HIDDEN> <87v8ym4sav.fsf@HIDDEN>
 <YeHCZgO5c+I36Flr@HIDDEN> <87pmoqo3b7.fsf@HIDDEN>
Subject: Profile definition, was Re: bug#53224: Cookbook recipe about
 profile collisions
MIME-Version: 1.0
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Importance: Medium
User-Agent: Zoho Mail
X-Mailer: Zoho Mail
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 53224
X-Mailman-Approved-At: Mon, 17 Jan 2022 13:14:11 -0500
Cc: guix-devel <guix-devel@HIDDEN>, 53224 <53224 <at> debbugs.gnu.org>,
 Leo Famulari <leo@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)


 ---- On Mon, 17 Jan 2022 09:16:28 -0500 Ludovic Court=C3=A8s <ludo@HIDDEN=
> wrote ----

 > > This person spent a lot of time trying to understand the situation and
 > > writing the blog post, but their understanding is still rather weak.
 >=20
 > To be fair, the person didn=E2=80=99t look for =E2=80=9Cprofile=E2=80=9D=
 in the manual.  I=E2=80=99m not
 > blaming=E2=80=94mentioning it to clarify what it is we=E2=80=99re trying=
 to fix.

With all respect, I *did* look at "profile" in the manual. I spent a lot of=
 time looking and trying to understand things.  I hear you say you're not t=
rying to blame me and I trust that's not your intent.  However, what was sa=
id *does* blame me.  It says what I did and did not do, independent of real=
ity: you are not me and you were not present.  Unfortunately, what was said=
 carries all sorts of judgments and implications (ouch!) which, opposite to=
 your intent, is not fair.=20

I see you want clarification on what we're trying to fix. May I suggest ins=
tead asking, "What problem are we trying to solve?"

I see several problems beyond what I've already said.  However, I'll try to=
 stick to just one that I encountered with the documentation.  Leo is certa=
inly working toward something specific which I suspect is different from wh=
at I see. I'll let them speak for themselves.

I'm going to assume that you probably wanted to ask something like, "It loo=
ks to me like the manual adequately explains profiles.  But, since I'm the =
main architect of this system, maybe I have knowledge that someone new does=
n't have. Person who is confused, are you able to say where you're confused=
?"

I would reply:

There are several places I've been confused. Let me give you a specific exa=
mple.

The manual has at least four places that "profile" is defined:

1.  [[https://guix.gnu.org/en/manual/en/html_node/Getting-Started.html#Gett=
ing-Started][(guix) Getting Started]] says,

#+begin_quote
"A profile is a directory containing installed packages"
#+end_quote

2.  [[https://guix.gnu.org/en/manual/en/html_node/Invoking-guix-package.htm=
l#Invoking-guix-package][(guix) Invoking guix package]] says,

#+begin_quote
"a directory of installed packages"
#+end_quote

and 3, yet in the guix package options:

#+begin_quote
'-p PROFILE'
     Use PROFILE instead of the user's default profile.

     PROFILE must be the name of a file that will be created upon
     completion.  Concretely, PROFILE will be a mere symbolic link
     ("symlink") pointing to the actual profile where packages are
     installed:

          #+begin_example
          $ guix install hello -p ~/code/my-profile
          ...
          $ ~/code/my-profile/bin/hello
          Hello, world!
          #+end_example
#+end_quote

Elsewhere in (guix) Features is a 4th which says,

#+begin_quote
users have their own =E2=80=9Cprofile=E2=80=9D, which points to the package=
s that they actually want to use
#+end_quote

So, is the profile a directory or a pointer file (e.g. symlink)?  I tend to=
 think of a directory as a container, like a manilla folder that contains p=
apers.  To me, something that points is a file that contains a path to anot=
her location.  I see that I used the word "contains" to describe both file =
and directory, so maybe that's a sign to me I'm missing something there.

Regardless, I hope you can see that it's not always clear whether a profile=
 is a directory or a file.  Yes, on Unix-like systems, directories are file=
s. But Guix throws an error if you call =3Dguix package -p=3D with a direct=
ory:

: guix package: error: rename-file: Is a directory

If you follow the symlinks, the profile is indeed a directory; it is a dire=
ctory in the store.  But the way users interact with profiles is

          GUIX_PROFILE=3D"$HOME/.guix-profile"
          . "$GUIX_PROFILE/etc/profile"

which is a file. And there are a bunch of symlinks in general. Those appear=
 to be implementation details. But I think it's reasonable to say the abstr=
action isn't airtight and that, as a user, I have to interact with the impl=
ementation details at some level. Certainly at the documentation level.=20

Leo is 100% correct that my understanding is still rather weak. I'll do my =
best despite that to help make the documentation better.





Information forwarded to bug-guix@HIDDEN:
bug#53224; Package guix. Full text available.

Message received at 53224 <at> debbugs.gnu.org:


Received: (at 53224) by debbugs.gnu.org; 17 Jan 2022 14:16:39 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jan 17 09:16:39 2022
Received: from localhost ([127.0.0.1]:45537 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1n9SoJ-0006bn-1r
	for submit <at> debbugs.gnu.org; Mon, 17 Jan 2022 09:16:39 -0500
Received: from hera.aquilenet.fr ([185.233.100.1]:44872)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1n9SoG-0006bY-HR
 for 53224 <at> debbugs.gnu.org; Mon, 17 Jan 2022 09:16:37 -0500
Received: from localhost (localhost [127.0.0.1])
 by hera.aquilenet.fr (Postfix) with ESMTP id E0DF345A;
 Mon, 17 Jan 2022 15:16:29 +0100 (CET)
X-Virus-Scanned: Debian amavisd-new at aquilenet.fr
Received: from hera.aquilenet.fr ([127.0.0.1])
 by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id qdMw5heExFCI; Mon, 17 Jan 2022 15:16:29 +0100 (CET)
Received: from ribbon (91-160-117-201.subs.proxad.net [91.160.117.201])
 by hera.aquilenet.fr (Postfix) with ESMTPSA id ABEAF2D7;
 Mon, 17 Jan 2022 15:16:28 +0100 (CET)
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: Leo Famulari <leo@HIDDEN>
Subject: Re: bug#53224: Cookbook recipe about profile collisions
References: <Yd9uT579+YLI5HIx@HIDDEN> <87v8ym4sav.fsf@HIDDEN>
 <YeHCZgO5c+I36Flr@HIDDEN>
X-URL: http://www.fdn.fr/~lcourtes/
X-Revolutionary-Date: 28 =?utf-8?Q?Niv=C3=B4se?= an 230 de la =?utf-8?Q?R?=
 =?utf-8?Q?=C3=A9volution?=
X-PGP-Key-ID: 0x090B11993D9AEBB5
X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc
X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4  0CFB 090B 1199 3D9A EBB5
X-OS: x86_64-pc-linux-gnu
Date: Mon, 17 Jan 2022 15:16:28 +0100
In-Reply-To: <YeHCZgO5c+I36Flr@HIDDEN> (Leo Famulari's message of "Fri,
 14 Jan 2022 13:35:18 -0500")
Message-ID: <87pmoqo3b7.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spamd-Bar: /
Authentication-Results: hera.aquilenet.fr;
	none
X-Rspamd-Server: hera
X-Rspamd-Queue-Id: E0DF345A
X-Spamd-Result: default: False [-0.10 / 15.00]; ARC_NA(0.00)[];
 RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[];
 RCPT_COUNT_THREE(0.00)[3]; TO_DN_SOME(0.00)[];
 TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain];
 FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+];
 RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[];
 MID_RHS_MATCH_FROM(0.00)[]
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 53224
Cc: 53224 <at> debbugs.gnu.org, Matt <matt@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.0 (/)

Hi Leo,

Leo Famulari <leo@HIDDEN> skribis:

> I pointed to this blog post, which was linked from that email:
>
>> > Specifically see this blog post:
>> > http://excalamus.com/2021-10-06-guix-debug.html
>
> It's the story of an attempt to learn what the "conflicting entries"
> message means and how to resolve it.

Oh sorry, I had overlooked this.  It makes perfect sense now, and this
blog post is useful in understand what it feels like to encounter that
error message for the first time.

>> Currently, on profile collisions, the error message shows where the
>> collision originates and a hint on how to work around it.  Perhaps the
>> hint is sometimes wrong (in which cases?), or perhaps it=E2=80=99s too t=
erse?
>> Can it be improved?
>
> The hint is perfectly clear, when you understand "profiles" and
> "propagation".
>
> It's like I said later in my message: People use Guix without knowing
> very much about it.
>
> That's surprising to me, because I started using Guix *because* I
> learned about profiles and how they are used: it's one of the core
> innovations of Guix / Nix, to implement unprivileged package management.
>
> But nevertheless, people are using Guix without understanding how it
> works. And it's hard to learn about Guix when you are dealing with a
> profile collision that you don't understand at all. For many people,
> that is not a good moment to start learning. On top of that, profile
> collisions are an error state that we can't fix as a bug: we have to
> give users the knowledge to resolve the collisions themselves.

Yeah.  So, given that =E2=80=9Cprofile=E2=80=9D is already defined in =E2=
=80=9CGetting Started=E2=80=9D,
I think we can=E2=80=99t do a lot more in the manual.

However, as a way of helping users incrementally discover concepts they
need to understand, we could use one-time hints (sorta like the =E2=80=9CDi=
d you
know?=E2=80=9D boxes in GUIs.)  =E2=80=98guix shell=E2=80=99 already uses a=
 one-time hint
inviting users to run =E2=80=98--check=E2=80=99.

We could imagine that the first run of =E2=80=98guix install=E2=80=99 & co.=
 would print
a message explaining that your packages=E2=80=99 files are now in
~/.guix-profile, and that it=E2=80=99s what we call a =E2=80=9Cprofile=E2=
=80=9D.

Would that make sense?

> For example, the blog post that I linked to ends with "Lessons Learned",
> which includes this:
>
> ------
> What is a profile?
>
> A profile is a directory of symlinks located at ~/.guix-profile.
>
> Propagated inputs can cause conflicts
>
> Propagated inputs are treated somehow differently. It's still not 100%
> clear how or why, but it's good to know they're a potential source of
> errors.
> ------
>
> This person spent a lot of time trying to understand the situation and
> writing the blog post, but their understanding is still rather weak.

To be fair, the person didn=E2=80=99t look for =E2=80=9Cprofile=E2=80=9D in=
 the manual.  I=E2=80=99m not
blaming=E2=80=94mentioning it to clarify what it is we=E2=80=99re trying to=
 fix.

> That's why I propose a Cookbook chapter that specifically addresses
> profile collisions, to help new users go from "oh no, an error message"
> to "aha!"

Makes sense!

>> In some early talks we had illustrations of the symlink forest of a
>> profile borrowed from Eelco Dolstra=E2=80=99s own talks on the matter; s=
ee for
>> instance p. 17 of <https://guix.gnu.org/guix-fosdem-20140201.pdf>.  I

[...]

> The illustrations of the symlink forest were *extremely* helpful to me
> when learning how Guix implements unprivileged package management. I
> think that later talks from the 2015-2017 era refined the illustrations
> to be even more clear.

OK, let=E2=80=99s see if we can include an illustration like that under
=E2=80=9CManaging Software the Guix Way=E2=80=9D or something like that.

> I'm sorry if the use case for my proposal is still unclear. I can work
> on the Cookbook chapter myself.

Great, thanks.

Ludo=E2=80=99.




Information forwarded to bug-guix@HIDDEN:
bug#53224; Package guix. Full text available.

Message received at 53224 <at> debbugs.gnu.org:


Received: (at 53224) by debbugs.gnu.org; 14 Jan 2022 18:35:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 14 13:35:33 2022
Received: from localhost ([127.0.0.1]:38119 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1n8RQC-00017o-Ji
	for submit <at> debbugs.gnu.org; Fri, 14 Jan 2022 13:35:33 -0500
Received: from wout1-smtp.messagingengine.com ([64.147.123.24]:52415)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <leo@HIDDEN>) id 1n8RQB-00017Y-6V
 for 53224 <at> debbugs.gnu.org; Fri, 14 Jan 2022 13:35:31 -0500
Received: from compute5.internal (compute5.nyi.internal [10.202.2.45])
 by mailout.west.internal (Postfix) with ESMTP id 26F8B3200E90;
 Fri, 14 Jan 2022 13:35:25 -0500 (EST)
Received: from mailfrontend2 ([10.202.2.163])
 by compute5.internal (MEProxy); Fri, 14 Jan 2022 13:35:25 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=famulari.name;
 h=date:from:to:cc:subject:message-id:references:mime-version
 :content-type:content-transfer-encoding:in-reply-to; s=mesmtp;
 bh=e5flG6nYtfOmMFZl6fRBy3jf+5ogTCuhWVShMROat5Q=; b=utjOqhI2f00D
 88D4N0zL4gukYK6PMWIPdVTCtG3mUvo6nmYRPGFPqEFF7VGYVhxCDxByqzgzI7Ou
 88HtntDYOmb2lEuo5cBUDPM3t2OdbKXqMb33rZN15OW7x0U/EmgcL3yLAMv7zkmn
 E9itI87psFUBqujcbdRQS6gwF7PynCY=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
 messagingengine.com; h=cc:content-transfer-encoding:content-type
 :date:from:in-reply-to:message-id:mime-version:references
 :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender
 :x-sasl-enc; s=fm1; bh=e5flG6nYtfOmMFZl6fRBy3jf+5ogTCuhWVShMROat
 5Q=; b=UY744wXzaxamCk4J74argGN7RKAfh/cOisLBqMSczyq6CZRulC7A/Y/Ep
 MVr6VNHo9NNFvFv7PDbDHEy6FCFtbaVljij1D/VHnv0W7r+TydHjcG+gqlthN82v
 jsuWwRRWfqgbrFe8Z2QRVVepvoWNhywU7oK8HUNn+WlE+9V2oEq0xL61uVLdaS/U
 rwvQ3zpGrpLI6nZSgHAn18x79o7N0itJtwFB8kb+wIDDUl5gs27JzU5lhHBS+D4r
 RK2gGAOaSiKROKxEBfLBdUi9CfbuYOZHErHv41PPBK25XJ3V3wZ/lJRKWbDTeubk
 vV7fkhssM2rQH1mgAe70DtsMxE70Q==
X-ME-Sender: <xms:aMLhYQgc3bJsH2Ec3EWk6b1MO7jEkha6vvGMIs7x5_v-OKeByMMCfw>
 <xme:aMLhYZA7qt6PC4rTsux5skGrSY941Muk9ZDepnt6TGAHXwT_FOS5rCVDgSQdECvRD
 oMILytcq127r3e8BA>
X-ME-Received: <xmr:aMLhYYEUH4CF1tFN-R4GUqXc9c4fu4aoblxt-Qxlsavr-GR0a4Jwwh4rEKMKmPNjsjtbtWf0Cm68WNQpijf8WHsLGQ>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvvddrtdehgdduudegucetufdoteggodetrfdotf
 fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen
 uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne
 cujfgurhepfffhvffukfhfgggtugfgjgesthekredttddtjeenucfhrhhomhepnfgvohcu
 hfgrmhhulhgrrhhiuceolhgvohesfhgrmhhulhgrrhhirdhnrghmvgeqnecuggftrfgrth
 htvghrnhepueehjeekkeeuudffueefjeekjeehhedvhefghfevteffffetffdvfeeuieel
 veefnecuffhomhgrihhnpehgnhhurdhorhhgpdgvgigtrghlrghmuhhsrdgtohhmnecuve
 hluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomheplhgvohesfhgr
 mhhulhgrrhhirdhnrghmvg
X-ME-Proxy: <xmx:acLhYRQNd4NNjvOpqkwyyal8bky9riDEN-LU8MHhz_rf_kZVtSAUEw>
 <xmx:acLhYdxNJJKtN2brOi06f5NzxDhk98Z3aXenDXT5QoZ_oNYoRHZrvQ>
 <xmx:acLhYf5qH-eRv0zn6oRfBa-kVgBCRMYW7TKUahOka5hWRFMEXKAn0g>
 <xmx:acLhYeoms06EaH8ZTM2E21-tw45zAIr48WHvrWeWFqSA8rtAXqXVVA>
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Fri,
 14 Jan 2022 13:35:20 -0500 (EST)
Date: Fri, 14 Jan 2022 13:35:18 -0500
From: Leo Famulari <leo@HIDDEN>
To: Ludovic =?iso-8859-1?Q?Court=E8s?= <ludo@HIDDEN>
Subject: Re: bug#53224: Cookbook recipe about profile collisions
Message-ID: <YeHCZgO5c+I36Flr@HIDDEN>
References: <Yd9uT579+YLI5HIx@HIDDEN>
 <87v8ym4sav.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <87v8ym4sav.fsf@HIDDEN>
X-Spam-Score: -0.7 (/)
X-Debbugs-Envelope-To: 53224
Cc: 53224 <at> debbugs.gnu.org, Matt <matt@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

On Fri, Jan 14, 2022 at 09:47:52AM +0100, Ludovic Courtès wrote:
> > Recently, Matt pointed out that profile collisions can be confusing and
> > difficult to resolve:
> >
> > https://lists.gnu.org/archive/html/guix-devel/2022-01/msg00115.html
> 
> I don’t see the words “profile” and “collision” here; maybe that was
> upthread?

I pointed to this blog post, which was linked from that email:

> > Specifically see this blog post:
> > http://excalamus.com/2021-10-06-guix-debug.html

It's the story of an attempt to learn what the "conflicting entries"
message means and how to resolve it.

> Currently, on profile collisions, the error message shows where the
> collision originates and a hint on how to work around it.  Perhaps the
> hint is sometimes wrong (in which cases?), or perhaps it’s too terse?
> Can it be improved?

The hint is perfectly clear, when you understand "profiles" and
"propagation".

It's like I said later in my message: People use Guix without knowing
very much about it.

That's surprising to me, because I started using Guix *because* I
learned about profiles and how they are used: it's one of the core
innovations of Guix / Nix, to implement unprivileged package management.

But nevertheless, people are using Guix without understanding how it
works. And it's hard to learn about Guix when you are dealing with a
profile collision that you don't understand at all. For many people,
that is not a good moment to start learning. On top of that, profile
collisions are an error state that we can't fix as a bug: we have to
give users the knowledge to resolve the collisions themselves.

For example, the blog post that I linked to ends with "Lessons Learned",
which includes this:

------
What is a profile?

A profile is a directory of symlinks located at ~/.guix-profile.

Propagated inputs can cause conflicts

Propagated inputs are treated somehow differently. It's still not 100%
clear how or why, but it's good to know they're a potential source of
errors.
------

This person spent a lot of time trying to understand the situation and
writing the blog post, but their understanding is still rather weak.

That's why I propose a Cookbook chapter that specifically addresses
profile collisions, to help new users go from "oh no, an error message"
to "aha!"

> The definition of what a profile is is another topic.  Currently the
> term “profile” is defined in “Getting Started”:
> 
>   https://guix.gnu.org/manual/en/html_node/Getting-Started.html#index-profile
> 
> It’s very much defined in passing though.  How can we improve on that?

I think this part of the manual is fine and can stay as it is.

> In some early talks we had illustrations of the symlink forest of a
> profile borrowed from Eelco Dolstra’s own talks on the matter; see for
> instance p. 17 of <https://guix.gnu.org/guix-fosdem-20140201.pdf>.  I
> stopped using it because I think those symlinks are an implementation
> detail and it doesn’t help to focus on symlinks (and hashes and all
> that) when giving an overview of the tool.  Now, perhaps that
> illustration could be useful in the manual.
> 
> WDYT?

The illustrations of the symlink forest were *extremely* helpful to me
when learning how Guix implements unprivileged package management. I
think that later talks from the 2015-2017 era refined the illustrations
to be even more clear.

I'm sorry if the use case for my proposal is still unclear. I can work
on the Cookbook chapter myself.




Information forwarded to bug-guix@HIDDEN:
bug#53224; Package guix. Full text available.

Message received at 53224 <at> debbugs.gnu.org:


Received: (at 53224) by debbugs.gnu.org; 14 Jan 2022 12:02:40 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 14 07:02:40 2022
Received: from localhost ([127.0.0.1]:35790 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1n8LI0-0001UV-CM
	for submit <at> debbugs.gnu.org; Fri, 14 Jan 2022 07:02:40 -0500
Received: from mail-io1-f54.google.com ([209.85.166.54]:42898)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <zimon.toutoune@HIDDEN>) id 1n8LHy-0001UG-VR
 for 53224 <at> debbugs.gnu.org; Fri, 14 Jan 2022 07:02:39 -0500
Received: by mail-io1-f54.google.com with SMTP id a12so7148772iod.9
 for <53224 <at> debbugs.gnu.org>; Fri, 14 Jan 2022 04:02:38 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=mime-version:references:in-reply-to:from:date:message-id:subject:to
 :cc:content-transfer-encoding;
 bh=TEzcOMRlgT4swk3EJ9uwtS6FziFp0rZELuYNNG1Q2EM=;
 b=CUF7wtjGLuSVWXAf2YB5S0QalRu6b6AQTKjjWn2sTcXAtLpF/nAcNRQDEm6d8H5W6Q
 jRkqgnBTr3CCNiCwFstxwTjs+eergwFF7bsxilyBlh7tJ0b6qjpg4FULkDGNQNC+XyPU
 Xkf4T1Gj1LqzLK5yTl/XNVWB5O3cAxQVAxO+gJYKyKeCvpkzuS7xq5tqOtuOLeSVjoqj
 2srPs0W4f5+PqF6MaFRZ6KlfSzmMmDtX2cpe7YEHof0XSSKtnn/z8/ylQtlKN2oVvV/w
 KmFwMkWwkh/O1U5hgYrSDwI80z1h6kTrhsO12w+o3+Mga4R1OAZXu8XtObLGpcIJQ+PH
 INyQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:mime-version:references:in-reply-to:from:date
 :message-id:subject:to:cc:content-transfer-encoding;
 bh=TEzcOMRlgT4swk3EJ9uwtS6FziFp0rZELuYNNG1Q2EM=;
 b=XXj4FI64ii8l1gZADzMgMtczOUt/X2AHTqxBAIjJ/yOd1XgnuMv8DC6IDRC7YWJ6JK
 t4pB5jTxxMhjy/0Gy262Kbd73DJ2e3dyXq4aPPuwiMQ79rwL5K/VwZFKYtNpEgbmfuQv
 oBsoUnVzVTTQinBzA/lOAwEX7YvOEhd9uLDpVNajznUxW0FUg/EohKtdXud36mzcIhMd
 Cbog8xyJfBYW5QUX0LdS5SaivyqzIBrtVs7GkeIufcruCnRoAxPdq2A97QJWmLO60pB+
 D+11HiLjGTN4JdoRU4gQ6aPn2FhhT6Haf9Lds1e1GZ/qeasNOaoWq+VfjUf1baoqyGp1
 QEkg==
X-Gm-Message-State: AOAM531qnJ3R1LOYAx4OkbWz84JQT24qUs5aEH50hO4UM36fKXo/YpxT
 e+xNjx6GaPLszDO82Y2UG7RkxrTN4S3ShyjomOs=
X-Google-Smtp-Source: ABdhPJxCkY1utanTO/iBlat5nf8xGgOMBvr3W0YLiGL6qNKOqvAKNeCEGodzKXAkm0+FcTxkbcA6Ru38XweImSVrQVs=
X-Received: by 2002:a02:6f5e:: with SMTP id b30mr4032841jae.182.1642161753220; 
 Fri, 14 Jan 2022 04:02:33 -0800 (PST)
MIME-Version: 1.0
References: <Yd9uT579+YLI5HIx@HIDDEN> <87v8ym4sav.fsf@HIDDEN>
In-Reply-To: <87v8ym4sav.fsf@HIDDEN>
From: zimoun <zimon.toutoune@HIDDEN>
Date: Fri, 14 Jan 2022 13:02:21 +0100
Message-ID: <CAJ3okZ2QLG9Z+KBZhMBTFxGpk4X+YcqYosvZSFQzORcacDPp1g@HIDDEN>
Subject: Re: bug#53224: Cookbook recipe about profile collisions
To: =?UTF-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 53224
Cc: 53224 <at> debbugs.gnu.org, Matt <matt@HIDDEN>,
 Leo Famulari <leo@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hi,

On Fri, 14 Jan 2022 at 10:02, Ludovic Court=C3=A8s <ludo@HIDDEN> wrote:

> Currently, on profile collisions, the error message shows where the
> collision originates and a hint on how to work around it.  Perhaps the
> hint is sometimes wrong (in which cases?), or perhaps it=E2=80=99s too te=
rse?
> Can it be improved?

I do not know how it could be improved since it is often case per
case.  For instance, recently we had a collision for python-numpy and
the fix was to introduce python-numpy-next.  That's said, to me the
origin of the collision is often enough for resolving.  However,
indeed the user must have a clear understanding of Guix profile and
propagation.  Therefore, an entry to the Cookbook explaining what does
it mean and where to look appears to me a good idea.


> The definition of what a profile is is another topic.  Currently the
> term =E2=80=9Cprofile=E2=80=9D is defined in =E2=80=9CGetting Started=E2=
=80=9D:
>
>   https://guix.gnu.org/manual/en/html_node/Getting-Started.html#index-pro=
file
>
> It=E2=80=99s very much defined in passing though.  How can we improve on =
that?
>
> In some early talks we had illustrations of the symlink forest of a
> profile borrowed from Eelco Dolstra=E2=80=99s own talks on the matter; se=
e for
> instance p. 17 of <https://guix.gnu.org/guix-fosdem-20140201.pdf>.  I
> stopped using it because I think those symlinks are an implementation
> detail and it doesn=E2=80=99t help to focus on symlinks (and hashes and a=
ll
> that) when giving an overview of the tool.  Now, perhaps that
> illustration could be useful in the manual.

Well, I do not want to drift the initial message.  I am just keeping
the rolling ball. :-)

In the tutorial I am preparing for JRES, I am doing this way, as a
dialogue (below).  Basically, it is how I am somehow explaining to the
few users I have here, with various background.  This cannot go to the
manual but maybe it could be useful or worth for the Cookbook.

To me, what is an implementation detail is all the dance with /var/,
the generations, the garbage collection, etc.  But the fact that a
profile is symlink pointing a directory with the structure of /usr/
and containing all the environment variables is not an implementation
detail.  It appears to me a core concept to switch from traditional
distro with only one /usr/ to Guix and how to compose many /usr/.

Alice: Where are my packages?
Bob: Installing a package ends with this hint ...snippet...
Alice: Ah, I am confused
Bob: Well, $HOME/.guix-profile is thus the default profile
Alice: What does it mean?
Bob: Look at guix package --search-paths -p $HOME/.guix-profile
Alice: I see, but what is this $HOME/.guix-profile
Bob: Look at: file $HOME/.guix-profile
Alice: Ah, right.  My conclusion is:
  - a profile contains the environment variables
  - a profile is a symlink
Bob: Correct.
Alice: But a symlink pointing to where?
Bob: Look at: readlink -f $HOME/.guix-profile
Alice: It points to a store item, but what does it mean?
Bob: Look at: file $(readlink -f $HOME/.guix-profile)
Alice: Ah right.  My conclusion is:
  - a profile points to a directory item in the store
Bob: Correct.
Alice: What is inside this directory
Bob: Look at: ls $(readlink -f $HOME/.guix-profile)
Alice: Oh, it looks the same hierarchy as the usual and well-know /usr/
Bob: Correct.
Alice: What does it happen when I type python3 I just installed
Bob: Look at: which python3
Alice: Ah right.  Is the binary really in the directory item above?
Bob: Look at: readlink $(which python3)
Alice: Oh right.  A profile points to store item which points to other
store items.
Bob: Correct.
Alice: I guess these other store items have also an /usr/ hierarchy, right?
Bob: Correct.  Do you know how to check that?
Alice: ls $(readlink $(which python3))
Bob: Correct.
Alice: I summarize.  A profile is:
  - a symlink
  - which points to a store item
  - which points to many other store items
  - and all have the structure hierarchy of /usr/
Woo, it is a forest of symlinks!
... image ...


Cheers,
simon




Information forwarded to bug-guix@HIDDEN:
bug#53224; Package guix. Full text available.

Message received at 53224 <at> debbugs.gnu.org:


Received: (at 53224) by debbugs.gnu.org; 14 Jan 2022 08:48:07 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jan 14 03:48:07 2022
Received: from localhost ([127.0.0.1]:35525 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1n8IFi-0003dH-MH
	for submit <at> debbugs.gnu.org; Fri, 14 Jan 2022 03:48:06 -0500
Received: from hera.aquilenet.fr ([185.233.100.1]:54316)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <ludo@HIDDEN>) id 1n8IFd-0003bs-9k
 for 53224 <at> debbugs.gnu.org; Fri, 14 Jan 2022 03:48:05 -0500
Received: from localhost (localhost [127.0.0.1])
 by hera.aquilenet.fr (Postfix) with ESMTP id 69CC6242;
 Fri, 14 Jan 2022 09:47:54 +0100 (CET)
X-Virus-Scanned: Debian amavisd-new at aquilenet.fr
Received: from hera.aquilenet.fr ([127.0.0.1])
 by localhost (hera.aquilenet.fr [127.0.0.1]) (amavisd-new, port 10024)
 with ESMTP id y_BPN6fp7GyG; Fri, 14 Jan 2022 09:47:53 +0100 (CET)
Received: from ribbon (91-160-117-201.subs.proxad.net [91.160.117.201])
 by hera.aquilenet.fr (Postfix) with ESMTPSA id E1B0423C;
 Fri, 14 Jan 2022 09:47:52 +0100 (CET)
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: Leo Famulari <leo@HIDDEN>
Subject: Re: bug#53224: Cookbook recipe about profile collisions
References: <Yd9uT579+YLI5HIx@HIDDEN>
Date: Fri, 14 Jan 2022 09:47:52 +0100
In-Reply-To: <Yd9uT579+YLI5HIx@HIDDEN> (Leo Famulari's message of "Wed,
 12 Jan 2022 19:11:59 -0500")
Message-ID: <87v8ym4sav.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spamd-Bar: /
Authentication-Results: hera.aquilenet.fr;
	none
X-Rspamd-Server: hera
X-Rspamd-Queue-Id: 69CC6242
X-Spamd-Result: default: False [-0.10 / 15.00]; ARC_NA(0.00)[];
 RCVD_VIA_SMTP_AUTH(0.00)[]; FROM_HAS_DN(0.00)[];
 RCPT_COUNT_THREE(0.00)[3]; TO_DN_SOME(0.00)[];
 TO_MATCH_ENVRCPT_ALL(0.00)[]; MIME_GOOD(-0.10)[text/plain];
 FROM_EQ_ENVFROM(0.00)[]; MIME_TRACE(0.00)[0:+];
 RCVD_COUNT_TWO(0.00)[2]; RCVD_TLS_ALL(0.00)[];
 MID_RHS_MATCH_FROM(0.00)[]
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: 53224
Cc: 53224 <at> debbugs.gnu.org, Matt <matt@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.0 (/)

Hi,

Leo Famulari <leo@HIDDEN> skribis:

> Recently, Matt pointed out that profile collisions can be confusing and
> difficult to resolve:
>
> https://lists.gnu.org/archive/html/guix-devel/2022-01/msg00115.html

I don=E2=80=99t see the words =E2=80=9Cprofile=E2=80=9D and =E2=80=9Ccollis=
ion=E2=80=9D here; maybe that was
upthread?

> Specifically see this blog post:
> http://excalamus.com/2021-10-06-guix-debug.html
>
> I think we should add a Cookbook chapter on the subject.
>
> This particular error state seems unavoidable given the size of the
> distro and the number of packages that use propagation.
>
> So, let's help users understand it and give them the knowledge to even
> help resolve such collisions as contributors.
>
> Speaking as somebody who understands intimately what a profile is, what
> propagated inputs are, and how they can interact to cause "profile
> contains conflicting entries", I am sympathetic.
>
> Although I know exactly how to resolve such errors, I have also
> explained the situation to new Guix users several times on IRC.

Yeah, we need to get a good understanding of when that happens, and
what=E2=80=99s confusing.

Currently, on profile collisions, the error message shows where the
collision originates and a hint on how to work around it.  Perhaps the
hint is sometimes wrong (in which cases?), or perhaps it=E2=80=99s too ters=
e?
Can it be improved?

> Many people come to Guix, install some packages, use them, then want to
> upgrade them, and they have never learned what a profile is or how it is
> the fundamental mechanism by which Guix implements package management.
>
> It also seems to me that plenty of people would prefer not to ask for
> help, but rather go searching online and in the documentation, which
> does not include the string "contains conflicting entries".
>
> I envision a Cookbook chapter that explains what a profile is, what
> propagation does, what profile generations are, and then how they all
> combine to cause this error state. And an example of a resolution,
> whether by adjusting a package definition, uninstalling a package, etc.
>
> There are some older Guix presentation videos that I think do a great
> job of explaining profiles and generations, including slides with good
> illustrations of the subject. It would be nice to try using that style
> of illustration, as I found it clear and illuminating when I first
> learned about Guix.

The definition of what a profile is is another topic.  Currently the
term =E2=80=9Cprofile=E2=80=9D is defined in =E2=80=9CGetting Started=E2=80=
=9D:

  https://guix.gnu.org/manual/en/html_node/Getting-Started.html#index-profi=
le

It=E2=80=99s very much defined in passing though.  How can we improve on th=
at?

In some early talks we had illustrations of the symlink forest of a
profile borrowed from Eelco Dolstra=E2=80=99s own talks on the matter; see =
for
instance p. 17 of <https://guix.gnu.org/guix-fosdem-20140201.pdf>.  I
stopped using it because I think those symlinks are an implementation
detail and it doesn=E2=80=99t help to focus on symlinks (and hashes and all
that) when giving an overview of the tool.  Now, perhaps that
illustration could be useful in the manual.

WDYT?

Thanks,
Ludo=E2=80=99.




Information forwarded to bug-guix@HIDDEN:
bug#53224; Package guix. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 13 Jan 2022 00:12:17 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Jan 12 19:12:17 2022
Received: from localhost ([127.0.0.1]:59436 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1n7niz-0005Vj-94
	for submit <at> debbugs.gnu.org; Wed, 12 Jan 2022 19:12:17 -0500
Received: from lists.gnu.org ([209.51.188.17]:47030)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <leo@HIDDEN>) id 1n7niu-0005VY-60
 for submit <at> debbugs.gnu.org; Wed, 12 Jan 2022 19:12:16 -0500
Received: from eggs.gnu.org ([209.51.188.92]:56848)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <leo@HIDDEN>) id 1n7nit-0002Fe-EW
 for bug-guix@HIDDEN; Wed, 12 Jan 2022 19:12:12 -0500
Received: from wout5-smtp.messagingengine.com ([64.147.123.21]:42861)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <leo@HIDDEN>) id 1n7nir-0002mw-7w
 for bug-guix@HIDDEN; Wed, 12 Jan 2022 19:12:11 -0500
Received: from compute5.internal (compute5.nyi.internal [10.202.2.45])
 by mailout.west.internal (Postfix) with ESMTP id 347803201D7C;
 Wed, 12 Jan 2022 19:12:05 -0500 (EST)
Received: from mailfrontend2 ([10.202.2.163])
 by compute5.internal (MEProxy); Wed, 12 Jan 2022 19:12:05 -0500
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=famulari.name;
 h=date:from:to:cc:subject:message-id:mime-version:content-type;
 s=mesmtp; bh=lGH8VyVL8PwxvGC803I/aMODiT2l/8OH9LoUm7GZMFg=; b=UD
 k+1egusefn7Xf4LooHP628vsrevSQanlgATo15GbxF4kWgs92ZvkmIRWI5StZElz
 lNZgZyi6O1CBERIAPFtzeg9xfe43CSeLpaJ3bYtv+v9sdCWBM5bBEoLlIIUcu9tY
 xP0Fzm8XNO5Kj7RiI5otqUJVCifgJLGq/ONGOYeA4=
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=
 messagingengine.com; h=cc:content-type:date:from:message-id
 :mime-version:subject:to:x-me-proxy:x-me-proxy:x-me-sender
 :x-me-sender:x-sasl-enc; s=fm1; bh=lGH8VyVL8PwxvGC803I/aMODiT2l/
 8OH9LoUm7GZMFg=; b=hZTVLb2fRzYLI+k35LLb+wDxrWjdEshfHKfDuuWNEZ9aJ
 SlDiJ8d5Y75qQuitECdsWzInAFT3/Ybg5usyCrVmrASw03hWLpzbksaEsht4QJ1G
 JR9aHmULuxOneY/6MliI3DilnLrzENz9TlF6LqxZDQ2QHBTqcKAYzzxY39u0a958
 KMm+c8xVeXwfkCWaZDgV+QnBPyyeFJLlXYHFsAs7jTjudgBejvfPT2quUp9rvNlA
 9flpx9G2JF1AeiOykFQmld4zbJPSGnE2RcSBb431Z4Nti20cCKysT/eyDg9QJpuc
 1wmztNTxRmy036hByGSQ8NoGwChopLFrrD/trMFGg==
X-ME-Sender: <xms:VG7fYTLoudaoWwxWckyZ7GVko3We0bEoS_QQC-JmE95u_OVsZamvfA>
 <xme:VG7fYXLl0iUZROf4Hojo3eCualZVmc_OaLVHl_mI-5n9Q79P-inCuNq62hMUeGweE
 VWoijmGrryFabD-VA>
X-ME-Received: <xmr:VG7fYbt1aO3CHyNXNfPJXXEt9jqQijfE2O77VGEXabpKuTko6mA_iks9ctEpwV1WV3QoK3UMF5j8EC39Kjm3zMirng>
X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgedvvddrtddvgddukecutefuodetggdotefrodftvf
 curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu
 uegrihhlohhuthemuceftddtnecunecujfgurhepfffhvffukfggtggusehttdertddttd
 dvnecuhfhrohhmpefnvghoucfhrghmuhhlrghrihcuoehlvghosehfrghmuhhlrghrihdr
 nhgrmhgvqeenucggtffrrghtthgvrhhnpeehveethedvteetfffhledukedtheekkedtfe
 ethefhieehffehueffvdejffehheenucffohhmrghinhepghhnuhdrohhrghdpvgigtggr
 lhgrmhhushdrtghomhenucevlhhushhtvghrufhiiigvpedtnecurfgrrhgrmhepmhgrih
 hlfhhrohhmpehlvghosehfrghmuhhlrghrihdrnhgrmhgv
X-ME-Proxy: <xmx:VG7fYcaOh-Y8-rrIQrG_xW-V3MLUgnY__dLLPgTMYEav7vTpDqZ3pA>
 <xmx:VG7fYaZyyYA4iKBp60ubVcaELauFmvgczFTUai9nfN1PqW9OWVMMaw>
 <xmx:VG7fYQCRtfhSr7-aBKjcOtt3zm5R2EjplqMsooaekojLrOMvK3fFjQ>
 <xmx:VG7fYTBv6szWFz0mcZjAddUzVst306qJHDzkb75wKdEEvbUtXM-W5A>
Received: by mail.messagingengine.com (Postfix) with ESMTPA; Wed,
 12 Jan 2022 19:12:04 -0500 (EST)
Date: Wed, 12 Jan 2022 19:11:59 -0500
From: Leo Famulari <leo@HIDDEN>
To: bug-guix@HIDDEN
Subject: Cookbook recipe about profile collisions
Message-ID: <Yd9uT579+YLI5HIx@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Received-SPF: pass client-ip=64.147.123.21; envelope-from=leo@HIDDEN;
 helo=wout5-smtp.messagingengine.com
X-Spam_score_int: -27
X-Spam_score: -2.8
X-Spam_bar: --
X-Spam_report: (-2.8 / 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,
 RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001,
 SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: submit
Cc: Matt <matt@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.4 (--)

Recently, Matt pointed out that profile collisions can be confusing and
difficult to resolve:

https://lists.gnu.org/archive/html/guix-devel/2022-01/msg00115.html

Specifically see this blog post:
http://excalamus.com/2021-10-06-guix-debug.html

I think we should add a Cookbook chapter on the subject.

This particular error state seems unavoidable given the size of the
distro and the number of packages that use propagation.

So, let's help users understand it and give them the knowledge to even
help resolve such collisions as contributors.

Speaking as somebody who understands intimately what a profile is, what
propagated inputs are, and how they can interact to cause "profile
contains conflicting entries", I am sympathetic.

Although I know exactly how to resolve such errors, I have also
explained the situation to new Guix users several times on IRC.

Many people come to Guix, install some packages, use them, then want to
upgrade them, and they have never learned what a profile is or how it is
the fundamental mechanism by which Guix implements package management.

It also seems to me that plenty of people would prefer not to ask for
help, but rather go searching online and in the documentation, which
does not include the string "contains conflicting entries".

I envision a Cookbook chapter that explains what a profile is, what
propagation does, what profile generations are, and then how they all
combine to cause this error state. And an example of a resolution,
whether by adjusting a package definition, uninstalling a package, etc.

There are some older Guix presentation videos that I think do a great
job of explaining profiles and generations, including slides with good
illustrations of the subject. It would be nice to try using that style
of illustration, as I found it clear and illuminating when I first
learned about Guix.




Acknowledgement sent to Leo Famulari <leo@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-guix@HIDDEN. Full text available.
Report forwarded to bug-guix@HIDDEN:
bug#53224; Package guix. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Mon, 17 Jan 2022 18:15:01 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.