Flatpak and libs

Why flatpak app doesn’t see libs?

For example, i’ve got flatpak Firefox 143.0.4.

I had kernel error with libxul.so

Found it and checked with command:

ldd /var/lib/flatpak/app/org.mozilla.firefox/x86_64/stable/83102f67e8674a8a3d4c4134c9bbda695a0bbede915957a6a99eceeb00e82953/files/lib/firefox/libxul.so

Output
linux-vdso.so.1 (0x00007fc5278b0000)
libmozsandbox.so => not found
libnspr4.so => /lib64/libnspr4.so (0x00007fc527853000)
libplc4.so => /lib64/libplc4.so (0x00007fc52784c000)
libplds4.so => /lib64/libplds4.so (0x00007fc527846000)
libgkcodecs.so => not found
liblgpllibs.so => not found
libnss3.so => /lib64/libnss3.so (0x00007fc51d4c4000)
libnssutil3.so => /lib64/libnssutil3.so (0x00007fc51d497000)
libsmime3.so => /lib64/libsmime3.so (0x00007fc51d46a000)
libmozsqlite3.so => not found
libssl3.so => /lib64/libssl3.so (0x00007fc51d405000)
libmozgtk.so => not found
libmozwayland.so => not found
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fc527830000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fc52782a000)
librt.so.1 => /lib64/librt.so.1 (0x00007fc527826000)
libX11.so.6 => /lib64/libX11.so.6 (0x00007fc51d2c0000)
libXcomposite.so.1 => /lib64/libXcomposite.so.1 (0x00007fc527821000)
libXdamage.so.1 => /lib64/libXdamage.so.1 (0x00007fc51d2bb000)
libXext.so.6 => /lib64/libXext.so.6 (0x00007fc51d2a7000)
libXfixes.so.3 => /lib64/libXfixes.so.3 (0x00007fc51d29d000)
libXrandr.so.2 => /lib64/libXrandr.so.2 (0x00007fc51d28f000)
libXrender.so.1 => /lib64/libXrender.so.1 (0x00007fc51d282000)
libasound.so.2 => /lib64/libasound.so.2 (0x00007fc51d16e000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc51d16a000)
libc.so.6 => /lib64/libc.so.6 (0x00007fc51cf78000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc5278b2000)
libm.so.6 => /lib64/libm.so.6 (0x00007fc51ce88000)
libfreetype.so.6 => /lib64/libfreetype.so.6 (0x00007fc51cdbc000)
libfontconfig.so.1 => /lib64/libfontconfig.so.1 (0x00007fc51cd6c000)
libgtk-3.so.0 => /lib64/libgtk-3.so.0 (0x00007fc51c400000)
libgdk-3.so.0 => /lib64/libgdk-3.so.0 (0x00007fc51cc73000)
libpangocairo-1.0.so.0 => /lib64/libpangocairo-1.0.so.0 (0x00007fc51cc63000)
libpango-1.0.so.0 => /lib64/libpango-1.0.so.0 (0x00007fc51cbf7000)
libatk-1.0.so.0 => /lib64/libatk-1.0.so.0 (0x00007fc51cbd1000)
libcairo-gobject.so.2 => /lib64/libcairo-gobject.so.2 (0x00007fc51cbc7000)
libcairo.so.2 => /lib64/libcairo.so.2 (0x00007fc51c2c0000)
libgdk_pixbuf-2.0.so.0 => /lib64/libgdk_pixbuf-2.0.so.0 (0x00007fc51c293000)
libgio-2.0.so.0 => /lib64/libgio-2.0.so.0 (0x00007fc51c0c3000)
libgobject-2.0.so.0 => /lib64/libgobject-2.0.so.0 (0x00007fc51c065000)
libglib-2.0.so.0 => /lib64/libglib-2.0.so.0 (0x00007fc51bf10000)
libdbus-1.so.3 => /lib64/libdbus-1.so.3 (0x00007fc51bebb000)
libxcb-shm.so.0 => /lib64/libxcb-shm.so.0 (0x00007fc51cbc1000)
libX11-xcb.so.1 => /lib64/libX11-xcb.so.1 (0x00007fc51beb7000)
libxcb.so.1 => /lib64/libxcb.so.1 (0x00007fc51be8d000)
libXcursor.so.1 => /lib64/libXcursor.so.1 (0x00007fc51be7d000)
libXi.so.6 => /lib64/libXi.so.6 (0x00007fc51be69000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fc51ba00000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fc51be3d000)
libz.so.1 => /lib64/libz.so.1 (0x00007fc51be1a000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x00007fc51be03000)
libpng16.so.16 => /lib64/libpng16.so.16 (0x00007fc51bdc8000)
libharfbuzz.so.0 => /lib64/libharfbuzz.so.0 (0x00007fc51bc9e000)
libbrotlidec.so.1 => /lib64/libbrotlidec.so.1 (0x00007fc51bc90000)
libxml2.so.2 => /lib64/libxml2.so.2 (0x00007fc51b8a5000)
libgmodule-2.0.so.0 => /lib64/libgmodule-2.0.so.0 (0x00007fc51bc8a000)
libpangoft2-1.0.so.0 => /lib64/libpangoft2-1.0.so.0 (0x00007fc51b889000)
libfribidi.so.0 => /lib64/libfribidi.so.0 (0x00007fc51b869000)
libepoxy.so.0 => /lib64/libepoxy.so.0 (0x00007fc51b75c000)
libatk-bridge-2.0.so.0 => /lib64/libatk-bridge-2.0.so.0 (0x00007fc51b720000)
libcloudproviders.so.0 => /lib64/libcloudproviders.so.0 (0x00007fc51b707000)
libtinysparql-3.0.so.0 => /lib64/libtinysparql-3.0.so.0 (0x00007fc51b633000)
libwayland-client.so.0 => /lib64/libwayland-client.so.0 (0x00007fc51bc77000)
libxkbcommon.so.0 => /lib64/libxkbcommon.so.0 (0x00007fc51b5e3000)
libwayland-cursor.so.0 => /lib64/libwayland-cursor.so.0 (0x00007fc51b5d9000)
libwayland-egl.so.1 => /lib64/libwayland-egl.so.1 (0x00007fc51b5d5000)
libXinerama.so.1 => /lib64/libXinerama.so.1 (0x00007fc51b5d0000)
libthai.so.0 => /lib64/libthai.so.0 (0x00007fc51b5c3000)
libxcb-render.so.0 => /lib64/libxcb-render.so.0 (0x00007fc51b5b4000)
libpixman-1.so.0 => /lib64/libpixman-1.so.0 (0x00007fc51b505000)
libjpeg.so.62 => /lib64/libjpeg.so.62 (0x00007fc51b463000)
libmount.so.1 => /lib64/libmount.so.1 (0x00007fc51b412000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fc51b3df000)
libffi.so.8 => /lib64/libffi.so.8 (0x00007fc51b3cf000)
libpcre2-8.so.0 => /lib64/libpcre2-8.so.0 (0x00007fc51b324000)
libsystemd.so.0 => /lib64/libsystemd.so.0 (0x00007fc51b203000)
libXau.so.6 => /lib64/libXau.so.6 (0x00007fc51b1fd000)
libgraphite2.so.3 => /lib64/libgraphite2.so.3 (0x00007fc51b1db000)
libbrotlicommon.so.1 => /lib64/libbrotlicommon.so.1 (0x00007fc51b1b7000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007fc51b182000)
libatspi.so.0 => /lib64/libatspi.so.0 (0x00007fc51b147000)
libjson-glib-1.0.so.0 => /lib64/libjson-glib-1.0.so.0 (0x00007fc51b11b000)
libsqlite3.so.0 => /lib64/libsqlite3.so.0 (0x00007fc51afa0000)
libdatrie.so.1 => /lib64/libdatrie.so.1 (0x00007fc51af97000)
libblkid.so.1 => /lib64/libblkid.so.1 (0x00007fc51af5d000)
libcap.so.2 => /lib64/libcap.so.2 (0x00007fc51af51000)

