Home

Awesome

<h1 align="center"> <img src="make-portable.png" alt="make-portable"> <br /> make-portable| <a href="https://github.com/sudo-give-me-coffee/make-portable/releases/download/continuous/make-portable">Download amd64</a> </h1> <p align="center"><i>"The easiest way to make a glibc executable portable on Linux"</i>.<br> It works on any Linux distro with GNU Lib C 2.0, Kernel 3.x or higher</p>

How it works?

On build time:

This tool uses strace to fetch all file system calls and copy all accessed files into AppDir including the glibc. After copying files he wraps all executables inside AppDir.

On run time:

The wrappers import the launcher bash library into the root of AppDir which sets up an environment that forces executables to look for files only inside the appdir, any binary inside AppDir is called using internal glibc. This is done using libunion.so thats redirect calls to system filesystem to AppDir using this logic: if file exist in AppDir use it, if not, use the original system path. And finally libexec.so detects if an internal binary calls an executable outside of AppDir, if that happens it sets the environment variables as they were when AppRun was called

Commandline options

Example:

./make-portable --appdir=LXTask \
                --autoclose=10 \
                --desktop=lxtask \
                --icon=/usr/share/icons/gnome/256x256/apps/utilities-system-monitor.png lxtask

Notes:

Compatibility with linux distros

Compatibility is at the GNU C Library level, so the resulting AppDir is expected to be compatible with all Linux distros with kernel 3.x or later and bash 4.x or later

Compatibility with packaging formats:

AppImage

If icon and desktop file is provided the compatibility is seamless

Native (.deb, .rpm, .apk...)

If the desktop file and icon are provided and the --installable-package parameter is used, the compatibility is semi-perfect, you only need to write the package configuration files, note that the package has no dependency (except Bash)

Snaps and Flatpaks

Is theoretically compatible but not tested

Known Drawbacks

Credits: