probonopd / linuxdeployqt

Makes Linux applications self-contained by copying in the libraries and plugins that the application uses, and optionally generates an AppImage. Can be used for Qt and other applications
Other
2.22k stars 414 forks source link

appImage references to library outside appImage #525

Open JvanKatwijk opened 2 years ago

JvanKatwijk commented 2 years ago

I got a comment on the following issue The most recent qt-dab appImage uses (a.o) the libcurl library. The appImage is built on an Ubuntu 16 system and uses a libcurl-4 version. It seems that - on starting the appImage - the appImage has a preference to look for libraries outside the appImage, The comment was that mounting the appImage failed since the appImage could not link to a libcurl3 library, while on the user's system a libcurl4 library was available.

It turned out that while loading the appImage an attempt was made to bind to the libcurl library on the user's system, Now the libcurl - contained in the appImage - from the Ubuntu 16 system turns out - despite the name libcurl.so.4 - to be a curl 3 library, while the libcurl on the user's system is a libcurl4 system.

Seeing that the error message on starting the appImage reads that the libcurl3 was not found, led to the conclusion that apparently the appImage load order is "user system first, libraries enclosed in the appImage second"

probonopd commented 2 years ago

Can you please post a link to the affected AppImage?

JvanKatwijk commented 2 years ago

https://www.dropbox.com/s/4euwm7jb5z127go/Qt_DAB-x86_64-4.3.AppImage?dl=0

Op di 25 jan. 2022 om 21:27 schreef probonopd @.***>:

Can you link the affected AppImage?

— Reply to this email directly, view it on GitHub https://github.com/probonopd/linuxdeployqt/issues/525#issuecomment-1021579007, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACCPHQBLKAXC7MM466NIZZ3UX4BRLANCNFSM5MZD3SEQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you authored the thread.Message ID: @.***>

-- Jan van Katwijk

JvanKatwijk commented 2 years ago

additional: The quy with the issue looked into the appimage and noted:

"Yes, because the RUNPATH setting in the ELF binary has a lower preference as LD_LIBRARY_PATH"

Op wo 26 jan. 2022 om 10:25 schreef jan van katwijk @.***

:

https://www.dropbox.com/s/4euwm7jb5z127go/Qt_DAB-x86_64-4.3.AppImage?dl=0

Op di 25 jan. 2022 om 21:27 schreef probonopd @.***>:

Can you link the affected AppImage?

— Reply to this email directly, view it on GitHub https://github.com/probonopd/linuxdeployqt/issues/525#issuecomment-1021579007, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACCPHQBLKAXC7MM466NIZZ3UX4BRLANCNFSM5MZD3SEQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

You are receiving this because you authored the thread.Message ID: @.***>

-- Jan van Katwijk

-- Jan van Katwijk

probonopd commented 2 years ago

So the AppImage is bundling a private copy of usr/lib/libcurl.so.4. Since no LD_LIBRARY_PATH is exported in AppRun, the library should be loaded from $ORIGIN/../lib relative to usr/bin/ where qt-dab lives. Looks correct to me.

Maybe the user has set LD_LIBRARY_PATH on his system? What happens if he runs

unset LD_LIBRARY_PATH
./Qt_DAB-x86_64-4.3.AppImage

?