unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
* 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

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).