AppImages with "everything" from up-to-date systems (using makeaoi)?

Lutz Vieweg lvml at 5t9.de
Sun Jul 9 16:09:16 PDT 2017


On 07/02/2017 12:30 AM, Dirk Hohndel wrote:
> - I haven't figured out how to build an AppImage with Qt 5.9.1

Is that issue still open?

I am asking, because I recently published a tool "makeaoi" -
https://github.com/lvml/makeaoi
- that implements kind of the "opposite" approach than usual
to create application images:

Instead of compiling the application on some "old" operating system
specifically in preparation to make it "run on almost any system",
the approach with "makeaoi" is to create an application image on
whatever (even very new) system the application is already running
on, without re-compiling it, by having all its (library and data file)
dependencies traced and conveniently packed into an overlay file system
that, on the target system, is mounted via unionfs-fuse "on top of /"
(without root privileges).

I used it successfully to package some new application versions
(such as RawTherapee 5.1) to run them on older CentOS systems, and
making such images from pre-existing binaries is really only a matter
of minutes.

> - none of the distros for which we build distro specific binaries is even
>    on 5.9, let alone 5.9.1

Arch Linux does ship Qt 5.9.1 currently.
I created an AppImage via makeaoi from the Arch-supplied subsurface-4.6.4,
and it works well (at least on my CentOS laptop), which one notable exception:

Accessing device files is (due to FUSE restrictions) limited to a
"faked via regular files" mode I patched into unionfs-fuse, and while
that works very well for the usual /dev/urandom, /dev/zero etc. accesses,
it does not yet support ioctl() stuff like subsurface needs to do
on device files connecting to dive computer hardware.

Now I wonder whether it would be worth putting further efforts into
such a "userspace device file"-emulation.
Personally, I do not need an AppImage of subsurface, and other software
that I package this way does not usually need to access devices directly.

That's why I'm asking here if people are interested in pursuing the
"make AppImages from existing binaries on up-to-date systems" path, at all?


BTW: The subsurface-x86_64.AppImage I created on Arch has a size of
150 MB - so even with all the stuff from glibc to zoneinfo files in it,
that's still a tolerable size, IMHO.
(For reference, find the "packlist.txt" file listing the files and
directories that I packed into this image attached.)

BTW2: When run in a user namespace, subsurface aborts with:
>       > unshare -r /usr/bin/subsurface
>       You are running Subsurface as root. This is not recommended.
>       If you insist to do so, run with option --allow_run_as_root.
Thus I needed to add --allow_run_as_root to my "AppRun" manually.
(The "unshare -r" is required to allow unprivileged users to "chroot"
into the user mounted union filesystem on the target system.)


Regards,

Lutz Vieweg



