appimage-builder includes support for making applications created with several technologies portable. It patches bundle files and define environment variables so every binary behaves as expected.
Here you will fin a list of those with the features they support.
The GNU C Library (glibc)¶
glibc is at the core of almost every GNU/Linux binary and is responsible for dynamic linking and other start related processes. appimage-builder makes use of the AppRun project to deal with the complexities of runtime setup.
The most significant issue is that AppImage must be always ran with the newest version of the glibc. To workaround this issue appimage-builder setups two runtimes according to the AppRun specifications. At runtime AppRun will select the right one.
See the AppRun usage instructions for more details.
In case custom mime-types are include the update-mime-database command will be executed to generate the respective cache file.
GStreamer is a library for constructing graphs of media-handling components. When included appimage-builder will define the following environment variables:
It will also run gst “diagnostic” to force registry generation.
You can find more detail about running gstreamer applications at: https://gstreamer.freedesktop.org/documentation
When bundled appimage-builder the following environment variables:
Additionally it will run:
- glib-compile-schemas: to ensure that schema files inside the bundle get compiled
- gdk-pixbuf-query-loaders: to build loaders cache file. File paths will be patched
- gtk-update-icon-cache: to generate the icon theme cache files
See https://docs.gtk.org/glib/running.html for more details about running Glib/Gtk applications.
Qt5 is a cross-platform software development framework. When included in the bundle the tool will create a qt.conf file with the proper configuration next to each executable to ensure they will be able to find their resources at runtime.
You can read more about the qt.conf file at: https://doc.qt.io/qt-5/qt-conf.html
Java is a programing language and development platform. When included in a bundle the JAVA_HOME environment will be configured to the parent dir where the java binary is found.
Python is a high-level, interpreted, general-purpose programming language. When included in the bundle the PYTHONHOME will be set to the parent dir where the python binary is found.
In cases when multiple versions of python are bundled you will have to manually define this variable.
When libopenssl is embed the OPENSSL_ENGINES environment variable will be set to the proper location in the bundle.
You chan check the generated AppRun.env file to verify it’s being set properly.