Hello all and @probono! Thank you for your answers in these threads! It helps to understand AppImage concepts!
Could you please advise me in my case. I’m trying to create portable stand alone shell along with couple of tools. It consists of:
- zsh shell — in general it requires home directory with .zshrc file with settings
-
OMZ themes — in general it’s just a directory in home dir and
.zshrc
containssource
and settings of the files - python 3 with packages — installation via conda for example as described in AppImage/Bundling-Python-apps
-
autojump — python based tool for zsh — in general it’s just a directory in home dir and
.zshrc
containssource
and settings of the files AND it can write cache to ~/.local
I already made first step and tried to create zsh AppImage via linuxdeploy/linuxdeploy-plugin-conda
. It was executed perfect and zsh was running but I faced with issues:
1] When I for experiment delete AppDir and try to use zsh AppImage it show the error:
zsh: failed to load module zsh/zle: /tmp/test/AppDir/usr/conda/lib/zsh/5.6.2/zsh/zle.so: cannot open shared object file: No such file or directory
2] If I for experiment didn’t delete AppDir then zsh worked and I tried to include OMZ in .zshrc and I’ve faced with the errors:
$ mkdir /tmp/test/shell_home
$ git clone https://github.com/robbyrussell/oh-my-zsh/
$ echo '...connect OMZ...' > /tmp/test/shell_home/.zshrc
$ export ZDOTDIR=/tmp/test/shell_home
$ ./zsh-x86_64.AppImage
/tmp/test/shell_home/oh-my-zsh/oh-my-zsh.sh:72: compinit: function definition file not found
/tmp/test/shell_home/oh-my-zsh/lib/completion.zsh:23: command not found: zstyle
/tmp/test/shell_home/oh-my-zsh/lib/key-bindings.zsh:20: command not found: bindkey
/tmp/test/shell_home/oh-my-zsh/plugins/git/git.plugin.zsh:119: command not found: compdef
It looks like OMZ expects zsh in the current env and probably should be packed with zsh in the AppImage.
So I’m here and want to ask advice and start from basic questions to understand:
-
Can I pack all 1-4 items from my list in one AppImage and use from shell which run as AppImage OR I should create separate AppImages for zsh, python and autojump and run it together thru configs and scripting?
-
What is the best way to pack shell (zsh) into AppImage? If it helps: my experiments shows that zsh has absolute paths for libs inside zsh executable and should be rebuilded from source with appropriate PREFIX for non standard directory.
-
For python I’ve read Bundling-Python-apps and choose conda. Any advice on this with my case?
-
OMZ and autojump — it’s external scripts but they expect environment around. Should I pack them inside AppImage or for example I can place it to AppImage.home and write entrypoint script which will fix paths and then run zsh?
What use case I expect at the end of story: I have portable shell with tools — it’s one or couple of AppImages with scripting files around which I can place on any OS which supported AppImage and run without installation.
Thanks for answers!