[OpenIndiana-discuss] 32-bit libraries disappearing

Matthew R. Trower dev at blackshard.net
Sun Jan 7 00:33:42 UTC 2024


On 1/6/24 13:01, Marcel Telka wrote:
> On Sat, Jan 06, 2024 at 06:17:58AM -0600, Matthew R. Trower wrote:
>> Having updated my OI workstation after quite some time, I find myself with
>> quite a bit of breakage surrounding missing 32-bit libraries.  For example,
>> libcurl and libcairo (among others) are shipping 64-bit libraries only, and
>> this breaks various third party software.
> For example?

I'm not sure I understand your question. Any software previously 
compiled and linked against the missing 32-bit libraries will cease to 
function in their absence.  Any software attempting to compile and link 
in 32-bit mode against those libraries will fail to do so.

For a concrete example:

===

mtrower at saturn:~$ conky
ld.so.1: conky: fatal: libcurl.so.4: open failed: No such file or directory
Killed
mtrower at saturn:~$ file /bin/conky
/bin/conky:     ELF 32-bit LSB executable 80386 Version 1, dynamically 
linked, not stripped
mtrower at saturn:~$ ldd /bin/conky
         libkstat.so.1 =>         /lib/libkstat.so.1
         libSM.so.6 =>    /usr/lib/libSM.so.6
         libICE.so.6 =>   /usr/lib/libICE.so.6
         libX11.so.4 =>   /usr/lib/libX11.so.4
         libXext.so.0 =>  /usr/lib/libXext.so.0
         libsocket.so.1 =>        /lib/libsocket.so.1
         libnsl.so.1 =>   /lib/libnsl.so.1
         libXdamage.so.1 =>       /usr/lib/libXdamage.so.1
         libXfixes.so.1 =>        /usr/lib/libXfixes.so.1
         libXft.so.2 =>   /usr/lib/libXft.so.2
         liblua5.3.so =>  /usr/lib/liblua5.3.so
         libm.so.2 =>     /lib/libm.so.2
         libImlib2.so.1 =>        /usr/lib/libImlib2.so.1
         libcurl.so.4 =>  (file not found)
         libXinerama.so.1 =>      /usr/lib/libXinerama.so.1
         libstdc++.so.6 =>        (file not found)
         librt.so.1 =>    /lib/librt.so.1
         libgcc_s.so.1 =>         (file not found)
         libc.so.1 =>     /lib/libc.so.1
         libxcb.so.1 =>   /usr/lib/libxcb.so.1
         libmp.so.2 =>    /lib/libmp.so.2
         libmd.so.1 =>    /lib/libmd.so.1
         libfontconfig.so.1 =>    (file not found)
         libfreetype.so.6 =>      (file not found)
         libXrender.so.1 =>       /usr/lib/libXrender.so.1
         libfreetype.so.6 =>      (file not found)
         libdl.so.1 =>    /lib/libdl.so.1
         libXau.so.6 =>   /usr/lib/libXau.so.6
         libXdmcp.so.6 =>         /usr/lib/libXdmcp.so.6
         libXevie.so.1 =>         /usr/lib/libXevie.so.1
         libXss.so.1 =>   /usr/lib/libXss.so.1

===

That one's got all kinds of problems.  In this case, I may be able to 
simply compile it in 64-bit mode. In other cases, I may not be so lucky.

>
>> More critically, libsqlite3 is
>> shipping 64-bit only, and this is breaking certutil(mozilla-nss), which
>> breaks ldapclient(!).
> Could you be more specific please how exactly is certutil broken?
>
>
> Thank you.
>
It is broken because a component library links against the removed 
32-bit libsqlite3.so.0 .

Specifically, libsoftokn is broken, and anything that depends on it:


===

root at saturn:/root# /usr/bin/ldapsearch -v -h ldap.sol.blackshard.net -p 
636 -P /var/ldap -x -Z  -b dc=sol,dc=blackshard,dc=net -s base 
objectclass=*ldapsearch: started Sat Jan  6 18:11:58 2024
ldap_init( ldap.sol.blackshard.net, 636 )
SSL initialization failed: error -5977 (Failure to load dynamic library.)


root at saturn:/root# certutil -L -d /var/ldap
certutil: function failed: PR_LOAD_LIBRARY_ERROR: Failure to load 
dynamic library
         ld.so.1: certutil: fatal: relocation error: file 
/usr/lib/mps/libsoftokn3.so: symbol sqlite3_temp_directory: referenced 
symbol not found

root at saturn:/usr/lib/mps# ldd /usr/lib/mps/libsoftokn3.so
         libsqlite3.so.0 =>       (file not found)
         libnssutil3.so =>        /usr/lib/mps/libnssutil3.so
         libplc4.so =>    /usr/lib/mps/libplc4.so
         libplds4.so =>   /usr/lib/mps/libplds4.so
         libnspr4.so =>   /usr/lib/mps/libnspr4.so
         libc.so.1 =>     /lib/libc.so.1
         libthread.so.1 =>        /lib/libthread.so.1
         libpthread.so.1 =>       /lib/libpthread.so.1
         librt.so.1 =>    /lib/librt.so.1
         libsocket.so.1 =>        /lib/libsocket.so.1
         libnsl.so.1 =>   /lib/libnsl.so.1
         libdl.so.1 =>    /lib/libdl.so.1
         libmp.so.2 =>    /lib/libmp.so.2
         libmd.so.1 =>    /lib/libmd.so.1
         libm.so.2 =>     /lib/libm.so.2

===

Restoring /usr/lib/libsqlite3.so.0 from a previous snapshot restores 
functionality.


-- Matthew R. Trower


PS. I apologize if my formatting is horrible.  I'm still trying to get a 
handle on the Thunderbird revamp.




More information about the openindiana-discuss mailing list