unofficial mirror of help-guix@gnu.org 
 help / color / mirror / Atom feed
From: Gottfried <gottfried@posteo.de>
To: Wojtek Kosior <koszko@koszko.org>
Cc: Gary Johnson <lambdatronic@disroot.org>, help-guix@gnu.org
Subject: Re: update-profiles.sh
Date: Mon, 24 Apr 2023 15:42:38 +0000	[thread overview]
Message-ID: <f571f849-01aa-b77e-ae6c-97206ca80ec5@posteo.de> (raw)
In-Reply-To: <20230424140548.41fb9f7b.koszko@koszko.org>


[-- Attachment #1.1.1: Type: text/plain, Size: 6160 bytes --]

Hi,
thanks for help

I tried this script in the terminal.

1.
gfp@Tuxedo ~$ ./update-profiles.sh

it said
guix package: Error: Profile /home/gfp/Projects/Calibre/calibre is 
locked by another process

I didn’t open calibre, so what could be the problem?


2. it installed almost all packages from all profiles
without icecat, probably because I had it opened.

3. It did not install my "Musik" profile with several packages.
is locked by another process

I am not sure about that, because I haven't opened any of those packages.


So we have success.
Thank you very much.
You saved me a lot of time and headache.


Kind regards

Gottfried


> #!/bin/sh
>> 
>> GUIX_PROFILES=$HOME/Projekte
>> 
>> for dir in $GUIX_PROFILES/*
>> do
>>       name=$(basename "$dir" | tr '[:upper:]' '[:lower:]')
>>       manifest="$dir"/$name.scm
>>       profile=$dir/$name
>>       if [ -r $manifest ]
>>       then
>>           guix package --manifest="$manifest" --profile="$profile"
>>       fi
>> done



Am 24.04.23 um 14:05 schrieb Wojtek Kosior:
> Hi Gottfried,
> 
> I see several problems with `update-profiles.sh`.
> - You wrote `GUIX_PROFILES=home/gfp/Projekte`, without leading slash.
>    This makes the shell treat this path as a relative one. You need to
>    use either `/home/gfp/Projekte` or just '$HOME/Projekte'.
> - This script assumes manifests to be stored in a completely different
>    place than they really are in your case.
> - There's no need to `unset` the loop variables at every iteration. At
>    least as long as this script is executed and not sourced. I'm
>    mentioning this although a few extraneous `unset`s are not going to
>    cause problems. Don't worry too much about this.
> 
> I edited the script. Try with this version
> 
> ```
> #!/bin/sh
> 
> GUIX_PROFILES=$HOME/Projekte
> 
> for dir in $GUIX_PROFILES/*
> do
>       name=$(basename "$dir" | tr '[:upper:]' '[:lower:]')
>       manifest="$dir"/$name.scm
>       profile=$dir/$name
>       if [ -r $manifest ]
>       then
>           guix package --manifest="$manifest" --profile="$profile"
>       fi
> done
> ```
> 
> -- (sig_start)
> website: https://koszko.org/koszko.html
> PGP: https://koszko.org/key.gpg
> fingerprint: E972 7060 E3C5 637C 8A4F  4B42 4BC5 221C 5A79 FD1A
> 
> ♥ R29kIGlzIHRoZXJlIGFuZCBsb3ZlcyBtZQ== | ÷ c2luIHNlcGFyYXRlZCBtZSBmcm9tIEhpbQ==
> ✝ YnV0IEplc3VzIGRpZWQgdG8gc2F2ZSBtZQ== | ? U2hhbGwgSSBiZWNvbWUgSGlzIGZyaWVuZD8=
> -- (sig_end)
> 
> 
> On Mon, 24 Apr 2023 11:22:46 +0000
> Gottfried <gottfried@posteo.de> wrote:
> 
>> Hi,
>>
>> Sorry,
>> you provided me already with a script for activating all profiles at login,
>> I don’t know at the moment, why I have mixed it up with other things
>> and  I didn’t use it.
>> ------------------------------------------------------------
>> in the meantime all packages are available at login
>> through the help of Martin
>> ------------------------------------------------------------
>>
>> so I tried to use your "update-profiles.sh"
>> I placed it in my home directory: ~/gfp
>> and changed one sentence, my the place of the profiles:
>>
>> update-profiles.sh
>>
>> #!/bin/sh
>>
>> GUIX_MANIFESTS=$HOME/sys/guix/manifests
>> GUIX_PROFILES=home/gfp/Projekte
>>
>> for dir in $GUIX_PROFILES/*
>> do
>>       name=$(basename "$dir")
>>       manifest=$GUIX_MANIFESTS/$name.scm
>>       profile=$dir/$name
>>       if [ -r $manifest ]
>>       then
>>           guix package --manifest="$manifest" --profile="$profile"
>>       fi
>>       unset profile
>>       unset manifest
>>       unset name
>> done
>>
>> -------------------------------------------------
>>
>> but running it, it seems not doing anything.
>>
>> sometimes it’s difficult for me, to know so little, not knowing what I
>> have to do, not knowing the basics ...
>>
>> Is it connected with the other script to activate the profiles at login?
>> so that it doesn’t work?
>> I guess both scripts are independent.
>>
>> or is the path to it wrong?
>> I have the directory
>> ~/gfp/Projekte
>>
>> and in it many directories/which are the different profiles, e.g:
>> Musescore, Musik, Emacs, Calibre, Gnucash, Icecat, Libreoffice,
>> Photoflare, Lilypond
>>
>> and in each of these directories a scm.file with the same name but in
>> small letters like: musescore.scm, musik.scm, emacs.scm ...
>>
>>
>>
>> Kind regards
>>
>> Gottfried
>>
>>> I believe I already provided you with the code for updating profiles and
>>> activating them, but here it is again for reference:
>>>
>>> ```update-profiles.sh
>>> #!/bin/sh
>>>
>>> GUIX_MANIFESTS=$HOME/sys/guix/manifests
>>> GUIX_PROFILES=$HOME/sys/guix/profiles
>>>
>>> for dir in $GUIX_PROFILES/*
>>> do
>>>      name=$(basename "$dir")
>>>      manifest=$GUIX_MANIFESTS/$name.scm
>>>      profile=$dir/$name
>>>      if [ -r $manifest ]
>>>      then
>>>          guix package --manifest="$manifest" --profile="$profile"
>>>      fi
>>>      unset profile
>>>      unset manifest
>>>      unset name
>>> done
>>> ```
>>>
>>> ```activate-profiles.sh
>>> #!/bin/sh
>>>
>>> GUIX_PROFILES=$HOME/sys/guix/profiles
>>>
>>> for dir in $GUIX_PROFILES/*
>>> do
>>>      name=$(basename "$dir")
>>>      profile=$dir/$name
>>>      if [ -f "$profile"/etc/profile ]
>>>      then
>>>          GUIX_PROFILE="$profile"
>>>          . "$GUIX_PROFILE"/etc/profile
>>>          export MANPATH="$GUIX_PROFILE/share/man${MANPATH:+:}$MANPATH"
>>>          export INFOPATH="$GUIX_PROFILE/share/info${INFOPATH:+:}$INFOPATH"
>>>      fi
>>>      unset profile
>>>      unset name
>>> done
>>> ```
>>>
>>> These scripts both loop over my manifests or profiles directories,
>>> running the upgrade or activate commands on each one. If you want to
>>> exclude a profile from being upgraded with this script, you can just
>>> take away its manifest's read permissons like so:
>>>
>>> ```
>>> chmod -r $HOME/sys/guix/manifests/my-excluded-manifest.scm
>>> ```
>>>
>>> Good luck,
>>>    Gary



[-- Attachment #1.1.2: OpenPGP public key --]
[-- Type: application/pgp-keys, Size: 3191 bytes --]

[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]

  reply	other threads:[~2023-04-24 15:43 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-24 11:22 update-profiles.sh Gottfried
2023-04-24 12:05 ` update-profiles.sh Wojtek Kosior via
2023-04-24 15:42   ` Gottfried [this message]
2023-04-24 18:11     ` update-profiles.sh Wojtek Kosior via
2023-04-25 15:51       ` update-profiles.sh Gottfried

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f571f849-01aa-b77e-ae6c-97206ca80ec5@posteo.de \
    --to=gottfried@posteo.de \
    --cc=help-guix@gnu.org \
    --cc=koszko@koszko.org \
    --cc=lambdatronic@disroot.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).