I recently got a Dell Precision 3450 with ubuntu 20.04, and upgraded to ubuntu 21.10 in two steps (20.04 -> 21.04 -> 21.10). This required upgrading the file /usr/lib/os-release
by hand, as described here, probably because of customizations by Dell to the OEM install.
In any case, the system works fine now, with one exception. When I type curl
in the terminal (which I installed after the second upgrade), I get the following error message.
curl: error while loading shared libraries: libldap_r-2.4.so.2: cannot open shared object file: No such file or directory
So it seems like curl is trying to load libldap in version 2.4, which is not installed. I asked a friend who also has ubuntu 21.10 and curl
works fine for him with the same versions of curl
(7.74.0-1.3ubuntu2) and libldap
(2.5.6+dfsg-1~exp1ubuntu1).
I also tried to install an older version of libldap -- specifically the file libldap-2.4-2_2.4.57+dfsg-2ubuntu1_amd64.deb
from the 21.04 repo -- but after doing that, curl
gives me a new error message:
curl: symbol lookup error: curl: undefined symbol: curl_multi_poll, version URL_OPENSSL_4
so that doesn't help.
Does anybody have an idea what's going on?
I don't understand understand how dynamic linking works, and googling didn't really help. This site suggests to simply do sudo /sbin/ldconfig -v
but that didn't work.
I don't know if the problem is specific to the OEM install of ubuntu and "forced" ugprade, but the surprising thing is that everything except curl
seems to work.
EDIT:
Here is the output of ldd $(type -p curl)
on the system where curl
works.
linux-vdso.so.1 (0x00007ffe043f1000)
libcurl.so.4 => /lib/x86_64-linux-gnu/libcurl.so.4 (0x00007fc870cbb000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fc870c9f000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc870a77000)
libnghttp2.so.14 => /lib/x86_64-linux-gnu/libnghttp2.so.14 (0x00007fc870a49000)
libidn2.so.0 => /lib/x86_64-linux-gnu/libidn2.so.0 (0x00007fc870a28000)
librtmp.so.1 => /lib/x86_64-linux-gnu/librtmp.so.1 (0x00007fc870a09000)
libssh.so.4 => /lib/x86_64-linux-gnu/libssh.so.4 (0x00007fc87099a000)
libpsl.so.5 => /lib/x86_64-linux-gnu/libpsl.so.5 (0x00007fc870986000)
libssl.so.1.1 => /lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007fc8708ee000)
libcrypto.so.1.1 => /lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007fc870613000)
libgssapi_krb5.so.2 => /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007fc8705c1000)
libldap-2.5.so.0 => /lib/x86_64-linux-gnu/libldap-2.5.so.0 (0x00007fc870562000)
liblber-2.5.so.0 => /lib/x86_64-linux-gnu/liblber-2.5.so.0 (0x00007fc87054f000)
libbrotlidec.so.1 => /lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007fc870541000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc870db5000)
libunistring.so.2 => /lib/x86_64-linux-gnu/libunistring.so.2 (0x00007fc8703bf000)
libgnutls.so.30 => /lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007fc8701da000)
libhogweed.so.6 => /lib/x86_64-linux-gnu/libhogweed.so.6 (0x00007fc870192000)
libnettle.so.8 => /lib/x86_64-linux-gnu/libnettle.so.8 (0x00007fc87014a000)
libgmp.so.10 => /lib/x86_64-linux-gnu/libgmp.so.10 (0x00007fc8700c7000)
libkrb5.so.3 => /lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007fc86fffe000)
libk5crypto.so.3 => /lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007fc86ffd1000)
libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007fc86ffcb000)
libkrb5support.so.0 => /lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007fc86ffbb000)
libsasl2.so.2 => /lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007fc86ffa0000)
libbrotlicommon.so.1 => /lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007fc86ff7d000)
libp11-kit.so.0 => /lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007fc86fe43000)
libtasn1.so.6 => /lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007fc86fe2d000)
libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007fc86fe24000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fc86fe0f000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc86fe0a000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007fc86fdfe000)
And here's the output of ldd $(type -p curl)
on the system where curl
doesn't work.
linux-vdso.so.1 (0x00007fffa0f86000)
libcurl.so.4 => /usr/lib/dcaenabler/libcurl.so.4 (0x00007fc1b789f000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fc1b7883000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc1b765b000)
libnghttp2.so.14 => /lib/x86_64-linux-gnu/libnghttp2.so.14 (0x00007fc1b762d000)
libidn2.so.0 => /lib/x86_64-linux-gnu/libidn2.so.0 (0x00007fc1b760c000)
librtmp.so.1 => /lib/x86_64-linux-gnu/librtmp.so.1 (0x00007fc1b75ed000)
libpsl.so.5 => /lib/x86_64-linux-gnu/libpsl.so.5 (0x00007fc1b75d7000)
libssl.so.1.1 => /usr/lib/dcaenabler/libssl.so.1.1 (0x00007fc1b734a000)
libcrypto.so.1.1 => /usr/lib/dcaenabler/libcrypto.so.1.1 (0x00007fc1b6e7f000)
libgssapi_krb5.so.2 => /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007fc1b6e2d000)
libldap_r-2.4.so.2 => not found
liblber-2.4.so.2 => not found
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc1b6e26000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc1b7b74000)
libunistring.so.2 => /lib/x86_64-linux-gnu/libunistring.so.2 (0x00007fc1b6ca4000)
libgnutls.so.30 => /lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007fc1b6abf000)
libhogweed.so.6 => /lib/x86_64-linux-gnu/libhogweed.so.6 (0x00007fc1b6a77000)
libnettle.so.8 => /lib/x86_64-linux-gnu/libnettle.so.8 (0x00007fc1b6a31000)
libgmp.so.10 => /lib/x86_64-linux-gnu/libgmp.so.10 (0x00007fc1b69ac000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc1b69a7000)
libkrb5.so.3 => /lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007fc1b68de000)
libk5crypto.so.3 => /lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007fc1b68b1000)
libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007fc1b68ab000)
libkrb5support.so.0 => /lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007fc1b689d000)
libp11-kit.so.0 => /lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007fc1b6761000)
libtasn1.so.6 => /lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007fc1b674b000)
libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007fc1b6744000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fc1b672f000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007fc1b6723000)
Output of which curl
on the problematic system:
/usr/bin/curl
Output of aptitude search ~o
on problematic system:
i dca-enabler - Provides the DELL Client Agent Enabler software.
i dca-enabler-packages - Provides the DELL Client Agent Enabler Dependencies.
i dell-canonical-logo - Install the dell-canonical-logo in gnome-control-center.
i dell-super-key - Disables the super key by default.
i djvu2pdf - Script to convert Djvu files to PDF files
i fist - Factory Install System Test
i A gir1.2-unity-5.0 - GObject introspection data for the Unity library
i A linux-headers-5.10.0-1031-oem - Linux kernel headers for version 5.10.0 on 64 bit x86 SMP
i A linux-headers-5.10.0-1050-oem - Linux kernel headers for version 5.10.0 on 64 bit x86 SMP
i A linux-headers-oem-20.04b - OEM Linux kernel headers
i A linux-image-5.10.0-1031-oem - Signed kernel image oem
i A linux-image-5.10.0-1050-oem - Signed kernel image oem
i A linux-image-oem-20.04b - OEM Linux kernel image
i A linux-modules-5.10.0-1031-oem - Linux kernel extra modules for version 5.10.0 on 64 bit x86 SMP
i A linux-modules-5.10.0-1050-oem - Linux kernel extra modules for version 5.10.0 on 64 bit x86 SMP
i linux-oem-20.04b - Complete OEM Linux kernel and headers
i A linux-oem-5.10-headers-5.10.0-1031 - Header files related to Linux kernel version 5.10.0
i A linux-oem-5.10-headers-5.10.0-1050 - Header files related to Linux kernel version 5.10.0
i A linux-oem-5.10-tools-5.10.0-1031 - Linux kernel version specific tools for version 5.10.0-1031
i linux-tools-5.10.0-1031-oem - Linux kernel version specific tools for version 5.10.0-1031
i lsd - An ls command with a lot of pretty colors.
i manage-distro-upgrade - Disable upgrade for OEM.
i A manage-estar-settings - Energy Star related settings
i A oem-fix-misc-cnl-tlp-estar-conf - customized configuration for tlp.
i oem-ouagadougou-meta - Meta package for the OEM mainstreams image.
i oem-release - Show oem release version
i oem-somerville-butterfree-meta - hardware support for Somerville Butterfree platform
i oem-somerville-factory-butterfree-meta - hardware support for Somerville Butterfree platform (factory)
i oem-somerville-factory-meta - hardware support for Somerville platform
i oem-somerville-meta - hardware support for Somerville platform
i A oem-somerville-partner-archive-keyring - Somerville project keyrings
i slack-desktop - Slack Desktop
i sosreport-oem - OEM image releated sosreport plugins and utilities.
aptitude search ~b
outputs nothing -- no broken packages.
Here's the output of tree /usr/local/
:
/usr/local/
├── bin
├── etc
├── games
├── include
├── lib
│ └── python3.9
│ └── dist-packages
├── man -> share/man
├── sbin
├── share
│ ├── ca-certificates
│ ├── fonts
│ ├── man
│ ├── sgml
│ │ ├── declaration
│ │ ├── dtd
│ │ ├── entities
│ │ ├── misc
│ │ └── stylesheet
│ ├── texmf
│ └── xml
│ ├── declaration
│ ├── entities
│ ├── misc
│ └── schema
├── src
└── stow
Output of dpkg -S /usr/lib/dcaenabler/libcurl.so.4 /usr/lib/dcaenabler/libssl.so.1.1 /usr/lib/dcaenabler/libcrypto.so.1.1
:
dca-enabler-packages: /usr/lib/dcaenabler/libcurl.so.4
dca-enabler-packages: /usr/lib/dcaenabler/libssl.so.1.1
dca-enabler-packages: /usr/lib/dcaenabler/libcrypto.so.1.1
Most likely related: I just observed repeated lines of the form
10 Nov 2021 15:36:59 j-dell env[10851] /usr/sbin/dcae: error while loading shared libraries: libldap_r-2.4.so.2: cannot open shared object file: No such file or directory
in /var/log/syslog
. If I run dcae
on the command line I get the error message
dcae: error while loading shared libraries: libldap_r-2.4.so.2: cannot open shared object file: No such file or directory
just as with curl
.
libldap_r-2.4.so.2
on your system? If it is then the error states it just can't find it. Otherwise the error is occuring because the file doesn't exist. As for the second error, I would revert back to the original version oflibldap
since that's still throwing errors. – Nov 10 '21 at 01:52/usr/lib/x86_64-linux-gnu/
). With the file present I get the second error message. I don't understand your suggestion. – user313032 Nov 10 '21 at 02:01curl -v
and see what outputs you have. I'm posting this as a reference for troubleshooting, paste the output into your question if you still need help with it. I'm not sure about the fix. – Nov 10 '21 at 02:14libldap-2.4-2
is installed – user313032 Nov 10 '21 at 02:23ldd $(type -p curl)
on both systems. Usedpkg -S filename
(readman dpkg
) to see which package providesfilename
. – waltinator Nov 10 '21 at 02:55apt-file search
instead ofdpkg -S
as I think the latter only searches through the files of installed packages. But forlibldap_r-2.4.so.2
both search commands fail since the file comes from the packagelibldap-2.4-2
which is not included in Ubuntu 22.10. – user313032 Nov 10 '21 at 03:40liblber-2.4.so.2
. – user313032 Nov 10 '21 at 03:46which curl
is also needed, it may be from/usr/local/bin
, so self-compiled. – N0rbert Nov 10 '21 at 04:38wget http://archive.ubuntu.com/ubuntu/pool/main/o/openldap/libldap-2.4-2_2.4.57+dfsg-2ubuntu1_amd64.deb && sudo apt-get install --reinstall ./libldap-2.4-2_2.4.57+dfsg-2ubuntu1_amd64.deb
. Such strange things are usually happen when some local/obsolete package keep installed on upgraded system. Please install Aptitude and tree bysudo apt-get install tree aptitude
and add output from broken system -aptitude search ~o
withtree /usr/local
to the question (if long - use pastebin). – N0rbert Nov 10 '21 at 05:13dca-enabler
and maybedca-enabler-packages
are root of the problem. Please share the output ofdpkg -S /usr/lib/dcaenabler/libcurl.so.4 /usr/lib/dcaenabler/libssl.so.1.1 /usr/lib/dcaenabler/libcrypto.so.1.1
. Do you plan to use this Dell software? – N0rbert Nov 10 '21 at 20:06sudo apt-get purge --autoremove dca-enabler-packages dca-enabler
then reboot to check the changes. – N0rbert Nov 11 '21 at 06:42