You are not logged in.
I'm using an application, PowerISO, that comes only with the binary, required shared libraries and no source code.
I've used it for a number of years on BL Lithium, but now it no longer works on Boron due to the updated version of GLIBC in libc6.
The program comes with its own bash wrapper script to set the LD_LIBRARY_PATH and QT_QPA_PLATFORM_PLUGIN_PATH environment variables to the directory where the binary is located (providing you are in that directory). It then unsets the LD_LIBRARY_PATH environment variable upon exiting the program.
This no longer works, and the following error is displayed when running the poweriso.sh wrapper script:
qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in "."
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: xcb (from .).
./poweriso.sh: line 3: 27182 Aborted ./poweriso
libxcb.so.1 and all of the other libraries are provided in the program's own directory. However, ldd shows the shared libraries that the poweriso binary is trying to use are ones from other directories, which may be causing the issue:
$ ldd poweriso
./poweriso: ./libc.so.6: version `GLIBC_2.34' not found (required by /lib/x86_64-linux-gnu/libGLX.so.0)
./poweriso: ./libc.so.6: version `GLIBC_2.34' not found (required by /lib/x86_64-linux-gnu/libGLdispatch.so.0)
./poweriso: ./libc.so.6: version `GLIBC_2.33' not found (required by /lib/x86_64-linux-gnu/libX11.so.6)
./poweriso: ./libc.so.6: version `GLIBC_2.34' not found (required by /lib/x86_64-linux-gnu/libX11.so.6)
./poweriso: ./libc.so.6: version `GLIBC_2.33' not found (required by /lib/x86_64-linux-gnu/libbsd.so.0)
./poweriso: ./libc.so.6: version `GLIBC_2.33' not found (required by /lib/x86_64-linux-gnu/libmd.so.0)
linux-vdso.so.1 (0x00007ffc676ea000)
libQt5Gui.so.5 => ./libQt5Gui.so.5 (0x00007f0550400000)
libQt5Core.so.5 => ./libQt5Core.so.5 (0x00007f054fc00000)
libQt5Widgets.so.5 => ./libQt5Widgets.so.5 (0x00007f054f200000)
libpthread.so.0 => ./libpthread.so.0 (0x00007f05511f6000)
libstdc++.so.6 => ./libstdc++.so.6 (0x00007f0550c76000)
libgcc_s.so.1 => ./libgcc_s.so.1 (0x00007f05511da000)
libc.so.6 => ./libc.so.6 (0x00007f054f016000)
libGL.so.1 => /home/jimjamz/opt/poweriso-x64/./libGL.so.1 (0x00007f0551146000)
libz.so.1 => /home/jimjamz/opt/poweriso-x64/./libz.so.1 (0x00007f054ec00000)
libm.so.6 => /home/jimjamz/opt/poweriso-x64/./libm.so.6 (0x00007f054fa73000)
libicui18n.so.56 => /home/jimjamz/opt/poweriso-x64/./libicui18n.so.56 (0x00007f054e600000)
libicuuc.so.56 => /home/jimjamz/opt/poweriso-x64/./libicuuc.so.56 (0x00007f054e200000)
libicudata.so.56 => /home/jimjamz/opt/poweriso-x64/./libicudata.so.56 (0x00007f054c800000)
libdl.so.2 => /home/jimjamz/opt/poweriso-x64/./libdl.so.2 (0x00007f055113e000)
libgthread-2.0.so.0 => /home/jimjamz/opt/poweriso-x64/./libgthread-2.0.so.0 (0x00007f0551139000)
libglib-2.0.so.0 => /home/jimjamz/opt/poweriso-x64/./libglib-2.0.so.0 (0x00007f054eef9000)
ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f0551219000)
libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f05510ea000)
libGLdispatch.so.0 => /lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f054ee40000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f054eb88000)
libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007f054c6be000)
libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f05510be000)
libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007f05510b9000)
libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f054c400000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f0550c60000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007f05510ac000)
I don't want the binary to use any shared libraries other than those that are already provided in the binary's own directory (/home/jimjamz/opt/poweriso-x64), because GLIBC 2.33 and 2.34 don't exist in Boron's current libc6):
libc6 is already the newest version (2.36-9+deb12u4).
ldd (Debian GLIBC 2.36-9+deb12u4) 2.36
The same conclusion is here.
I tried modifying the /etc/ld.so.conf and including the poweriso binary directory, but that was a very bad idea, and resulted in a kernel panic.
I then created a bash script of my own to set the LD_LIBRARY_PATH and QT_QPA_PLATFORM_PLUGIN_PATH environment variables to the binary's directory, but it didn't work.
I then found another solution, using patchelf to set the rpath.
I set the rpath with patchelf:
patchelf --set-rpath /home/jimjamz/opt/poweriso-x64 poweriso
and confirmed it was set to the correct directory:
$ patchelf --print-rpath poweriso
/home/jimjamz/opt/poweriso-x64
But, when I execute the binary directly I receive:
./poweriso: /home/jimjamz/opt/poweriso-x64/libc.so.6: version `GLIBC_2.34' not found (required by /lib/x86_64-linux-gnu/libGLX.so.0)
./poweriso: /home/jimjamz/opt/poweriso-x64/libc.so.6: version `GLIBC_2.34' not found (required by /lib/x86_64-linux-gnu/libGLdispatch.so.0)
./poweriso: /home/jimjamz/opt/poweriso-x64/libc.so.6: version `GLIBC_2.33' not found (required by /lib/x86_64-linux-gnu/libX11.so.6)
./poweriso: /home/jimjamz/opt/poweriso-x64/libc.so.6: version `GLIBC_2.34' not found (required by /lib/x86_64-linux-gnu/libX11.so.6)
./poweriso: /home/jimjamz/opt/poweriso-x64/libc.so.6: version `GLIBC_2.33' not found (required by /lib/x86_64-linux-gnu/libbsd.so.0)
./poweriso: /home/jimjamz/opt/poweriso-x64/libc.so.6: version `GLIBC_2.33' not found (required by /lib/x86_64-linux-gnu/libmd.so.0)
and running the wrapper shell script to set the LD_LIBRARY_PATH env var, I still get the same error as before:
qt.qpa.plugin: Could not find the Qt platform plugin "xcb" in "."
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
Available platform plugins are: xcb (from .).
./poweriso.sh: line 3: 33283 Aborted ./poweriso
Despite using patchelf to set the rpath, the binary is still pointing to the /lib directories outside of the binary's directory:
linux-vdso.so.1 (0x00007ffe8876a000)
libQt5Gui.so.5 => /home/jimjamz/opt/poweriso-x64/libQt5Gui.so.5 (0x00007f4ad0e00000)
libQt5Core.so.5 => /home/jimjamz/opt/poweriso-x64/libQt5Core.so.5 (0x00007f4ad0600000)
libQt5Widgets.so.5 => /home/jimjamz/opt/poweriso-x64/libQt5Widgets.so.5 (0x00007f4acfc00000)
libpthread.so.0 => /home/jimjamz/opt/poweriso-x64/libpthread.so.0 (0x00007f4ad1af3000)
libstdc++.so.6 => /home/jimjamz/opt/poweriso-x64/libstdc++.so.6 (0x00007f4ad1676000)
libgcc_s.so.1 => /home/jimjamz/opt/poweriso-x64/libgcc_s.so.1 (0x00007f4ad1ad7000)
libc.so.6 => /home/jimjamz/opt/poweriso-x64/libc.so.6 (0x00007f4acfa16000)
libGL.so.1 => /home/jimjamz/opt/poweriso-x64/libGL.so.1 (0x00007f4ad056c000)
libz.so.1 => /home/jimjamz/opt/poweriso-x64/libz.so.1 (0x00007f4acf600000)
libm.so.6 => /home/jimjamz/opt/poweriso-x64/libm.so.6 (0x00007f4acf889000)
libicui18n.so.56 => /home/jimjamz/opt/poweriso-x64/libicui18n.so.56 (0x00007f4acf000000)
libicuuc.so.56 => /home/jimjamz/opt/poweriso-x64/libicuuc.so.56 (0x00007f4acec00000)
libicudata.so.56 => /home/jimjamz/opt/poweriso-x64/libicudata.so.56 (0x00007f4acd200000)
libdl.so.2 => /home/jimjamz/opt/poweriso-x64/libdl.so.2 (0x00007f4ad1acf000)
libgthread-2.0.so.0 => /home/jimjamz/opt/poweriso-x64/libgthread-2.0.so.0 (0x00007f4ad1aca000)
libglib-2.0.so.0 => /home/jimjamz/opt/poweriso-x64/libglib-2.0.so.0 (0x00007f4ad044f000)
ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f4ad1b16000)
libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007f4ad1642000)
libGLdispatch.so.0 => /lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007f4acf547000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f4acf4cf000)
libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007f4acd0be000)
libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f4ad0dd6000)
libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007f4ad163d000)
libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f4acce00000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f4ad1627000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007f4ad0dc9000)
Running patchelf with `--debug` reports that nothing was changed, and this is also confirmed with a SHA-1 comparison of the binary pre- and post-patch:
patching ELF file 'poweriso'
not modified, but alwaysWrite=true
writing poweriso.log
How can I force the binary to use just the binary directory for all shared libraries, and ignore any other directoris such as the /lib defaults?
Last edited by jimjamz (2024-02-07 15:13:53)
Offline