Вопрос или проблема
Я обновился с Ubuntu 24.04 до 24.04.1 LTS, и после обновления мой curl перестал работать
curl ifconfig.me
curl: error while loading shared libraries: liblber-2.5.so.0: cannot open shared object file: No such file or directory
Я пытался переустановить через apt remove
и apt install --reinstall
apt install liblber-2.5
не находит подходящего совпадения
Я пытался установить через snap (после удаления через apt), но это тоже не сработало.
Curl работал нормально до обновления.
Дополнительная информация:
which curl
/usr/bin/curl
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 24.04.1 LTS
Release: 24.04
Codename: noble
ldd $(which curl)
/usr/bin/curl: /usr/local/lib/libcurl.so.4: no version information available (required by /usr/bin/curl)
linux-vdso.so.1 (0x00007ffd93fda000)
libcurl.so.4 => /usr/local/lib/libcurl.so.4 (0x000075f584692000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x000075f584676000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x000075f584400000)
liblber-2.5.so.0 => not found
libldap-2.5.so.0 => not found
libcares.so.2 => /usr/local/lib/libcares.so.2 (0x000075f584644000)
libssl.so.3 => /lib/x86_64-linux-gnu/libssl.so.3 (0x000075f584356000)
libcrypto.so.3 => /lib/x86_64-linux-gnu/libcrypto.so.3 (0x000075f583e00000)
libnghttp2.so.14 => /lib/x86_64-linux-gnu/libnghttp2.so.14 (0x000075f584619000)
libbrotlidec.so.1 => /lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x000075f584348000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x000075f583d46000)
libpsl.so.5 => /lib/x86_64-linux-gnu/libpsl.so.5 (0x000075f584334000)
libssh2.so.1 => /lib/x86_64-linux-gnu/libssh2.so.1 (0x000075f583cfe000)
/lib64/ld-linux-x86-64.so.2 (0x000075f58479f000)
libbrotlicommon.so.1 => /lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x000075f583cdb000)
libunistring.so.5 => /lib/x86_64-linux-gnu/libunistring.so.5 (0x000075f583b2e000)
libidn2.so.0 => /lib/x86_64-linux-gnu/libidn2.so.0 (0x000075f583b0c000)
Убедитесь, что пути к библиотекам настроены правильно. Иногда curl может не находить библиотеки, если они установлены в нестандартных местах. Вы можете проверить пути к библиотекам с помощью:
ldd $(which curl)
Это выведет список общих библиотек, необходимых curl, и их пути. Проверьте, что все необходимые библиотеки присутствуют и правильно связаны.
Если вышеуказанные шаги не решают проблему, попробуйте переустановить curl:
sudo apt-get remove --purge curl
sudo apt-get install curl
Мне удалось заставить его работать на 24.04.1 LTS, установив с помощью snap.
Дело в том, что apt-пакет использует версию 8.5, которая, очевидно, имеет проблему с общими библиотеками.
Я удалил curl с помощью sudo apt remove curl
и затем установил с помощью snap. В стабильном канале snap версия еще старее, но если выполнить sudo snap install curl --edge
, она установит версию 8.6, и это работает.
Более подробную информацию смотрите здесь: https://snapcraft.io/curl
.
Ответ или решение
Ошибка, с которой вы столкнулись при использовании curl
после обновления до Ubuntu 24.04.1 LTS, связана с отсутствием необходимых библиотек, конкретно liblber-2.5.so.0
, которая необходима для работы программы. Эта проблема часто возникает после обновлений операционной системы, когда некоторые библиотеки могут отсутствовать или версии изменяются так, что уже установленные программы теряют совместимость.
Теория (Theory)
Одной из частых причин таких ошибок является несовместимость версий или ошибки в конфигурации загрузки библиотек. Конкретно, в вашем случае, проблема может быть вызвана тем, что бинарный файл curl
, который вы используете, собран с зависимостью от liblber-2.5.so.0
. Однако текущая конфигурация вашего окружения после обновления не позволяет системе найти данную библиотеку.
Пример (Example)
Вы видите ошибку при попытке запуска curl
, и вывод команды ldd $(which curl)
показывает, что liblber-2.5.so.0
и libldap-2.5.so.0
не найдены. Это четко указывает на проблему с библиотеками:
liblber-2.5.so.0 => not found
libldap-2.5.so.0 => not found
Кроме того, вы также видите сообщения о том, что у загруженной версии libcurl.so.4
нет информации о версии.
Применение (Application)
-
Установка необходимых библиотек OpenLDAP: Скорее всего, вам нужно установить набор библиотек, включающий
liblber
. Попробуйте установить совместимую версию пакета:sudo apt install libldap-2.5-0
Это должно разрешить проблему отсутствия как
liblber
, так иlibldap
. -
Проверка пути к библиотекам: Убедитесь, что пути к библиотекам настроены корректно. Иногда библиотеки могут находиться в нестандартных местах, и система их не видит. Вы можете обновить кеш динамических библиотек, используя:
sudo ldconfig
-
Переустановка через apt: Хотя вы уже пробовали это, всегда стоит попытаться:
sudo apt-get remove --purge curl sudo apt-get install curl
Обратите внимание, что эта команда удалит все конфигурационные файлы. Это может помочь, если проблема связана с устаревшими конфигурациями.
-
Использование snap: Ваша успешная попытка через
snap
также указывает на то, что проблема может быть связана с конкретной версией пакета, установленной черезapt
. Еслиsnap
версия работает, это может быть оптимальным решением:sudo snap install curl --edge
-
Дополнительная информация и связи: Убедитесь, что ваш
LD_LIBRARY_PATH
настроен корректно, и в нем присутствуют пути ко всем необходимым библиотекам. Это может быть полезно, если вы добавляете библиотеки из нестандартных мест вручную.
Следование этим шагам должно помочь исправить ошибку использования curl
в обновленной системе Ubuntu 24.04.1 LTS. Этот подход позволит избежать зависимости от определенных версий пакетов, устанавливаемых через apt
, и перейти к более стабильной, хотя и смещенной по версиям, среде snap
.