But if i list the same directory with command:

ls | grep “libgkcodecs.so\\|liblgpllibs.so\\|libmozsqlite3.so\\|libmozgtk.so\\|libmozwayland.so\\|libmozsandbox.so”

libgkcodecs.so
liblgpllibs.so
libmozgtk.so
libmozsandbox.so
libmozsqlite3.so
libmozwayland.so

All in place…

Tried to copy this libs to /lib64 and after there are no “not found“ in output ldd libxul.so.

Why?

Flatpaks are sandboxed, they only have access to everything they provide or to the runtimes that they depend on (and a few other things, see the documentation I linked). But, in particular, they cannot access arbitrary libs in your /lib64.

When you run ldd on your host system, it uses the system linker to resolve the symbols. The system linker doesn’t know about the libs in /var/lib/flatpak/app/org.mozilla.firefox/x86_64/stable/83102f67e8674a8a3d4c4134c9bbda695a0bbede915957a6a99eceeb00e82953/files/lib/ and as a result they show up as “not found”.

Understood, so it’s useless to copy libraries and i need to leave it as it is.

Yes.

Let me turn this around, why do you think you need to change anything? When you run the Flatpak, the dynamic linking inside the sandbox is resolved just fine.

If you have any issues with the Firefox Flatpak, I am almost certain it doesn’t have to do with dynamic linking. I would suggest you start a new thread and describe your issue there.