Description
I am trying to package a software on Ubuntu 20.04. So far, building the AppImage worked fine, but the new software release now depends on gstreamer and I cannot make it work.
I'm using a supposedly standard linux-deploy
command:
EXTRA_QT_PLUGINS=xcb linuxdeploy-x86_64.AppImage --appdir AppDir/ -e ... --icon-file=... --desktop-file=... --plugin qt --plugin gstreamer --output=appimage
When I try to run this AppImage on anything (Ubuntu 22.04, Mint 20.03), I get this output (list is actually much longer, probably for all plugins):
(gst-plugin-scanner:97177): GStreamer-WARNING **: 16:09:05.572: Failed to load plugin '/tmp/.mount_imagemvUlwpv/usr/lib/gstreamer-1.0/libgstcamerabin.so': /tmp/.mount_imagemvUlwpv/usr/lib/gstreamer-1.0/libgstcamerabin.so: undefined symbol: gst_encoding_container_profile_get_profiles
(gst-plugin-scanner:97178): GStreamer-WARNING **: 16:09:05.585: Failed to load plugin '/tmp/.mount_imagemvUlwpv/usr/lib/gstreamer-1.0/libgstcdparanoia.so': /tmp/.mount_imagemvUlwpv/usr/lib/gstreamer-1.0/libgstcdparanoia.so: undefined symbol: gst_audio_cd_src_get_type
(gst-plugin-scanner:97179): GStreamer-WARNING **: 16:09:05.598: Failed to load plugin '/tmp/.mount_imagemvUlwpv/usr/lib/gstreamer-1.0/libgstchromaprint.so': /tmp/.mount_imagemvUlwpv/usr/lib/libchromaprint.so.1: undefined symbol: av_rdft_calc, version LIBAVCODEC_58
(gst-plugin-scanner:97180): GStreamer-WARNING **: 16:09:05.615: Failed to load plugin '/tmp/.mount_imagemvUlwpv/usr/lib/gstreamer-1.0/libgstclosedcaption.so': /lib/x86_64-linux-gnu/libgio-2.0.so.0: undefined symbol: g_module_open_full
(gst-plugin-scanner:97181): GStreamer-WARNING **: 16:09:05.626: Failed to load plugin '/tmp/.mount_imagemvUlwpv/usr/lib/gstreamer-1.0/libgstcoloreffects.so': /tmp/.mount_imagemvUlwpv/usr/lib/gstreamer-1.0/libgstcoloreffects.so: undefined symbol: gst_video_filter_get_type
In order to trace this error, I extracted the AppImage. "usr/lib/gstreamer-1.0" contains lots of .so
files for plugins and there are gst libraries in "usr/lib":
squashfs-root/usr/lib$ ls libgst*
libgstadaptivedemux-1.0.so.0 libgstaudio-1.0.so.0 libgstbasecamerabinsrc-1.0.so.0 libgstfft-1.0.so.0 libgstmpegts-1.0.so.0 libgstphotography-1.0.so.0 libgstrtp-1.0.so.0 libgstsdp-1.0.so.0 libgstvideo-1.0.so.0
libgstallocators-1.0.so.0 libgstbadaudio-1.0.so.0 libgstcodecparsers-1.0.so.0 libgstgl-1.0.so.0 libgstnet-1.0.so.0 libgstreamer-1.0.so.0 libgstrtsp-1.0.so.0 libgsttag-1.0.so.0 libgstwayland-1.0.so.0
libgstapp-1.0.so.0 libgstbase-1.0.so.0 libgstcontroller-1.0.so.0 libgstisoff-1.0.so.0 libgstpbutils-1.0.so.0 libgstriff-1.0.so.0 libgstsctp-1.0.so.0 libgsturidownloader-1.0.so.0 libgstwebrtc-1.0.so.0
As the first error said that it was missing the symbol gst_encoding_container_profile_get_profiles
, I searched for that and found it here:
squashfs-root/usr/lib$ nm -gD libgstpbutils-1.0.so.0 |grep gst_encoding_container_profile_get_profiles
00000000000189c0 T gst_encoding_container_profile_get_profiles
Thus, it looks like it should be there.
If I build the same AppImage on "Ubuntu 22.04", everything works (I cannot test on Mint20.03 because of the older libc). I compared the directory trees of both AppImages, but there were no suspicious differences.
Any idea what I could try next? I'm completely stuck.
PS: list of installed gstreamer packages on Ubuntu 20.04:
$ apt list --installed | grep gstreamer
gir1.2-gstreamer-1.0/focal,now 1.16.2-2 amd64 [installed,automatic]
gstreamer1.0-alsa/focal-updates,focal-security,now 1.16.2-4ubuntu0.1 amd64 [installed,automatic]
gstreamer1.0-clutter-3.0/focal,now 3.0.27-1 amd64 [installed,automatic]
gstreamer1.0-gl/focal-updates,focal-security,now 1.16.2-4ubuntu0.1 amd64 [installed,automatic]
gstreamer1.0-gtk3/focal-updates,focal-security,now 1.16.2-1ubuntu2.1 amd64 [installed,automatic]
gstreamer1.0-packagekit/focal-updates,focal-security,now 1.1.13-2ubuntu1.1 amd64 [installed,automatic]
gstreamer1.0-plugins-bad/focal,now 1.16.2-2.1ubuntu1 amd64 [installed]
gstreamer1.0-plugins-base-apps/focal-updates,focal-security,now 1.16.2-4ubuntu0.1 amd64 [installed,automatic]
gstreamer1.0-plugins-base/focal-updates,focal-security,now 1.16.2-4ubuntu0.1 amd64 [installed]
gstreamer1.0-plugins-good/focal-updates,focal-security,now 1.16.2-1ubuntu2.1 amd64 [installed]
gstreamer1.0-pulseaudio/focal-updates,focal-security,now 1.16.2-1ubuntu2.1 amd64 [installed,automatic]
gstreamer1.0-tools/focal,now 1.16.2-2 amd64 [installed,automatic]
gstreamer1.0-x/focal-updates,focal-security,now 1.16.2-4ubuntu0.1 amd64 [installed,automatic]
libgstreamer-gl1.0-0/focal-updates,focal-security,now 1.16.2-4ubuntu0.1 amd64 [installed,automatic]
libgstreamer-opencv1.0-0/focal,now 1.16.2-2.1ubuntu1 amd64 [installed,auto-removable]
libgstreamer-plugins-bad1.0-0/focal,now 1.16.2-2.1ubuntu1 amd64 [installed]
libgstreamer-plugins-base1.0-0/focal-updates,focal-security,now 1.16.2-4ubuntu0.1 amd64 [installed]
libgstreamer-plugins-base1.0-dev/focal-updates,focal-security,now 1.16.2-4ubuntu0.1 amd64 [installed]
libgstreamer-plugins-good1.0-0/focal-updates,focal-security,now 1.16.2-1ubuntu2.1 amd64 [installed]
libgstreamer-plugins-good1.0-dev/focal-updates,focal-security,now 1.16.2-1ubuntu2.1 amd64 [installed]
libgstreamer1.0-0/focal,now 1.16.2-2 amd64 [installed,automatic]
libgstreamer1.0-dev/focal,now 1.16.2-2 amd64 [installed,automatic]