From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tobias Geerinckx-Rice Subject: =?UTF-8?Q?Re:_What_about_dependency_resolution_=c3=a0_la_apt=3f?= Date: Thu, 16 Mar 2017 23:45:03 +0100 Message-ID: <8cbaa186-6ee3-0e44-1a6e-13b5ebd440ba@tobias.gr> References: <368b70bd-ef62-ea59-7c2d-4564d7948f40@hypermove.net> <90b4b820-6d13-01e5-309f-c17700a61974@tobias.gr> <380423bd-fa6e-8e2b-978f-11ffdd79088c@hypermove.net> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="wopWAE3R4hGD6EOKwgLJu1tEXAWt8ss3G" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:37865) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1coe80-0005er-Tv for help-guix@gnu.org; Thu, 16 Mar 2017 18:44:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1coe7y-0002rz-9X for help-guix@gnu.org; Thu, 16 Mar 2017 18:44:16 -0400 Received: from relay5-d.mail.gandi.net ([2001:4b98:c:538::197]:60700) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1coe7y-0002rf-0I for help-guix@gnu.org; Thu, 16 Mar 2017 18:44:14 -0400 In-Reply-To: <380423bd-fa6e-8e2b-978f-11ffdd79088c@hypermove.net> List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+gcggh-help-guix=m.gmane.org@gnu.org Sender: "Help-Guix" To: amirouche@hypermove.net Cc: help-guix@gnu.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --wopWAE3R4hGD6EOKwgLJu1tEXAWt8ss3G Content-Type: multipart/mixed; boundary="p4N5i6txCrrLfciS9w23a2QLv7ma7WhEg"; protected-headers="v1" From: Tobias Geerinckx-Rice To: amirouche@hypermove.net Cc: help-guix@gnu.org Message-ID: <8cbaa186-6ee3-0e44-1a6e-13b5ebd440ba@tobias.gr> Subject: =?UTF-8?Q?Re:_What_about_dependency_resolution_=c3=a0_la_apt=3f?= References: <368b70bd-ef62-ea59-7c2d-4564d7948f40@hypermove.net> <90b4b820-6d13-01e5-309f-c17700a61974@tobias.gr> <380423bd-fa6e-8e2b-978f-11ffdd79088c@hypermove.net> In-Reply-To: <380423bd-fa6e-8e2b-978f-11ffdd79088c@hypermove.net> --p4N5i6txCrrLfciS9w23a2QLv7ma7WhEg Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Amirouche, On 16/03/17 21:56, Amirouche wrote: > Le 16/03/2017 =C3=A0 21:28, Tobias Geerinckx-Rice a =C3=A9crit : >> [...] I'm mainly curious and slightly puzzled as to why >> this question keeps popping up. >=20 > Sorry! Not at all. Thanks for making me think about this some more and put my thoughts into words. You're the poor sod who has to read them. >> I hope others will join in, since I fear >> this hints at some fundamental misunderstandings about Guix that might= >> hurt world d^W^W adoption. >=20 > Maybe patch the FAQ? I don't even grok the question! :-) Nor did I know that Guix had a FAQ. Also, the rest of this e-mail should illustrate why I am not the person to concisely and clearly answer anythi= ng. >> It takes some getting used to when you're used to old-school package >> managers where the resolver is A Big Deal, or even The Biggest Deal: >> Gentoo, anyone? >=20 > Yes.. But autoconf does the same, it specify some dependency > that can match patch or minor version number. =2E..yyyes. That is true? But...? I'm afraid I still can't see how this relates to Guix. Build systems like autotools and package managers like apt and npm hail from a hostile and fragile world: in general, packages are installed into a single, shared root filesystem, from constantly updating global repository. Oh, and you can hardly ever install more than one version of a package at a time. And some packages flatly refuse to coexist with others. In this world, dependencies do indeed need to be =E2=80=98resolved=E2=80=99= : =E2=80=9CYo, apt, go fetch a libfoo from the pile that's at least this new (but not part of the 2.x series!) without breaking these 463 other packages.=E2=80=9D The[1] correct solution may involve up- or downgrading many other packages, or even removing conflicting ones. All nicely taken care of by the package manager. Until it breaks. I call it =E2=80=98Ubuntu=E2=80=99.= In Guix, installing one package doesn't touch any other package. There are no conflicts. Package specifications aren't secretly queries with 0 or more matches like in apt, but unambiguous identifiers. Guix doesn't play fetch. It can't. You tell it exactly which package to use =E2=80=94 and that's a feature. Perhaps this is where the confusion arises: =E2=80=98exactly which packag= es=E2=80=99 does not mean =E2=80=98libfoo =3D=3D 1.4=E2=80=99. It means =E2=80=98this= store entry containing exactly this build of libfoo.=E2=80=99 Maybe it is libfoo 1.4. Maybe it's= patched to hell. It doesn't even matter: the resulting system either works, or it doesn't. Phew. Sorry. I warned you. >> Guix already does =E2=80=98equal to=E2=80=99 better than anyone. Bit-i= dentical, even. >=20 > That's is off topic? Not at all. When you suggest =E2=80=98dependency resolution=E2=80=99, you= have to think carefully about what that means and how it would affect this key property= =2E Anyway, I'll leave the floor to others now. Kind regards, T G-R [1]: =E2=80=98A=E2=80=99. This stuff is insanely non-deterministic. --p4N5i6txCrrLfciS9w23a2QLv7ma7WhEg-- --wopWAE3R4hGD6EOKwgLJu1tEXAWt8ss3G Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQEqBAEBCgAUBQJYyxVwDRxtZUB0b2JpYXMuZ3IACgkQkczbm0hUG5ngEgf6A8LE 9+Yqqy+vixgobzQMImCDx0jx+WQp+UKrtC4Mv2OvKsHdh3Gnv0NgaGtppwtHj0Jg K70sANCUg8ZHX74UP/wTbWpZhYfNV5vKxxfT/XTxwea+leI2omCElFLv1jaFJJNf oqyicaatlkquhl7JzN8C+dmbDhApiejXlR2DdMv1OpAhnBEZts4vKCwIRFcVnAD0 Onsivmv54IAVDoBPRTWd8DNyCeR8/kxRSLFuBSNKMnSYEai4WWvxQkf/jxy2Ebn0 JYQhSwL8zDEb8N2lDFCt4MunjV0xb9pZIhZjkpPxlIvT8GSd086LO4Ddcd/rd0Kj ApcV7pyzL8tWfmpc3A== =r0mH -----END PGP SIGNATURE----- --wopWAE3R4hGD6EOKwgLJu1tEXAWt8ss3G--