all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Wojtek Kosior via <help-guix@gnu.org>
To: Gottfried <gottfried@posteo.de>
Cc: Gary Johnson <lambdatronic@disroot.org>, help-guix@gnu.org
Subject: Re: update-profiles.sh
Date: Mon, 24 Apr 2023 20:11:55 +0200	[thread overview]
Message-ID: <20230424201155.35dcfbc0.koszko@koszko.org> (raw)
In-Reply-To: <f571f849-01aa-b77e-ae6c-97206ca80ec5@posteo.de>

[-- Attachment #1: Type: text/plain, Size: 8454 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?

Oooops, there's probably been a mistake.

Looking at your emails from an older thread, it seems your profile
paths were like "/home/gfp/Projects/Calibre/guix-profil" and
"/home/gfp/Projects/Musik/guix-profil". Is that correct, is there
"guix-profil" at the end of every profile path? And here, with this
script, I erroneously assumed profile paths like
"/home/gfp/Projects/Calibre/calibre" and
"/home/gfp/Projects/Musik/musik". I apologize :(

We need to adapt the script to use the correct profile paths. I think
you could use something like

```
#!/bin/sh

GUIX_PROFILES=$HOME/Projekte

for dir in $GUIX_PROFILES/*
do
     name="$(basename "$dir" | tr '[:upper:]' '[:lower:]')"
     manifest="$dir"/"$name".scm
     profile="$dir"/guix-profil
     if [ -r $manifest ]
     then
         guix package --manifest="$manifest" --profile="$profile"
     fi
done
```

Also, the script I prepared previously probably created some extraneous
profiles at the paths it was trying to use. Again, sorry if this
happened. You might want to remove the extra profiles you'll find.

Good luck,
Wojtek

-- (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 15:42:38 +0000
Gottfried <gottfried@posteo.de> wrote:

> 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 #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

  reply	other threads:[~2023-04-24 18:12 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   ` update-profiles.sh Gottfried
2023-04-24 18:11     ` Wojtek Kosior via [this message]
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

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

  git send-email \
    --in-reply-to=20230424201155.35dcfbc0.koszko@koszko.org \
    --to=help-guix@gnu.org \
    --cc=gottfried@posteo.de \
    --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.
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.