From debbugs-submit-bounces@debbugs.gnu.org Wed Jun 23 17:28:19 2021 Received: (at 49149) by debbugs.gnu.org; 23 Jun 2021 21:28:19 +0000 Received: from localhost ([127.0.0.1]:41971 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lwAPz-0006GU-2v for submit@debbugs.gnu.org; Wed, 23 Jun 2021 17:28:19 -0400 Received: from eggs.gnu.org ([209.51.188.92]:59702) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lwAPx-0006GI-GV for 49149@debbugs.gnu.org; Wed, 23 Jun 2021 17:28:17 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:51684) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lwAPs-0002HO-8s; Wed, 23 Jun 2021 17:28:12 -0400 Received: from [2a01:e0a:1d:7270:af76:b9b:ca24:c465] (port=35366 helo=ribbon) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lwAPr-0005Xg-Q1; Wed, 23 Jun 2021 17:28:12 -0400 From: =?utf-8?Q?Ludovic_Court=C3=A8s?= To: Maxim Cournoyer Subject: Re: bug#49149: [PATCH 0/7] Add deb format for guix pack. References: <20210621061039.31557-1-maxim.cournoyer@gmail.com> Date: Wed, 23 Jun 2021 23:28:10 +0200 In-Reply-To: <20210621061039.31557-1-maxim.cournoyer@gmail.com> (Maxim Cournoyer's message of "Mon, 21 Jun 2021 02:10:39 -0400") Message-ID: <87eecsuv85.fsf@gnu.org> 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-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 49149 Cc: 49149@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! Maxim Cournoyer skribis: > This patch set adds support to produce Debian archives (.deb packages) via > guix pack. It's rudimentary but functional. You can try a simple example > like so: > > $ ./pre-inst-env guix pack -f deb -C xz hello -S /usr/bin/hello=3Dbin/hel= lo > > Copy the generated .deb to your dpkg-based distribution of choice, then: > > $ sudo apt install ./91ypmi1j5py9qk034kki5wrgy0n52yz9-hello-deb-pack.deb > > $ realpath $(which hello) > /gnu/store/lk9cmjjhgxpkxxi7m54y0jlv3rqvpb2n-hello-2.10/bin/hello > $ hello > Hello, world! > > Fun, no? We can now distribute software built with Guix transparently to= any > Debian-based distribution. Definitely fun. :-) As briefly discussed on IRC, I wonder what happens when installing multiple such .deb files, and removing them selectively. There=E2=80=99s of course going to be overlapping store items. Apparently, dpkg will happily overwrite them when you install (and that=E2=80=99s fine, if they have the same name, they=E2=80=99re identical)= , but what happens when you remove one of them? Does it, for instance, remove /gnu/store/=E2=80=A6-glibc just because it =E2=80=9Cbelongs=E2=80=9D to tha= t package, without noticing that it also belongs to other installed packages? If dpkg cannot deal with that, it=E2=80=99s equivalent to a tarball pack fo= r all practical purposes, except you=E2=80=99d run =E2=80=9Csudo apt=E2=80=9D ins= tead of =E2=80=9Csudo tar=E2=80=9D. WDYT? Is our official Debian ambassador around? :-) A complementary approach would be to transparently build Guix packages in a Debian VM, with an FHS layout, and with dependencies on Debian packages. I remember there were tools for that in Nixpkgs back in the day, using Checkinstall to generate the actual .deb file. Thanks for the neat hack! Ludo=E2=80=99.