guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: ~/.guix-profile/manifest usage with "guix package -m [manifest]" / "


From: YOANN P
Subject: RE: ~/.guix-profile/manifest usage with "guix package -m [manifest]" / "guix pack -m [manifest]" etc..
Date: Mon, 1 Oct 2018 22:40:09 +0000

>De : George Clemmer <address@hidden>
>
>>Ludovic Courtès <address@hidden> writes:
>
>> Hello,
>>
>> YOANN P <address@hidden> skribis:
>>
>>> I was thinking than "~/.guix-profile/manifest" was a valid manifest file 
>>> due to his name, but it seems not that is the case from the error i've got
>>>
>>> https://pastebin.com/Z7h2t5mL
>>>
>>> After some search , i've finally understand that the instantiated profile 
>>> couldn't be used as source profile for "guix package -m" etc... due to the 
>>> same words despite use case and is a bit confusing
>>
>> I agree it’s a bit confusing.  The manual does make it clear that -m
>> expects source code that evaluates to a manifest object, though.
>>
>>> https://gnunet.org/bot/log/guix/2016-05-27#T1040380
>>>
>>> It will be really convenient to only have the instantiate profile to easily 
>>> maintain it in a vcs system.
>>>
>>> Despite what ludo said in 2016 on IRC, i didn't see those options yet.
>>> Did i missed them ?
>>> If not implemented yet, any news about this feature ? :)
>>
>> No news I’m afraid :-) but I’ve opened an issue so we keep track of it:
>>
>>   https://issues.guix.info/issue/32844

Hi George,

>Hi Ludo’,
>
>Your bug doesn't capture some other manifest issues ...
>
>"~/.guix-profile/manifest" and 'guix package --manifest=FILE' use the
>same term/filename for markedly different things and the doc is silent
>on the distinction. While "~/.guix-profile/manifest" may be internal to
>Guix, users will inevitably trip across it and be confused (as YOANN did
>here, and I did a year ago).
>
>We might avoid confusion and make documentation easier by renaming one
>of these. Consider ...
>
>We are using "~/.guix-profile/manifest" in a way that is consistent with
>a common use, e.g., shipping manifest, which specifies information not
>in the associated order and at a level of detail that can only be
>determined at shipment (e.g. serial number).
>
>Our use of manifest in 'guix package --manifest=FILE' is rather less
>intuitive. In fact this FILE is more like an order than a manifest,
>IMO. As the doc says, [the manifest] 'FILE must return a “manifest”
>object, which is roughly a list of packages'. If we were to rename this
>a "package-list" or "package-spec", this would be more intuitive and
>self-explanatory (at least to me, an English speaker), and make the doc
>easier to write/understand.
>
>YOANN hit an error when trying to do 'guix package -m
>~/.guix-profile/manifest'. Why would one want to do this? Maybe to
>(re)produce a configuration previously reached by a series of 'guix
>package -i' operations?
>

Exactly that use case.
As said, i'm looking a way to have "a snapshot" of my profile to versioning it 
and be able to reproduce the exact same environnement associated if needed.
This way we could easily share the exact same environnement in dev, desktop 
case etc...

I don't know the utility of the instantiate manifest and the relations with it, 
but more precisly, this is how i had imaginated the instantiate manifest file 
at first and now how i would like to see / use it :

- Keep the informations who can only be determined at shipment
- All the informations necessary to build the environneent are there too and 
would override on the fly the .scm system definitions for the pakages list 
inside the profile. This way if the Guix system scm files was updated, guix 
would be always able to build the profile.

I don't know the implications of this feature, but Guix definilty need it if it 
didn't already exist :)

>In most situations, rather than a "~/.guix-profile/manifest" file, one
>wants to use a 'guix package --manifest=FILE', since this is more
>durable over time and easier to maintain (e.g. in SCC).
>

and please, even be able to read it from /dev/stdin.
it seems not available at now and is one of the last things i'm missing to be 
able to install a manifest through SSH.
My use case is to be able to install a profile on a rootless computer through 
SSH if needed.
I am today able to install some packages on a computer without root access and 
without guix installed in this way :

ssh address@hidden -- '-R -S /opt/bin=/bin -S /etc=etc hello' | tar -xzf -

cloud_init.sh (debian stretch) : 
https://gist.github.com/rockandska/52d1a76b87e1e7bd6ce137c4ddab4b11

and what i would like to achieve is to be able to pipe a manifest from the 
rootless computer to the remote Guix server like this :

/tmp $ cat local_manifest | ssh address@hidden -- '-R -m /dev/stdin -S 
/opt/bin=/bin -S /etc=etc hello' | tar -xzf -

Not sure about the security as is,not sure if it is the best way to do it too, 
but i had fun to test it and i would like to test it as an "anonymous" service 
for fun too ^^

>So, IMO, it would be useful to have something like ...
>
>guix package --manifest-from-profile -p ~/.guix-profile > FILE
>
>... which returns a "minimally specified" FILE that allows 'guix package
>--manifest=FILE' to reproduce "~/.guix-profile".
>
>- George

Yoann


reply via email to

[Prev in Thread] Current Thread [Next in Thread]