-------------- next part --------------
/lib64
/usr/bin/marble
/usr/bin/subsurface
/usr/lib/chromium/chromedriver
/usr/lib/gconv/gconv-modules
/usr/lib/grantlee/5.1
/usr/lib/kde4/libexec/kdesu
/usr/lib/kf5/kdesu
/usr/lib/ld-2.25.so
/usr/lib/ld-linux-x86-64.so.2
/usr/lib/libavahi-client.so.3
/usr/lib/libavahi-client.so.3.2.9
/usr/lib/libavahi-common.so.3
/usr/lib/libavahi-common.so.3.5.3
/usr/lib/libblkid.so.1
/usr/lib/libblkid.so.1.1.0
/usr/lib/libbz2.so.1.0
/usr/lib/libbz2.so.1.0.6
/usr/lib/libc-2.25.so
/usr/lib/libc.so.6
/usr/lib/libcap.so.2
/usr/lib/libcap.so.2.25
/usr/lib/libcom_err.so.2
/usr/lib/libcom_err.so.2.1
/usr/lib/libcrypt-2.25.so
/usr/lib/libcrypt.so.1
/usr/lib/libcrypto.so.1.0.0
/usr/lib/libcrypto.so.1.1
/usr/lib/libcups.so.2
/usr/lib/libcurl.so.4
/usr/lib/libcurl.so.4.4.0
/usr/lib/libdbus-1.so.3
/usr/lib/libdbus-1.so.3.14.11
/usr/lib/libdivecomputer.so.0
/usr/lib/libdivecomputer.so.0.0.0
/usr/lib/libdl-2.25.so
/usr/lib/libdl.so.2
/usr/lib/libdouble-conversion.so.1
/usr/lib/libdouble-conversion.so.1.0.0
/usr/lib/libdrm.so.2
/usr/lib/libdrm.so.2.4.0
/usr/lib/libdrm_amdgpu.so.1
/usr/lib/libdrm_amdgpu.so.1.0.0
/usr/lib/libdrm_nouveau.so.2
/usr/lib/libdrm_nouveau.so.2.0.0
/usr/lib/libdrm_radeon.so.1
/usr/lib/libdrm_radeon.so.1.0.1
/usr/lib/libdw-0.169.so
/usr/lib/libdw.so.1
/usr/lib/libedit.so.0
/usr/lib/libedit.so.0.0.56
/usr/lib/libelf-0.169.so
/usr/lib/libelf.so.1
/usr/lib/libexpat.so.1
/usr/lib/libexpat.so.1.6.3
/usr/lib/libffi.so.6
/usr/lib/libffi.so.6.0.4
/usr/lib/libfontconfig.so.1
/usr/lib/libfontconfig.so.1.9.3
/usr/lib/libfreetype.so.6
/usr/lib/libfreetype.so.6.14.0
/usr/lib/libgcc_s.so.1
/usr/lib/libgcrypt.so.20
/usr/lib/libgcrypt.so.20.1.8
/usr/lib/libgio-2.0.so.0
/usr/lib/libgio-2.0.so.0.5200.3
/usr/lib/libgit2.so.0.25.1
/usr/lib/libgit2.so.25
/usr/lib/libGL.so.1
/usr/lib/libGL.so.1.0.0
/usr/lib/libglapi.so.0
/usr/lib/libglapi.so.0.0.0
/usr/lib/libGLdispatch.so.0
/usr/lib/libGLdispatch.so.0.0.0
/usr/lib/libglib-2.0.so.0
/usr/lib/libglib-2.0.so.0.5200.3
/usr/lib/libGLX.so.0
/usr/lib/libGLX.so.0.0.0
/usr/lib/libGLX_mesa.so.0
/usr/lib/libGLX_mesa.so.0.0.0
/usr/lib/libgmodule-2.0.so.0
/usr/lib/libgmodule-2.0.so.0.5200.3
/usr/lib/libgmp.so.10
/usr/lib/libgmp.so.10.3.2
/usr/lib/libgnutls.so.30
/usr/lib/libgnutls.so.30.14.6
/usr/lib/libgobject-2.0.so.0
/usr/lib/libgobject-2.0.so.0.5200.3
/usr/lib/libgpg-error.so.0
/usr/lib/libgpg-error.so.0.22.0
/usr/lib/libGrantlee_Templates.so.5
/usr/lib/libGrantlee_Templates.so.5.1.0
/usr/lib/libgraphite2.so.3
/usr/lib/libgraphite2.so.3.0.1
/usr/lib/libgssapi_krb5.so.2
/usr/lib/libgssapi_krb5.so.2.2
/usr/lib/libgstapp-1.0.so.0
/usr/lib/libgstapp-1.0.so.0.1201.0
/usr/lib/libgstaudio-1.0.so.0
/usr/lib/libgstaudio-1.0.so.0.1201.0
/usr/lib/libgstbase-1.0.so.0
/usr/lib/libgstbase-1.0.so.0.1201.0
/usr/lib/libgstfft-1.0.so.0
/usr/lib/libgstfft-1.0.so.0.1201.0
/usr/lib/libgstpbutils-1.0.so.0
/usr/lib/libgstpbutils-1.0.so.0.1201.0
/usr/lib/libgstreamer-1.0.so.0
/usr/lib/libgstreamer-1.0.so.0.1201.0
/usr/lib/libgsttag-1.0.so.0
/usr/lib/libgsttag-1.0.so.0.1201.0
/usr/lib/libgstvideo-1.0.so.0
/usr/lib/libgstvideo-1.0.so.0.1201.0
/usr/lib/libharfbuzz.so.0
/usr/lib/libharfbuzz.so.0.10400.6
/usr/lib/libhogweed.so.4
/usr/lib/libhogweed.so.4.3
/usr/lib/libhyphen.so.0
/usr/lib/libhyphen.so.0.3.0
/usr/lib/libICE.so.6
/usr/lib/libICE.so.6.3.0
/usr/lib/libicudata.so.59
/usr/lib/libicudata.so.59.1
/usr/lib/libicui18n.so.59
/usr/lib/libicui18n.so.59.1
/usr/lib/libicuuc.so.59
/usr/lib/libicuuc.so.59.1
/usr/lib/libjasper.so.4
/usr/lib/libjasper.so.4.0.0
/usr/lib/libjpeg.so.8
/usr/lib/libjpeg.so.8.1.2
/usr/lib/libk5crypto.so.3
/usr/lib/libk5crypto.so.3.1
/usr/lib/libkeyutils.so.1
/usr/lib/libkeyutils.so.1.6
/usr/lib/libkrb5.so.3
/usr/lib/libkrb5.so.3.3
/usr/lib/libkrb5support.so.0
/usr/lib/libkrb5support.so.0.1
/usr/lib/liblcms2.so.2
/usr/lib/liblcms2.so.2.0.8
/usr/lib/libLLVM-4.0.so
/usr/lib/liblz4.so.1
/usr/lib/liblz4.so.1.7.5
/usr/lib/liblzma.so.5
/usr/lib/liblzma.so.5.2.3
/usr/lib/libm-2.25.so
/usr/lib/libm.so.6
/usr/lib/libmng.so.2
/usr/lib/libmng.so.2.0.2
/usr/lib/libmount.so.1
/usr/lib/libmount.so.1.1.0
/usr/lib/libncursesw.so.6
/usr/lib/libncursesw.so.6.0
/usr/lib/libnettle.so.6
/usr/lib/libnettle.so.6.3
/usr/lib/libnghttp2.so.14
/usr/lib/libnghttp2.so.14.13.3
/usr/lib/libnsl-2.25.so
/usr/lib/libnsl.so.1
/usr/lib/libnss_compat-2.25.so
/usr/lib/libnss_compat.so.2
/usr/lib/libnss_dns-2.25.so
/usr/lib/libnss_dns.so.2
/usr/lib/libnss_files-2.25.so
/usr/lib/libnss_files.so.2
/usr/lib/libnss_mymachines.so.2
/usr/lib/libnss_nis-2.25.so
/usr/lib/libnss_nis.so.2
/usr/lib/libnss_resolve.so.2
/usr/lib/liborc-0.4.so.0
/usr/lib/liborc-0.4.so.0.25.0
/usr/lib/libp11-kit.so.0
/usr/lib/libp11-kit.so.0.3.0
/usr/lib/libpcre.so.1
/usr/lib/libpcre.so.1.2.8
/usr/lib/libpcre2-16.so.0
/usr/lib/libpcre2-16.so.0.5.0
/usr/lib/libpng16.so.16
/usr/lib/libpng16.so.16.30.0
/usr/lib/libpsl.so.5
/usr/lib/libpsl.so.5.1.1
/usr/lib/libpthread-2.25.so
/usr/lib/libpthread.so.0
/usr/lib/libQt5Bluetooth.so.5
/usr/lib/libQt5Bluetooth.so.5.9.1
/usr/lib/libQt5Concurrent.so.5
/usr/lib/libQt5Concurrent.so.5.9.1
/usr/lib/libQt5Core.so.5
/usr/lib/libQt5Core.so.5.9.1
/usr/lib/libQt5DBus.so.5
/usr/lib/libQt5DBus.so.5.9.1
/usr/lib/libQt5Gui.so.5
/usr/lib/libQt5Gui.so.5.9.1
/usr/lib/libQt5Network.so.5
/usr/lib/libQt5Network.so.5.9.1
/usr/lib/libQt5Positioning.so.5
/usr/lib/libQt5Positioning.so.5.9.1
/usr/lib/libQt5PrintSupport.so.5
/usr/lib/libQt5PrintSupport.so.5.9.1
/usr/lib/libQt5Qml.so.5
/usr/lib/libQt5Qml.so.5.9.1
/usr/lib/libQt5Quick.so.5
/usr/lib/libQt5Quick.so.5.9.1
/usr/lib/libQt5Script.so.5
/usr/lib/libQt5Script.so.5.9.1
/usr/lib/libQt5Sensors.so.5
/usr/lib/libQt5Sensors.so.5.9.1
/usr/lib/libQt5Svg.so.5
/usr/lib/libQt5Svg.so.5.9.1
/usr/lib/libQt5WebChannel.so.5
/usr/lib/libQt5WebChannel.so.5.9.1
/usr/lib/libQt5WebKit.so.5
/usr/lib/libQt5WebKit.so.5.212.0
/usr/lib/libQt5WebKitWidgets.so.5
/usr/lib/libQt5WebKitWidgets.so.5.212.0
/usr/lib/libQt5Widgets.so.5
/usr/lib/libQt5Widgets.so.5.9.1
/usr/lib/libQt5XcbQpa.so.5
/usr/lib/libQt5XcbQpa.so.5.9.1
/usr/lib/libQt5Xml.so.5
/usr/lib/libQt5Xml.so.5.9.1
/usr/lib/libreoffice/program/soffice
/usr/lib/libresolv-2.25.so
/usr/lib/libresolv.so.2
/usr/lib/librt-2.25.so
/usr/lib/librt.so.1
/usr/lib/libsensors.so.4
/usr/lib/libsensors.so.4.4.0
/usr/lib/libSM.so.6
/usr/lib/libSM.so.6.0.1
/usr/lib/libsqlite3.so.0
/usr/lib/libsqlite3.so.0.8.6
/usr/lib/libssh2.so.1
/usr/lib/libssh2.so.1.0.1
/usr/lib/libssl.so.1.0.0
/usr/lib/libssl.so.1.1
/usr/lib/libssrfmarblewidget.so.0.21.3
/usr/lib/libssrfmarblewidget.so.21
/usr/lib/libstdc++.so.6
/usr/lib/libstdc++.so.6.0.23
/usr/lib/libsystemd.so.0
/usr/lib/libsystemd.so.0.18.0
/usr/lib/libtasn1.so.6
/usr/lib/libtasn1.so.6.5.4
/usr/lib/libtiff.so.5
/usr/lib/libtiff.so.5.2.6
/usr/lib/libtxc_dxtn.so
/usr/lib/libudev.so.1
/usr/lib/libudev.so.1.6.6
/usr/lib/libunistring.so.2
/usr/lib/libunistring.so.2.0.0
/usr/lib/libunwind.so.8
/usr/lib/libunwind.so.8.0.1
/usr/lib/libusb-1.0.so.0
/usr/lib/libusb-1.0.so.0.1.0
/usr/lib/libuuid.so.1
/usr/lib/libuuid.so.1.3.0
/usr/lib/libwebp.so.7
/usr/lib/libwebp.so.7.0.0
/usr/lib/libwebpdemux.so.2
/usr/lib/libwebpdemux.so.2.0.2
/usr/lib/libX11-xcb.so.1
/usr/lib/libX11-xcb.so.1.0.0
/usr/lib/libX11.so.6
/usr/lib/libX11.so.6.3.0
/usr/lib/libXau.so.6
/usr/lib/libXau.so.6.0.0
/usr/lib/libxcb-dri2.so.0
/usr/lib/libxcb-dri2.so.0.0.0
/usr/lib/libxcb-dri3.so.0
/usr/lib/libxcb-dri3.so.0.0.0
/usr/lib/libxcb-glx.so.0
/usr/lib/libxcb-glx.so.0.0.0
/usr/lib/libxcb-icccm.so.4
/usr/lib/libxcb-icccm.so.4.0.0
/usr/lib/libxcb-image.so.0
/usr/lib/libxcb-image.so.0.0.0
/usr/lib/libxcb-keysyms.so.1
/usr/lib/libxcb-keysyms.so.1.0.0
/usr/lib/libxcb-present.so.0
/usr/lib/libxcb-present.so.0.0.0
/usr/lib/libxcb-randr.so.0
/usr/lib/libxcb-randr.so.0.1.0
/usr/lib/libxcb-render-util.so.0
/usr/lib/libxcb-render-util.so.0.0.0
/usr/lib/libxcb-render.so.0
/usr/lib/libxcb-render.so.0.0.0
/usr/lib/libxcb-shape.so.0
/usr/lib/libxcb-shape.so.0.0.0
/usr/lib/libxcb-shm.so.0
/usr/lib/libxcb-shm.so.0.0.0
/usr/lib/libxcb-sync.so.1
/usr/lib/libxcb-sync.so.1.0.0
/usr/lib/libxcb-util.so.1
/usr/lib/libxcb-util.so.1.0.0
/usr/lib/libxcb-xfixes.so.0
/usr/lib/libxcb-xfixes.so.0.0.0
/usr/lib/libxcb-xinerama.so.0
/usr/lib/libxcb-xinerama.so.0.0.0
/usr/lib/libxcb-xkb.so.1
/usr/lib/libxcb-xkb.so.1.0.0
/usr/lib/libxcb.so.1
/usr/lib/libxcb.so.1.1.0
/usr/lib/libXcursor.so.1
/usr/lib/libXcursor.so.1.0.2
/usr/lib/libXdamage.so.1
/usr/lib/libXdamage.so.1.1.0
/usr/lib/libXdmcp.so.6
/usr/lib/libXdmcp.so.6.0.0
/usr/lib/libXext.so.6
/usr/lib/libXext.so.6.4.0
/usr/lib/libXfixes.so.3
/usr/lib/libXfixes.so.3.1.0
/usr/lib/libXi.so.6
/usr/lib/libXi.so.6.1.0
/usr/lib/libxkbcommon-x11.so.0
/usr/lib/libxkbcommon-x11.so.0.0.0
/usr/lib/libxkbcommon.so.0
/usr/lib/libxkbcommon.so.0.0.0
/usr/lib/libxml2.so.2
/usr/lib/libxml2.so.2.9.4
/usr/lib/libXrender.so.1
/usr/lib/libXrender.so.1.3.0
/usr/lib/libxshmfence.so.1
/usr/lib/libxshmfence.so.1.0.0
/usr/lib/libxslt.so.1
/usr/lib/libxslt.so.1.1.29
/usr/lib/libXxf86vm.so.1
/usr/lib/libXxf86vm.so.1.0.0
/usr/lib/libz.so.1
/usr/lib/libz.so.1.2.11
/usr/lib/libzip.so.5
/usr/lib/libzip.so.5.0.0
/usr/lib/locale/locale-archive
/usr/lib/qt/plugins/
/usr/lib/wx/config/gtk2-unicode-3.0
/usr/lib/wx/config/gtk3-unicode-3.0
/usr/lib/xorg/modules/dri
/usr/share/fonts/TTF/DejaVuSans-Bold.ttf
/usr/share/fonts/TTF/DejaVuSans-Oblique.ttf
/usr/share/fonts/TTF/DejaVuSans.ttf
/usr/share/gnome-documents/org.gnome.Books
/usr/share/gnome-documents/org.gnome.Documents
/usr/share/gnome-maps/org.gnome.Maps
/usr/share/gnome-sound-recorder/org.gnome.SoundRecorder
/usr/share/icons/Adwaita/cursors/bd_double_arrow
/usr/share/icons/Adwaita/cursors/left_ptr
/usr/share/icons/Adwaita/cursors/sb_h_double_arrow
/usr/share/icons/Adwaita/cursors/sb_v_double_arrow
/usr/share/icons/Adwaita/cursors/size_fdiag
/usr/share/icons/Adwaita/cursors/xterm
/usr/share/icons/Adwaita/index.theme
/usr/share/icons/default/index.theme
/usr/share/icons/hicolor/icon-theme.cache
/usr/share/icons/hicolor/index.theme
/usr/share/kajongg/kajongg.py
/usr/share/kajongg/kajonggserver.py
/usr/share/locale/locale.alias
/usr/share/marble
/usr/share/mime/application/octet-stream.xml
/usr/share/mime/image/png.xml
/usr/share/mime/image/svg+xml.xml
/usr/share/mime/mime.cache
/usr/share/mime/types
/usr/share/org.gnome.Characters/org.gnome.Characters
/usr/share/org.gnome.Weather/org.gnome.Weather.Application
/usr/share/subsurface
/usr/share/X11/locale/en_US.UTF-8/XLC_LOCALE
/usr/share/X11/locale/locale.alias
/usr/share/X11/locale/locale.dir
/usr/share/zoneinfo


More information about the subsurface mailing list