Рейтинг:3

curl проблема динамической компоновки в 21.10

флаг cn

Недавно я получил Dell Precision 3450 с Ubuntu 20.04 и обновился до Ubuntu 21.10 в два этапа (20.04 -> 21.04 -> 21.10). Это потребовало обновления файла /usr/lib/ОС-релиз вручную, как описано здесь, вероятно, из-за настроек Dell для установки OEM.

В любом случае, теперь система работает нормально, с один исключение. Когда я печатаю завиток в терминале (который я установил после второго обновления) я получаю следующее сообщение об ошибке.

curl: ошибка при загрузке общих библиотек: libldap_r-2.4.so.2: невозможно открыть файл общего объекта: нет такого файла или каталога

Похоже, что curl пытается загрузить libldap версии 2.4, которая не установлена. Я спросил друга, у которого также есть ubuntu 21.10 и завиток отлично работает для него с теми же версиями завиток (7.74.0-1.3ubuntu2) и либлдап (2.5.6+dfsg-1~exp1ubuntu1).

Я также пытался установить более старую версию libldap, в частности, файл libldap-2.4-2_2.4.57+dfsg-2ubuntu1_amd64.deb из репозитория 21.04, но после этого завиток дает мне новое сообщение об ошибке:

curl: ошибка поиска символа: curl: неопределенный символ: curl_multi_poll, версия URL_OPENSSL_4

так что не помогает.

Кто-нибудь знает, что происходит?

Я не понимаю, как работает динамическое связывание, и поиск в Google не очень помог. Этот сайт предлагает просто сделать судо /sbin/ldconfig -v но это не сработало.

Я не знаю, связана ли проблема с OEM-установкой ubuntu и «принудительным» ugprade, но удивительно то, что все, кроме завиток кажется, работает.

РЕДАКТИРОВАТЬ:

Вот результат ldd $(тип -p curl) в системе, где завиток работает.

 линукс-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)

И вот вывод ldd $(тип -p curl) в системе, где завиток не работает.

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 => не найдено
liblber-2.4.so.2 => не найдено
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)

Вывод какой завиток в проблемной системе:

/USR/бен/завиток

Вывод поиск способностей ~o в проблемной системе:

i dca-enabler — предоставляет программное обеспечение DELL Client Agent Enabler.                                                
i dca-enabler-packages — предоставляет зависимости активатора агента клиента DELL.                                           
i dell-canonical-logo — установка канонического логотипа dell в gnome-control-center.                                        
i dell-super-key — отключает ключ super по умолчанию.                                                              
i djvu2pdf - Скрипт для преобразования файлов Djvu в файлы PDF                                                       
i fist — проверка системы при заводской установке                                                                     
i A gir1.2-unity-5.0 — данные самоанализа GObject для библиотеки Unity                                                
i A linux-headers-5.10.0-1031-oem — заголовки ядра Linux для версии 5.10.0 на 64-битной x86 SMP                                       
i A linux-headers-5.10.0-1050-oem — заголовки ядра Linux для версии 5.10.0 на 64-битной x86 SMP                                       
i A linux-headers-oem-20.04b — OEM-заголовки ядра Linux                                                                        
i A linux-image-5.10.0-1031-oem — образ ядра с подписью oem                                                                         
i A linux-image-5.10.0-1050-oem — Подписанный образ ядра oem                                                                         
i A linux-image-oem-20.04b — OEM-образ ядра Linux                                                                          
i A linux-modules-5.10.0-1031-oem — дополнительные модули ядра Linux для версии 5.10.0 на 64-разрядной платформе x86 SMP.                                 
i A linux-modules-5.10.0-1050-oem — дополнительные модули ядра Linux для версии 5.10.0 на 64-разрядной платформе x86 SMP.                                 
i linux-oem-20.04b — Полное ядро ​​OEM Linux и заголовки                                                           
i A linux-oem-5.10-headers-5.10.0-1031 — файлы заголовков, относящиеся к версии ядра Linux 5.10.0.                                             
i A linux-oem-5.10-headers-5.10.0-1050 — файлы заголовков, относящиеся к ядру Linux версии 5.10.0.                                             
i A linux-oem-5.10-tools-5.10.0-1031 — специальные инструменты ядра Linux для версии 5.10.0-1031.                                     
i linux-tools-5.10.0-1031-oem — специальные инструменты ядра Linux для версии 5.10.0-1031.                                     
i lsd — команда ls с большим количеством красивых цветов.                                                      
i manage-distro-upgrade — отключить обновление для OEM.                                                                        
i A manage-estar-settings — настройки, связанные с Energy Star                                                                    
i A oem-fix-misc-cnl-tlp-estar-conf — индивидуальная конфигурация для tlp.                                                               
i oem-ouagadougou-meta — метапакет для основного образа OEM.                                                     
i oem-release — показать версию oem-релиза                                                                        
i oem-somerville-butterfree-meta — аппаратная поддержка платформы Somerville Butterfree                                             
i oem-somerville-factory-butterfree-meta — аппаратная поддержка платформы Somerville Butterfree (заводская)                                   
i oem-somerville-factory-meta — аппаратная поддержка платформы Somerville                                                        
i oem-somerville-meta — аппаратная поддержка платформы Somerville                                                        
i A oem-somerville-partner-archive-keyring - брелоки проекта Somerville                                                                     
i slack-desktop - Slack Desktop                                                                                   
i sosreport-oem — плагины и утилиты sosreport, выпущенные OEM-образом.                                             

