Outdated libnotify.so.4 in Appimage (2.14.17) masks the correct system library

Operating system


Joplin version


What issue do you have?

The libnotify-bin package on Debian-like Linux systems is a dependency of the node notifier used in Joplin to emit desktop notifications.
This fails on my system and probably others due to the fact that there is an outdated libnotify.so.4 in the mount image (Appimage) of Joplin that is linked first.
This is a conjecture at the moment since I have not modified the Appimage yet to remove the offending library (version from 2019) .
My system has its own libnotify.so.4 that matches the version of the installed libnotify-bin package (0.8.1, circa 2022) but it is never reached due to the precedence of the (outdated) library in the appimage.
The error:

node-notifier response: Error: Command failed: notify-send "Full Swing Season ....." "-" --icon "/tmp/.mount_Joplin5Hrjfau/resources/build/icons/512x512.png" --expire-time "10000"
notify-send: symbol lookup error: notify-send: undefined symbol: notify_notification_get_activation_token.

The symbol (function) that is being missed by notify-send (when called by node-notifier) is NOT present in the old library (libnotify.so.4 in the appimage) but IS present in the system libnoitify.so.4.
I have confirmed that so I am 99 % sure that removing the old libnotify.so.4 from the appimage or updating it will fix the issue.
I am developing a new enhancement (maybe plugin) for Joplin that relies on successfully emitting session notifications and would appreciate having this fixed.

1 Like

To follow up, I can confirm that the issue (which has persisted in the subsequent 2.14.19 and 2.14.20 Appimage releases??) is eliminated as I expected when the outdated libnotify.so.4 in the appimage is removed. I used appimagetool to repackage the Joplin Appimage (2.14.20) without the library in question and Joplin then successfully found the system libnotify.so.4, resulting in a notification. Could someone update the official appimages (either drop the lib or replace with an updated one, better to drop it since (AFAIK) it seems to be needed only by notify-send, which is external to the appimage)?

I don't think this can be done easily. It's not like this lib is explicitly added to the appimage. I don't even see any mentions on if in the repository.

My suspicion is that it is somehow part of the build process, an old remnant of some past remedy action to satisfy dependencies. I can scan the build scripts for it but am not familiar with the source tree.