Opera 3D will not run. Specific library versions are required.

Opera 3D R18.2 is a FEA software compiled for RHEL 7. In Leap 42.3 I could start the software by creating symlinks to various libraries that in RHEL have different names. The program complained in this fashion:

opera_manager: /lib64/libcrypto.so.10: no version information available (required by opera_manager)

and so on but started and worked as expected despite the command line output. In Leap 15.0 the command line output is different as specific versions of the libraries are required:

opera_manager
opera_manager: /usr/lib64/libcrypto.so.10: version `libcrypto.so.10' not found (required by opera_manager)
opera_manager: /usr/lib64/libcrypto.so.10: version `libcrypto.so.10' not found (required by /net/wave1/opt/local/opera3d/18.2/code/bin/../lib/libQt5Network.so.5)
opera_manager: /usr/lib64/libcrypto.so.10: version `OPENSSL_1.0.1_EC' not found (required by /net/wave1/opt/local/opera3d/18.2/code/bin/../lib/libQt5Network.so.5)
opera_manager: /usr/lib64/libcrypto.so.10: version `OPENSSL_1.0.1' not found (required by /net/wave1/opt/local/opera3d/18.2/code/bin/../lib/libQt5Network.so.5)
opera_manager: /usr/lib64/libssl.so.10: version `libssl.so.10' not found (required by /net/wave1/opt/local/opera3d/18.2/code/bin/../lib/libQt5Network.so.5)

/usr/lib64/libcrypto.so.10 is a symlink to /usr/lib64/libcrypto.so.1.0.0
/usr/lib64/libssl.so.10 is a symlink to /usr/lib64/libssl.so.1.0.0

and this output is more severe as the software now refuses to run. Any easy way to get around the version requirement?

Cheers,
gostal

Found a relatively easy solution here:

http://rpm.pbone.net/index.php3/stat/4/idpl/55320831/dir/opensuse_leap_15/com/regataos-base-19.0.36-lp150.3.1.x86_64.rpm.html
Compiled the source rpm-file but I didn’t install the rpm-file as it would bring with it a host of other packages which I probably wouldn’t need. Instead I extracted the file libcrypto.so.10-and-libssl.so.10.tar.xz using mc (Midnight Commander), unpacked it and then created symlinks under /usr/lib64/. Unpacking is somewhat unconventional. I had to first unxz it and the untar it.

Cheers,
gostal

Hi
Easy? Well hopefully won’t introduce any security issue…?

Anyway, why not look at using the system libraries to see if they work instead?

In your output it’s linking to the application libs eg libQt5Network.so.5 this is should be present as a system library, so if you just move/rename the application one, the binary should look for the system version rather than the application one…

Using the command ldd <somebinary> will show where it’s looking, there may even be a command line option to use system libs rather than application ones…?

It will be kind of tricky to do what you suggest which I guess is to replace the application library libQt5Network.so.5 with the system one. Correct me if I misunderstood. The software resides on another computer and the directory is accessed via nfs. So I would have to copy my /usr/lib64/libQt5Network.so.5 or rather what it points to to the other machine and redirect the symlinks there if they are different. If it works it will be a better solution for me and it’s only one library so it’s worth a try, I guess. The application libQt5Network.so.5 is a symlink pointing to libQt5Network.so.5.6.0 and the system library is /usr/lib64/libQt5Network.so.5.9.4 which is newer and should be compatible unless there are other version requirements. I’ll have a go. Not very many except me is using the software anyway so it’s not likely that anybody will notice.

Cheers,
gostal

Tried replacing the application library libQt5Network.so.5.6.0 with system library libQt5Network.so.5.9.4 and replaced the symlinks but my fears were grounded and I got this:

opera_manager: /net/wave1/opt/local/opera3d/18.2/code/bin/../lib/libQt5Core.so.5: version `Qt_5.9' not found (required by /net/wave1/opt/local/opera3d/18.2/code/bin/../lib/libQt5Network.so.5)
opera_manager: /net/wave1/opt/local/opera3d/18.2/code/bin/../lib/libQt5Core.so.5: version `Qt_5.9.4_PRIVATE_API' not found (required by /net/wave1/opt/local/opera3d/18.2/code/bin/../lib/libQt5Network.so.5)

So, I will revert my changes on the other machine and try to get someone to examine the libraries I found to see if there are any threats before I put them to use again.

Thanks for the warning!

Cheers,
gostal

Hi
No, no need to replace, you just remove it from the source, the system known where to look for libraries via the likes of /etc/ldconf.conf and /etc/ldconf.d directory.

So, it’s using it’s own QT 5 stack, down in /net/wave1/opt/local/opera3d/18.2/code/lib, what other library files are in that directory, many?

I have now restored my system to a pristine out-of-the-box state regarding this particular application
I tried now hiding the appliction libQt5Network.so.5.6.0 and the link to it by moving them to another directory outside of /net/wave1/opt/local/opera3d/18.2/code/lib but that did not have any effect. Apparently the application does not allow using the system Qt 5 stack. All I get is the following:

opera_manager
opera_manager: error while loading shared libraries: libcrypto.so.10: cannot open shared object file: No such file or directory

no matter if the application libQt5Network.so.5.6.0 is there or not. Should I try to hide the entire application Qt 5 stack? There are quite a few files in there:

libQt5CLucene.so.5 -> libQt5CLucene.so.5.6.0
libQt5CLucene.so.5.6.0
libQt5Concurrent.so.5 -> libQt5Concurrent.so.5.6.0
libQt5Concurrent.so.5.6.0
libQt5Core.so.5 -> libQt5Core.so.5.6.0
libQt5Core.so.5.6.0
libQt5DBus.so.5 -> libQt5DBus.so.5.6.0
libQt5DBus.so.5.6.0
libQt5Gui.so.5 -> libQt5Gui.so.5.6.0
libQt5Gui.so.5.6.0
libQt5Help.so.5 -> libQt5Help.so.5.6.0
libQt5Help.so.5.6.0
libQt5Network.so.5 -> libQt5Network.so.5.6.0
libQt5Network.so.5.6.0
libQt5OpenGL.so.5 -> libQt5OpenGL.so.5.6.0
libQt5OpenGL.so.5.6.0
libQt5Positioning.so.5 -> libQt5Positioning.so.5.6.0
libQt5Positioning.so.5.6.0
libQt5PrintSupport.so.5 -> libQt5PrintSupport.so.5.6.0
libQt5PrintSupport.so.5.6.0
libQt5Qml.so.5 -> libQt5Qml.so.5.6.0
libQt5Qml.so.5.6.0
libQt5Quick.so.5 -> libQt5Quick.so.5.6.0
libQt5Quick.so.5.6.0
libQt5QuickWidgets.so.5 -> libQt5QuickWidgets.so.5.6.0
libQt5QuickWidgets.so.5.6.0
libQt5Sensors.so.5 -> libQt5Sensors.so.5.6.0
libQt5Sensors.so.5.6.0
libQt5Sql.so.5 -> libQt5Sql.so.5.6.0
libQt5Sql.so.5.6.0
libQt5Svg.so.5 -> libQt5Svg.so.5.6.0
libQt5Svg.so.5.6.0
libQt5Test.so.5 -> libQt5Test.so.5.6.0
libQt5Test.so.5.6.0
libQt5WebKit.so.5 -> libQt5WebKit.so.5.6.0
libQt5WebKit.so.5.6.0
libQt5WebKitWidgets.so.5 -> libQt5WebKitWidgets.so.5.6.0
libQt5WebKitWidgets.so.5.6.0
libQt5Widgets.so.5 -> libQt5Widgets.so.5.6.0
libQt5Widgets.so.5.6.0
libQt5XcbQpa.so.5 -> libQt5XcbQpa.so.5.6.0
libQt5XcbQpa.so.5.6.0
libQt5XmlPatterns.so.5 -> libQt5XmlPatterns.so.5.6.0
libQt5XmlPatterns.so.5.6.0
libQt5Xml.so.5 -> libQt5Xml.so.5.6.0
libQt5Xml.so.5.6.0

I ran ldd on opera_manager before doing any changes in the application tree but it doesn’t give any hint of where the program looks for the missing libs. It just says “not found”:

ldd /opt/local/opera3d/18.2/code/bin/opera_manager
        linux-vdso.so.1 (0x00007ffd291f8000)
        libcrypto.so.10 => not found
        librt.so.1 => /lib64/librt.so.1 (0x00007f8a36786000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f8a36582000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8a36364000)
        liblac_linux_x64.so => /opt/local/opera3d/18.2/code/bin/../lib/liblac_linux_x64.so (0x00007f8a360a4000)
        libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007f8a35d63000)
        libQt5Quick.so.5 => /opt/local/opera3d/18.2/code/bin/../lib/libQt5Quick.so.5 (0x00007f8a3595a000)
        libQt5QuickWidgets.so.5 => /opt/local/opera3d/18.2/code/bin/../lib/libQt5QuickWidgets.so.5 (0x00007f8a39453000)
        libQt5Qml.so.5 => /opt/local/opera3d/18.2/code/bin/../lib/libQt5Qml.so.5 (0x00007f8a3553e000)
        libQt5Svg.so.5 => /opt/local/opera3d/18.2/code/bin/../lib/libQt5Svg.so.5 (0x00007f8a393fb000)
        libQt5Sql.so.5 => /opt/local/opera3d/18.2/code/bin/../lib/libQt5Sql.so.5 (0x00007f8a393b5000)
        libQt5Test.so.5 => /opt/local/opera3d/18.2/code/bin/../lib/libQt5Test.so.5 (0x00007f8a3937e000)
        libQt5Xml.so.5 => /opt/local/opera3d/18.2/code/bin/../lib/libQt5Xml.so.5 (0x00007f8a39340000)
        libQt5XmlPatterns.so.5 => /opt/local/opera3d/18.2/code/bin/../lib/libQt5XmlPatterns.so.5 (0x00007f8a35158000)
        libQt5OpenGL.so.5 => /opt/local/opera3d/18.2/code/bin/../lib/libQt5OpenGL.so.5 (0x00007f8a392e6000)
        libQt5Gui.so.5 => /opt/local/opera3d/18.2/code/bin/../lib/libQt5Gui.so.5 (0x00007f8a34ba2000)
        libSM.so.6 => /usr/lib64/libSM.so.6 (0x00007f8a3499a000)
        libICE.so.6 => /usr/lib64/libICE.so.6 (0x00007f8a3477d000)
        libXi.so.6 => /usr/lib64/libXi.so.6 (0x00007f8a3456c000)
        libXrender.so.1 => /usr/lib64/libXrender.so.1 (0x00007f8a34361000)
        libXrandr.so.2 => /usr/lib64/libXrandr.so.2 (0x00007f8a34156000)
        libXcursor.so.1 => /usr/lib64/libXcursor.so.1 (0x00007f8a33f4b000)
        libXinerama.so.1 => /usr/lib64/libXinerama.so.1 (0x00007f8a33d48000)
        libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007f8a33aa1000)
        libfontconfig.so.1 => /usr/lib64/libfontconfig.so.1 (0x00007f8a3385c000)
        libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007f8a3364a000)
        libQt5Network.so.5 => /opt/local/opera3d/18.2/code/bin/../lib/libQt5Network.so.5 (0x00007f8a334ed000)
        libQt5Core.so.5 => /opt/local/opera3d/18.2/code/bin/../lib/libQt5Core.so.5 (0x00007f8a3301f000)
        libQt5Widgets.so.5 => /opt/local/opera3d/18.2/code/bin/../lib/libQt5Widgets.so.5 (0x00007f8a3298c000)
        libQt5Concurrent.so.5 => /opt/local/opera3d/18.2/code/bin/../lib/libQt5Concurrent.so.5 (0x00007f8a392da000)
        libQt5PrintSupport.so.5 => /opt/local/opera3d/18.2/code/bin/../lib/libQt5PrintSupport.so.5 (0x00007f8a3291b000)
        libz.so.1 => /usr/local/zlib1.2.9/lib/libz.so.1 (0x00007f8a326fe000)
        libimf.so => /opt/local/opera3d/18.2/code/bin/../lib/libimf.so (0x00007f8a32202000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f8a31eca000)
        libGLU.so.1 => /usr/lib64/libGLU.so.1 (0x00007f8a31c5d000)
        libGL.so.1 => /usr/lib64/libGL.so.1 (0x00007f8a319cc000)
        libirc.so => /opt/local/opera3d/18.2/code/bin/../lib/libirc.so (0x00007f8a31760000)
        libmkl_opera.so => /opt/local/opera3d/18.2/code/bin/../lib/libmkl_opera.so (0x00007f8a2a8e8000)
        libboost_program_options.so.1.60.0 => /opt/local/opera3d/18.2/code/bin/../lib/libboost_program_options.so.1.60.0 (0x00007f8a2a638000)
        libboost_filesystem.so.1.60.0 => /opt/local/opera3d/18.2/code/bin/../lib/libboost_filesystem.so.1.60.0 (0x00007f8a2a413000)
        libboost_regex.so.1.60.0 => /opt/local/opera3d/18.2/code/bin/../lib/libboost_regex.so.1.60.0 (0x00007f8a29fca000)
        libboost_signals.so.1.60.0 => /opt/local/opera3d/18.2/code/bin/../lib/libboost_signals.so.1.60.0 (0x00007f8a29dac000)
        libboost_system.so.1.60.0 => /opt/local/opera3d/18.2/code/bin/../lib/libboost_system.so.1.60.0 (0x00007f8a29ba7000)
        libboost_date_time.so.1.60.0 => /opt/local/opera3d/18.2/code/bin/../lib/libboost_date_time.so.1.60.0 (0x00007f8a29990000)
        libboost_timer.so.1.60.0 => /opt/local/opera3d/18.2/code/bin/../lib/libboost_timer.so.1.60.0 (0x00007f8a2978b000)
        libboost_chrono.so.1.60.0 => /opt/local/opera3d/18.2/code/bin/../lib/libboost_chrono.so.1.60.0 (0x00007f8a29581000)
        libboost_python.so.1.60.0 => /opt/local/opera3d/18.2/code/bin/../lib/libboost_python.so.1.60.0 (0x00007f8a29328000)
        libutil.so.1 => /lib64/libutil.so.1 (0x00007f8a29125000)
        libpython3.so => /opt/local/opera3d/18.2/code/bin/../lib/libpython3.so (0x00007f8a28f23000)
        libpython3.4m.so.1.0 => /opt/local/opera3d/18.2/code/bin/../lib/libpython3.4m.so.1.0 (0x00007f8a28a46000)
        libhwloc.so.5 => /usr/lib64/libhwloc.so.5 (0x00007f8a28807000)
        libifport.so.5 => /opt/local/opera3d/18.2/code/bin/../lib/libifport.so.5 (0x00007f8a285d8000)
        libifcoremt.so.5 => /opt/local/opera3d/18.2/code/bin/../lib/libifcoremt.so.5 (0x00007f8a28242000)
        libsvml.so => /opt/local/opera3d/18.2/code/bin/../lib/libsvml.so (0x00007f8a27385000)
        libiomp5.so => /opt/local/opera3d/18.2/code/bin/../lib/libiomp5.so (0x00007f8a27044000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f8a26cba000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f8a26aa2000)
        libintlc.so.5 => /opt/local/opera3d/18.2/code/bin/../lib/libintlc.so.5 (0x00007f8a26836000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f8a2647c000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f8a39281000)
        libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007f8a26253000)
        libpng15.so.15 => not found
        libuuid.so.1 => /usr/lib64/libuuid.so.1 (0x00007f8a2604b000)
        libXfixes.so.3 => /usr/lib64/libXfixes.so.3 (0x00007f8a25e45000)
        libbz2.so.1 => /usr/lib64/libbz2.so.1 (0x00007f8a25c28000)
        libpng16.so.16 => /usr/lib64/libpng16.so.16 (0x00007f8a259e5000)
        libexpat.so.1 => /usr/lib64/libexpat.so.1 (0x00007f8a257b3000)
        libproxy.so.1 => /usr/lib64/libproxy.so.1 (0x00007f8a25595000)
        libssl.so.10 => not found
        libcrypto.so.10 => not found
        libicui18n.so.50 => /usr/local/lib64/libicui18n.so.50 (0x00007f8a25193000)
        libicuuc.so.50 => /usr/local/lib64/libicuuc.so.50 (0x00007f8a24e1a000)
        libicudata.so.50 => /usr/local/lib64/libicudata.so.50 (0x00007f8a23847000)
        libpcre16.so.0 => /usr/lib64/libpcre16.so.0 (0x00007f8a235bf000)
        libgthread-2.0.so.0 => /usr/lib64/libgthread-2.0.so.0 (0x00007f8a233bd000)
        libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007f8a230a6000)
        libgobject-2.0.so.0 => /usr/lib64/libgobject-2.0.so.0 (0x00007f8a22e52000)
        libGLX.so.0 => /usr/lib64/libGLX.so.0 (0x00007f8a22c20000)
        libGLdispatch.so.0 => /usr/lib64/libGLdispatch.so.0 (0x00007f8a2296a000)
        libirng.so => /opt/local/opera3d/18.2/code/bin/../lib/libirng.so (0x00007f8a2260a000)
        libnuma.so.1 => /usr/lib64/libnuma.so.1 (0x00007f8a223fe000)
        libpciaccess.so.0 => /usr/lib64/libpciaccess.so.0 (0x00007f8a221f4000)
        libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007f8a21e8c000)
        libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007f8a21c88000)
        libmodman.so.1 => /usr/lib64/libmodman.so.1 (0x00007f8a21a80000)
        libpcre.so.1 => /usr/lib64/libpcre.so.1 (0x00007f8a217f3000)
        libffi.so.7 => /usr/lib64/libffi.so.7 (0x00007f8a215e9000)
        liblzma.so.5 => /usr/lib64/liblzma.so.5 (0x00007f8a213af000)

and it seems like the application uses it’s own library to a fairly large extent, mostly Qt 5 but there are also others. I had satisfied the need for libpng15.so.15 by installing a community package but that just got chucked out because I tested a fix that Jonathan Brielmaier did for the broken menu in Mate bug 1144346
Cheers,
gostal

Hi
Looks like you will be stuck then :frowning: I would suggest just popping the lib in with the other application libs and then just keep an eye on the package if it updates and you then need to replace the lib with the later one.

Do you mean that I should put the potentially dangerous libs I found in the lib-directory of the application? That could work and it would mean that there would hardly be any risk of compromising my own system, particularly since the application is loaded as an Environment Module and therefore always lives in a separate process tree. Since the machine only is a file server via nfs it means that no part of the application runs on it so I can’t imagine that the libs could possibly do any harm there. Anyway, since I administer this part of the other machine mysefl I’ll now when I need to do something about the libs. Perhaps a working solution.

Too bad, isn’t it. My work requires me to be able to run this application and it’s starting to look like I’ll have to leave OpenSuse after having used it for nearly 10 years :(. Our computer support team favours Ubuntu and CentOS. With OpenSuse I am on my own as the OpenSuse man has retired. CentOS 7 is about as close as you can get to RHEL 7 without actually being there so there’s a good chance CentOS will work. Even if tweaking the app library and continue with Leap works in this case there will be issues popping up now and then and I must admit that there is a great deal of comfort in being able to just pick up the phone or send a mail when things need to be sorted out.

Thanks for helping out.

Cheers,
gostal

Hi
Well it’s not dangerous, just if there is a security fix or CVE raised, just need to be across the package you extracted it from to ensure it gets updated if needed…

Either in the directory, or if you put them in /usr/local/lib the application should find them as it’s in the ldconf search path, just make sure you run the command ldconfig to ensure the cache is updated.

Essentially back to my “easy” solution then with the difference that there is no superfluos symlink under /usr/lib64/

Cheers,
gostal