поиск способностей ~b ничего не выводит -- нет сломанных пакетов.

Вот результат дерево /usr/местный/:

/USR/местный/
âââ мусорное ведро
ââ и т.д.
ââ игры
âââ включить
âââ библиотека
âââ python3.9
âââ dist-пакеты
âââ человек -> поделиться/человек
âââ сбин
ââ доля
â  âââ ca-сертификаты
✓ ✓ ✓ шрифты
☝️ мужчина
â âââ sgml
 â  â â â декларация
â  â  âââ dtd
â â  âââ сущности
 â  â â â Разное
✓ Таблица стилей
â âââ texmf
âââ xml
ââ декларация
âââ сущности
☝️ разное
ââ схема
âââ источник
âââ укладка

Вывод dpkg -S /usr/lib/dcaenabler/libcurl.so.4 /usr/lib/dcaenabler/libssl.so.1.1 /usr/lib/dcaenabler/libcrypto.so.1.1:

dca-enabler-пакеты: /usr/lib/dcaenabler/libcurl.so.4
dca-enabler-пакеты: /usr/lib/dcaenabler/libssl.so.1.1
dca-enabler-packages: /usr/lib/dcaenabler/libcrypto.so.1.1

Скорее всего, связано: я просто наблюдал повторяющиеся строки формы

10 ноября 2021 г. 15:36:59 j-dell env[10851] /usr/sbin/dcae: ошибка при загрузке общих библиотек: libldap_r-2.4.so.2: невозможно открыть общий объектный файл: нет такого файла или каталога

в /var/журнал/системный журнал. Если я побегу dcae в командной строке я получаю сообщение об ошибке

dcae: ошибка при загрузке общих библиотек: libldap_r-2.4.so.2: невозможно открыть общий объектный файл: нет такого файла или каталога

так же, как с завиток.

