Setup Helpers¶
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.
MIME TYPES¶
In case custom mime-types are include the update-mime-database command will be executed to generate the respective cache file.
GStreamer¶
GStreamer is a library for constructing graphs of media-handling components. When included appimage-builder will define the following environment variables:
- GST_PLUGIN_PATH
- GST_PLUGIN_SYSTEM_PATH
- GST_REGISTRY_REUSE_PLUGIN_SCANNER
- GST_PLUGIN_SCANNER
- GST_PTP_HELPER
- GST_REGISTRY
It will also run gst “diagnostic” to force registry generation.
Note
You can find more detail about running gstreamer applications at: https://gstreamer.freedesktop.org/documentation
glib/gdk/gtk¶
When bundled appimage-builder the following environment variables:
- GIO_MODULE_DIR
- GI_TYPELIB_PATH
- GSETTINGS_SCHEMA_DIR
- GDK_PIXBUF_MODULEDIR
- GDK_PIXBUF_MODULE_FILE
- GTK_EXE_PREFIX
- GTK_DATA_PREFIX
- GTK_PATH
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
Note
See https://docs.gtk.org/glib/running.html for more details about running Glib/Gtk applications.
Qt5¶
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.
Note
You can read more about the qt.conf file at: https://doc.qt.io/qt-5/qt-conf.html
Java¶
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¶
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.
Note
In cases when multiple versions of python are bundled you will have to manually define this variable.
OpenSSL¶
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.
LibGL¶
libGL requires a set of drivers to work properly. Those are usually located at <libs path>/dri/. This path will be set to the environment variable LIBGL_DRIVERS_PATH
Note
Embedding libGL and family is discouraged as your app will not be able to use your system drivers.