* Trying to replicate guix packages list on another machine
@ 2022-06-27 13:49 Emmanuel Medernach
2022-06-27 14:32 ` zimoun
2022-06-27 14:42 ` Julien Lepiller
0 siblings, 2 replies; 8+ messages in thread
From: Emmanuel Medernach @ 2022-06-27 13:49 UTC (permalink / raw)
To: help-guix
Hello,
We are trying to replicate guix packages list on another machine. We are
using GUIX on a foreign distro.
Here what we have on machine A:
[Machine A]$ guix describe --format=channels
(list (channel
(name 'guix)
(url "https://git.savannah.gnu.org/git/guix.git")
(commit
"a0178d34f582b50e9bdbb0403943129ae5b560ff")
(introduction
(make-channel-introduction
"9edb3f66fd807b096b48283debdcddccfea34bad"
(openpgp-fingerprint
"BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA")))))
[Machine A]$ guix package --list-installed | sort | awk '//{ print $1
"@" $2; }'
cmake@3.19.2
gcc-toolchain@4.9.4
glibc@2.33
gsl@2.6
icu4c@68.2
make@4.3
pcre@8.44
zlib@1.2.11
But on machine B:
[Machine B]$ cat ~/.config/guix/channels.scm
(list (channel
(name 'guix)
(url "https://git.savannah.gnu.org/git/guix.git")
(commit
"a0178d34f582b50e9bdbb0403943129ae5b560ff")
(introduction
(make-channel-introduction
"9edb3f66fd807b096b48283debdcddccfea34bad"
(openpgp-fingerprint
"BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA")))))
[Machine B]$ guix install cmake@3.19.2 gcc-toolchain@4.9.4 glibc@2.33
gsl@2.6 icu4c@68.2 make@4.3 pcre@8.44 zlib@1.2.11
guix install: error: glibc: package not found for version 2.33
What are we doing wrong ? Please tell us what steps are missing to
correctly replicate guix packages to another machine ?
Best regards,
Emmanuel Medernach
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Trying to replicate guix packages list on another machine
2022-06-27 13:49 Trying to replicate guix packages list on another machine Emmanuel Medernach
@ 2022-06-27 14:32 ` zimoun
2022-06-27 14:51 ` Emmanuel Medernach
2022-06-27 14:42 ` Julien Lepiller
1 sibling, 1 reply; 8+ messages in thread
From: zimoun @ 2022-06-27 14:32 UTC (permalink / raw)
To: Emmanuel Medernach, help-guix
Hi,
On Mon, 27 Jun 2022 at 15:49, Emmanuel Medernach <Emmanuel.Medernach@iphc.cnrs.fr> wrote:
> [Machine A]$ guix package --list-installed | sort | awk '//{ print $1
> "@" $2; }'
> cmake@3.19.2
> gcc-toolchain@4.9.4
> glibc@2.33
> gsl@2.6
> icu4c@68.2
> make@4.3
> pcre@8.44
> zlib@1.2.11
Instead, it seems easier to run:
guix package --export-manifest
> But on machine B:
>
> [Machine B]$ cat ~/.config/guix/channels.scm
> (list (channel
> (name 'guix)
> (url "https://git.savannah.gnu.org/git/guix.git")
> (commit
> "a0178d34f582b50e9bdbb0403943129ae5b560ff")
> (introduction
> (make-channel-introduction
> "9edb3f66fd807b096b48283debdcddccfea34bad"
> (openpgp-fingerprint
> "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA")))))
Did you run “guix pull” or “guix pull -C ~/.config/guix/channels.scm”?
> [Machine B]$ guix install cmake@3.19.2 gcc-toolchain@4.9.4 glibc@2.33
> gsl@2.6 icu4c@68.2 make@4.3 pcre@8.44 zlib@1.2.11
> guix install: error: glibc: package not found for version 2.33
I guess “guix describe” on ’Machine B’ is not the state specified by
’Machine A’. From my understanding, the easiest workflow is:
machine-A$ guix describe -f channels > state-A.scm
machine-A$ guix package --export-manifest > pkgs-A.scm
exchange these 2 files (even, it is better that these 2 files are
versioned with the project itsefl ;-))
machine-B$ guix time-machine -C state-A.scm \
package -m pkg-A.scm \
-p profile-A
This way, the global state of ’Machine B’ is unchanged; in case you are
working on several projects at various states in the same time.
Hope that helps,
simon
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Trying to replicate guix packages list on another machine
2022-06-27 13:49 Trying to replicate guix packages list on another machine Emmanuel Medernach
2022-06-27 14:32 ` zimoun
@ 2022-06-27 14:42 ` Julien Lepiller
2022-06-27 14:56 ` Emmanuel Medernach
1 sibling, 1 reply; 8+ messages in thread
From: Julien Lepiller @ 2022-06-27 14:42 UTC (permalink / raw)
To: help-guix, Emmanuel Medernach, help-guix
It's possible your packages on machine A are from various guix revisions, if you didn't run "guix update" or didn't use a manifest to install them.
Eg you run "guix install glibc" at revision A, pull revision B where glibc was updated to 2.34. When you list your packages, it still mentions glibc@2.33 because you didn't update it. Then you try to replicate it on another machine by pulling revision B, but that old glibc is no longer available.
Manifests ensure that all packages are from the same revision, although if you pull a new guix without reinstalling the manifest, you'll have the same issue because you're confusing the guix version from which the package was installed, and the current guix version.
On June 27, 2022 3:49:58 PM GMT+02:00, Emmanuel Medernach <Emmanuel.Medernach@iphc.cnrs.fr> wrote:
>Hello,
>
>We are trying to replicate guix packages list on another machine. We are using GUIX on a foreign distro.
>
>Here what we have on machine A:
>
>[Machine A]$ guix describe --format=channels
>(list (channel
> (name 'guix)
> (url "https://git.savannah.gnu.org/git/guix.git")
> (commit
> "a0178d34f582b50e9bdbb0403943129ae5b560ff")
> (introduction
> (make-channel-introduction
> "9edb3f66fd807b096b48283debdcddccfea34bad"
> (openpgp-fingerprint
> "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA")))))
>
>[Machine A]$ guix package --list-installed | sort | awk '//{ print $1 "@" $2; }'
>cmake@3.19.2
>gcc-toolchain@4.9.4
>glibc@2.33
>gsl@2.6
>icu4c@68.2
>make@4.3
>pcre@8.44
>zlib@1.2.11
>
>But on machine B:
>
>[Machine B]$ cat ~/.config/guix/channels.scm
>(list (channel
> (name 'guix)
> (url "https://git.savannah.gnu.org/git/guix.git")
> (commit
> "a0178d34f582b50e9bdbb0403943129ae5b560ff")
> (introduction
> (make-channel-introduction
> "9edb3f66fd807b096b48283debdcddccfea34bad"
> (openpgp-fingerprint
> "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA")))))
>
>[Machine B]$ guix install cmake@3.19.2 gcc-toolchain@4.9.4 glibc@2.33 gsl@2.6 icu4c@68.2 make@4.3 pcre@8.44 zlib@1.2.11
>guix install: error: glibc: package not found for version 2.33
>
>What are we doing wrong ? Please tell us what steps are missing to correctly replicate guix packages to another machine ?
>
>Best regards,
>
>Emmanuel Medernach
>
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Trying to replicate guix packages list on another machine
2022-06-27 14:32 ` zimoun
@ 2022-06-27 14:51 ` Emmanuel Medernach
2022-06-27 15:39 ` zimoun
0 siblings, 1 reply; 8+ messages in thread
From: Emmanuel Medernach @ 2022-06-27 14:51 UTC (permalink / raw)
To: zimoun, help-guix
Le 27/06/2022 à 16:32, zimoun a écrit :
> I guess “guix describe” on ’Machine B’ is not the state specified by
> ’Machine A’. From my understanding, the easiest workflow is:
>
> machine-A$ guix describe -f channels > state-A.scm
> machine-A$ guix package --export-manifest > pkgs-A.scm
>
> exchange these 2 files (even, it is better that these 2 files are
> versioned with the project itsefl ;-))
>
> machine-B$ guix time-machine -C state-A.scm \
> package -m pkg-A.scm \
> -p profile-A
>
>
> This way, the global state of ’Machine B’ is unchanged; in case you are
> working on several projects at various states in the same time.
Thanks, here is the resulting manifest:
(specifications->manifest
(list "gsl"
"pcre"
"icu4c"
"zlib"
"cmake"
"make"
"gcc-toolchain@4.9"
"glibc"))
[Machine B]$ guix time-machine -C ~/.config/guix/channels.scm -- package
-m manifest.scm -p profile-A
...
building profile with 8 packages...
hint: Consider setting the necessary environment variables by running:
GUIX_PROFILE="/iphc/home/emederna/profile-A"
. "$GUIX_PROFILE/etc/profile"
...
[Machine B]$ guix package --list-installed | sort | awk '//{ print $1
"@" $2; }'
cmake@3.19.2
gcc-toolchain@4.9.4
gsl@2.6
icu4c@68.2
make@4.3
pcre@8.44
zlib@1.2.11
Why is glibc missing ?
Emmanuel
> Hope that helps,
> simon
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Trying to replicate guix packages list on another machine
2022-06-27 14:42 ` Julien Lepiller
@ 2022-06-27 14:56 ` Emmanuel Medernach
0 siblings, 0 replies; 8+ messages in thread
From: Emmanuel Medernach @ 2022-06-27 14:56 UTC (permalink / raw)
To: Julien Lepiller, help-guix
Le 27/06/2022 à 16:42, Julien Lepiller a écrit :
> It's possible your packages on machine A are from various guix
> revisions, if you didn't run "guix update" or didn't use a manifest to
> install them.
>
Yes you are right, that is certainly the case
> Eg you run "guix install glibc" at revision A, pull revision B where
> glibc was updated to 2.34. When you list your packages, it still
> mentions glibc@2.33 because you didn't update it. Then you try to
> replicate it on another machine by pulling revision B, but that old
> glibc is no longer available.
>
> Manifests ensure that all packages are from the same revision,
> although if you pull a new guix without reinstalling the manifest,
> you'll have the same issue because you're confusing the guix version
> from which the package was installed, and the current guix version.
>
Then how to install this previous glibc with other packages on machine B ?
Emmanuel
> On June 27, 2022 3:49:58 PM GMT+02:00, Emmanuel Medernach
> <Emmanuel.Medernach@iphc.cnrs.fr> wrote:
>
> Hello,
>
> We are trying to replicate guix packages list on another machine. We are using GUIX on a foreign distro.
>
> Here what we have on machine A:
>
> [Machine A]$ guix describe --format=channels
> (list (channel
> (name 'guix)
> (url"https://git.savannah.gnu.org/git/guix.git")
> (commit
> "a0178d34f582b50e9bdbb0403943129ae5b560ff")
> (introduction
> (make-channel-introduction
> "9edb3f66fd807b096b48283debdcddccfea34bad"
> (openpgp-fingerprint
> "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA")))))
>
> [Machine A]$ guix package --list-installed | sort | awk '//{ print $1 "@" $2; }'
> cmake@3.19.2
> gcc-toolchain@4.9.4
> glibc@2.33
> gsl@2.6
> icu4c@68.2
> make@4.3
> pcre@8.44
> zlib@1.2.11
>
> But on machine B:
>
> [Machine B]$ cat ~/.config/guix/channels.scm
> (list (channel
> (name 'guix)
> (url"https://git.savannah.gnu.org/git/guix.git")
> (commit
> "a0178d34f582b50e9bdbb0403943129ae5b560ff")
> (introduction
> (make-channel-introduction
> "9edb3f66fd807b096b48283debdcddccfea34bad"
> (openpgp-fingerprint
> "BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA")))))
>
> [Machine B]$ guix installcmake@3.19.2 gcc-toolchain@4.9.4 glibc@2.33 gsl@2.6 icu4c@68.2 make@4.3 pcre@8.44 zlib@1.2.11
> guix install: error: glibc: package not found for version 2.33
>
> What are we doing wrong ? Please tell us what steps are missing to correctly replicate guix packages to another machine ?
>
> Best regards,
>
> Emmanuel Medernach
>
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Trying to replicate guix packages list on another machine
2022-06-27 14:51 ` Emmanuel Medernach
@ 2022-06-27 15:39 ` zimoun
2022-06-28 6:30 ` Emmanuel Medernach
0 siblings, 1 reply; 8+ messages in thread
From: zimoun @ 2022-06-27 15:39 UTC (permalink / raw)
To: Emmanuel Medernach, help-guix
Hi,
On Mon, 27 Jun 2022 at 16:51, Emmanuel Medernach <Emmanuel.Medernach@iphc.cnrs.fr> wrote:
> Thanks, here is the resulting manifest:
>
> (specifications->manifest
> (list "gsl"
> "pcre"
> "icu4c"
> "zlib"
> "cmake"
> "make"
> "gcc-toolchain@4.9"
> "glibc"))
>
> [Machine B]$ guix time-machine -C ~/.config/guix/channels.scm -- package
> -m manifest.scm -p profile-A
Here you are installing in the profile ’profile-A’…
> [Machine B]$ guix package --list-installed | sort | awk '//{ print $1
> "@" $2; }'
…and here, you are listing the packages in the default profile
~/.guix-profile. Instead you should run,
machine-B$ guix package -p profile-A -I
Last, as Julien pointed out, it might be possible that on ’Machine-A’
the packages are from various states. You can give a look at:
machine-A$ guix package --list-generations
and so, it is possible that the packages you installed do not match the
current state of Guix. For instance, you could compare:
machine-A$ guix package --export-channels
machine-A$ guix pull -f channels
Well, if you did:
guix pull
guix install gsl
guix pull
guix install pcre
guix pull
guix zlib
etc.
the profile is not composed by only one state therefore it cannot be
replicated. Only a rough approximation can be made.
Or if you did:
guix install gsl pcre icu4c etc.
guix pull
then “guix describe” does not provide the Guix state of the installed
packages.
Cheers,
simon
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Trying to replicate guix packages list on another machine
2022-06-27 15:39 ` zimoun
@ 2022-06-28 6:30 ` Emmanuel Medernach
2022-06-28 8:08 ` zimoun
0 siblings, 1 reply; 8+ messages in thread
From: Emmanuel Medernach @ 2022-06-28 6:30 UTC (permalink / raw)
To: zimoun, help-guix
Le 27/06/2022 à 17:39, zimoun a écrit :
> Hi,
>
> On Mon, 27 Jun 2022 at 16:51, Emmanuel Medernach <Emmanuel.Medernach@iphc.cnrs.fr> wrote:
>
>> Thanks, here is the resulting manifest:
>>
>> (specifications->manifest
>> (list "gsl"
>> "pcre"
>> "icu4c"
>> "zlib"
>> "cmake"
>> "make"
>> "gcc-toolchain@4.9"
>> "glibc"))
>>
>> [Machine B]$ guix time-machine -C ~/.config/guix/channels.scm -- package
>> -m manifest.scm -p profile-A
> Here you are installing in the profile ’profile-A’…
>
>> [Machine B]$ guix package --list-installed | sort | awk '//{ print $1
>> "@" $2; }'
> …and here, you are listing the packages in the default profile
> ~/.guix-profile. Instead you should run,
>
> machine-B$ guix package -p profile-A -I
Thanks, here is the result:
$ guix package -p profile-A -I
glibc 2.31 out /gnu/store/ksy2b6fwfmz40gjajvspl87ia4vsfzj7-glibc-2.31
gcc-toolchain 4.9.4 out
/gnu/store/frmwyxb8zl8vwd7840gb7j526c4dzxh0-gcc-toolchain-4.9.4
make 4.3 out /gnu/store/4k33n2nhsnnaxk2ip75gj7xiqdjns5hq-make-4.3
cmake 3.19.2 out /gnu/store/4axd987cf0bpkshybl1w7g5hp9yqm660-cmake-3.19.2
zlib 1.2.11 out /gnu/store/rykm237xkmq7rl1p0nwass01p090p88x-zlib-1.2.11
icu4c 68.2 out /gnu/store/hjggah4g7vb4db3c62lmmpqplv5g4drh-icu4c-68.2
pcre 8.44 out /gnu/store/k0aqiy7yx8n28dvm3f0a04ka5sd8y950-pcre-8.44
gsl 2.6 out /gnu/store/xq64iaxx2gmlcgnipj31wjxlf1yd2g2p-gsl-2.6
But glibc is 2.31 instead of 2.33
>
> Last, as Julien pointed out, it might be possible that on ’Machine-A’
> the packages are from various states. You can give a look at:
>
> machine-A$ guix package --list-generations
>
> and so, it is possible that the packages you installed do not match the
> current state of Guix. For instance, you could compare:
>
> machine-A$ guix package --export-channels
> machine-A$ guix pull -f channels
>
> Well, if you did:
>
> guix pull
> guix install gsl
> guix pull
> guix install pcre
> guix pull
> guix zlib
> etc.
>
> the profile is not composed by only one state therefore it cannot be
> replicated. Only a rough approximation can be made.
>
> Or if you did:
>
> guix install gsl pcre icu4c etc.
> guix pull
>
> then “guix describe” does not provide the Guix state of the installed
> packages.
Thank you, yes packages installed are always evolving. I will now
promote to use manifests.
Best regards,
Emmanuel
>
> Cheers,
> simon
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: Trying to replicate guix packages list on another machine
2022-06-28 6:30 ` Emmanuel Medernach
@ 2022-06-28 8:08 ` zimoun
0 siblings, 0 replies; 8+ messages in thread
From: zimoun @ 2022-06-28 8:08 UTC (permalink / raw)
To: Emmanuel Medernach, help-guix
Hi,
On Tue, 28 Jun 2022 at 08:30, Emmanuel Medernach <Emmanuel.Medernach@iphc.cnrs.fr> wrote:
> But glibc is 2.31 instead of 2.33
On ’Machine-A’, if you run,
machine-A$ guix package --list-generations
then I guess ’glibc’ is not installed in the same transaction
(generation) as all the others.
You can open the internals. :-) For instance, on ’Machine-A’, give a
look at the internal file ’~/.guix-profile/manifest’. You should see
’glibc’ and its provenance (commit) and I bet it is different from the
other provenance.
Other said, the profile on ’Machine-A’ is populated by various states
(revision). I guess glibc is at 2.31 at one state and then become 2.33
at another state. The command “guix package --export-channels” makes
approximation to pick only one state when the profile is composed by
several ones.
Then it becomes hard, nor impossible, to replicate this multi-state
profile on another machine. “Nor impossible” because it is possible to
use inferiors [1] although I would not recommend going this way.
1: <https://guix.gnu.org/manual/devel/en/guix.html#Inferiors>
> Thank you, yes packages installed are always evolving. I will now
> promote to use manifests.
Well, from my point of view, the best practise is:
1. track channels.scm from “guix pull -f channels”
2. track manifest.scm
then
guix time-machine -C channels.scm -- <cmd> -m manifest.scm
works independently of the time and of the machine; or it should be. ;-)
Cheers,
simon
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-06-28 8:32 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-06-27 13:49 Trying to replicate guix packages list on another machine Emmanuel Medernach
2022-06-27 14:32 ` zimoun
2022-06-27 14:51 ` Emmanuel Medernach
2022-06-27 15:39 ` zimoun
2022-06-28 6:30 ` Emmanuel Medernach
2022-06-28 8:08 ` zimoun
2022-06-27 14:42 ` Julien Lepiller
2022-06-27 14:56 ` Emmanuel Medernach
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/guix.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.