user313032 avatar
флаг cn
@TBr: Ubuntu 21.10 поставляется с libldap-2.5-0, который не включает рассматриваемый файл (но тем не менее на компьютере моего друга curl работает). Вот почему я установил libldap-2.4-2 от 21.04, который включает файл (в `/usr/lib/x86_64-linux-gnu/`). При наличии файла я получаю второе сообщение об ошибке. Я не понимаю твоего предложения.
user313032 avatar
флаг cn
Спасибо! Извините, я не указал, в каком пакете содержится файл.
user313032 avatar
флаг cn
Это дает те же два сообщения об ошибках, которые я уже публиковал, в зависимости от того, установлен ли `libldap-2.4-2`
waltinator avatar
флаг it
Сравните `ldd $(type -p curl)` в обеих системах. Используйте `dpkg -S имя файла` (читай `man dpkg`), чтобы увидеть, какой пакет предоставляет `имя файла`.
user313032 avatar
флаг cn
@waltinator Я добавил к своему вопросу результаты соответствующих команд. Как я уже сказал, в системе, где curl не работает, он пытается загрузить более старую версию libldap. Из вывода также видно, что то же самое происходит и с liblber. Так видимо версии библиотек не зашиты в бинарники? (Два двоичных файла одинаковы, я сравнил их, чтобы убедиться).
user313032 avatar
флаг cn
Чтобы узнать, из какого пакета исходит файл, я обычно использую `apt-file search` вместо `dpkg -S`, поскольку я думаю, что последний ищет только файлы установленных пакетов. Но для `libldap_r-2.4.so.2` обе команды поиска терпят неудачу, так как файл взят из пакета `libldap-2.4-2`, который не включен в Ubuntu 22.10.
user313032 avatar
флаг cn
То же самое для liblber-2.4.so.2.
N0rbert avatar
флаг zw
Вывод для `what curl` также необходим, он может быть из `/usr/local/bin`, поэтому компилируется самостоятельно.
user313032 avatar
флаг cn
@N0rbert: я добавил его выше, это /usr/bin/curl, а не самокомпилируемый. Я дважды проверил, что два двоичных файла в разных системах идентичны.
N0rbert avatar
флаг zw
Установка v2.4 по-прежнему возможна с помощью `wget 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` . Такие странные вещи обычно случаются, когда какой-то локальный/устаревший пакет остается установленным в обновленной системе. Пожалуйста, установите Aptitude и дерево с помощью `sudo apt-get install tree aptitude` и добавьте к вопросу вывод из сломанной системы – `aptitude search ~o` с `tree /usr/local` (если длинный - используйте pastebin).
user313032 avatar
флаг cn
@N0rbert N0rbert: я уже пытался установить v2.4, что приводит к другому сообщению об ошибке, как описано выше. Я добавил запрошенные выходные данные команды к вопросу. Спасибо за вашу помощь!
N0rbert avatar
флаг zw
Я подозреваю, что «dca-enabler» и, возможно, «dca-enabler-packages» являются корнем проблемы. Пожалуйста, поделитесь выводом `dpkg -S /usr/lib/dcaenabler/libcurl.so.4 /usr/lib/dcaenabler/libssl.so.1.1 /usr/lib/dcaenabler/libcrypto.so.1.1`. Планируете ли вы использовать это программное обеспечение Dell?
user313032 avatar
флаг cn
Добавил запрошенную информацию. Также заметил соответствующую информацию в /var/log/syslog, см. выше. Что касается вашего последнего вопроса: я действительно не знаю, что делает материал dca. Я заказал систему с предустановленной ubuntu, так как это казалось проще, чем ставить самому, и к тому же дешевле. Я также надеялся на возможно лучшую аппаратную поддержку. Кроме того, меня не интересуют какие-либо особенности Dell.
user313032 avatar
флаг cn
@N0rbert N0rbert: ты предлагаешь мне удалить пакеты dca?
N0rbert avatar
флаг zw
Я бы предложил удалить эти пакеты Dell с помощью `sudo apt-get purge --autoremove dca-enabler-packages dca-enabler`, а затем перезагрузиться, чтобы проверить изменения.
user313032 avatar
флаг cn
@N0rbert: Удаление пакетов решило проблему! Большое спасибо за Вашу помощь! Если вы добавите ответ, я приму его.
Рейтинг:3
флаг zw

Анализ ldd /usr/бен/завиток вывод показывает, что эта проблема вызывается пакетами Dell. Чтобы исправить систему, нам нужно удалить их,

sudo apt-get purge --autoremove dca-enabler-packages dca-enabler

Примечание: инструмент для анализа выходных данных ldd обсуждается в этот вопрос-ответ. Мне очень помогло обнаружить вашу проблему программно.

user313032 avatar
флаг cn
Спасибо! Оглядываясь назад, довольно ясно, как идентифицировать проблемные пакеты, сравнивая выходные данные ldd и наблюдая, например. что на двух машинах загружены разные версии `libcurl.so.4`. Но я сам этого не видел, пока вы не указали.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.