Hi, thanks for help I tried this script in the terminal.
1. gfp@Tuxedo ~$ ./update-profiles.sh it saidguix 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/shGUIX_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 <[email protected]> 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 GottfriedI 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
OpenPGP_0x61FAF349C9FB7F94.asc
Description: OpenPGP public key
OpenPGP_signature
Description: OpenPGP digital signature
