Hi,

I am currently working on finishing a patch to add the AppImage format
to guix pack.  Everything is working fine, but a problem arises with the
elf interpreter section contained in the executable.

AppImages are made of an executable runtime that is attached a squashfs
image of the application to run.  As any other linux executable it needs
to specify an interpreter path to run, on guix this could be
/gnu/store/ln6hxqjvz6m9gdd9s97pivlqck7hzs99-glibc-2.35/lib/ld-linux-x86-64.so.2
but on other distros it will be /lib64/ld-linux-x86-64.so.2.  This is
often why you can’t run external binaries on guix without using patchelf
to set the correct interpreter.

This means AppImages built on Guix can’t be distributed to other
distros, and vice-versa.  This is why I propose that we set a symlink to
/lib64/ld-linux-x86-64.so.2, the interpreter path used on all the other
distros (I think) the same way /usr/bin/env is used to make scripts
function.

In this way, I could build the AppImages with the portable path and have
the AppImage work both on guix and other distros.  Another solution is
to build the AppImages statically with musl libc, but that is much more
complicated.

Tell me what you think,
Noé Lopez

Reply via email to