Puncte:3

problema de legătură dinamică curl în 21.10

drapel cn

Am primit recent un Dell Precision 3450 cu ubuntu 20.04 și am făcut upgrade la ubuntu 21.10 în doi pași (20.04 -> 21.04 -> 21.10). Acest lucru a necesitat actualizarea fișierului /usr/lib/os-release manual, așa cum este descris Aici, probabil din cauza personalizărilor de către Dell la instalarea OEM.

În orice caz, sistemul funcționează bine acum, cu unu excepție. Când scriu răsuci în terminal (pe care l-am instalat după al doilea upgrade), primesc următorul mesaj de eroare.

curl: eroare la încărcarea bibliotecilor partajate: libldap_r-2.4.so.2: nu se poate deschide fișierul obiect partajat: nu există un astfel de fișier sau director

Deci se pare că curl încearcă să încarce libldap în versiunea 2.4, care nu este instalată. Am intrebat un prieten care are si ubuntu 21.10 si răsuci funcționează bine pentru el cu aceleași versiuni ale răsuci (7.74.0-1.3ubuntu2) și libldap (2.5.6+dfsg-1~exp1ubuntu1).

De asemenea, am încercat să instalez o versiune mai veche a libldap -- în special fișierul libldap-2.4-2_2.4.57+dfsg-2ubuntu1_amd64.deb din repo 21.04 -- dar după ce ați făcut asta, răsuci imi da un nou mesaj de eroare:

curl: eroare de căutare a simbolului: curl: simbol nedefinit: curl_multi_poll, versiune URL_OPENSSL_4

deci asta nu ajuta.

Are cineva idee ce se întâmplă?

Nu înțeleg cum funcționează legătura dinamică, iar căutarea pe google nu a ajutat cu adevărat. Acest site sugerează pur și simplu să faci sudo /sbin/ldconfig -v dar asta nu a mers.

Nu știu dacă problema este specifică instalării OEM a ubuntu și ugprade „forțată”, dar lucrul surprinzător este că totul, cu excepția răsuci pare să funcționeze.

EDITAȚI | ×:

Aici este rezultatul lui ldd $(tip -p curl) pe sistemul unde răsuci lucrări.

 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)

Și iată rezultatul ldd $(tip -p curl) pe sistemul unde răsuci nu merge.

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 => negăsit
liblber-2.4.so.2 => negăsit
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)

Ieșire din care buclă asupra sistemului problematic:

/usr/bin/curl

Ieșire din căutarea aptitudinilor ~o despre sistemul problematic:

i dca-enabler - Furnizează software-ul DELL Client Agent Enabler.                                                
i dca-enabler-packages - Oferă dependențe de activare a agentului client DELL.                                           
i dell-canonical-logo - Instalați dell-canonical-logo în gnome-control-center.                                        
i dell-super-key - Dezactivează tasta super în mod implicit.                                                              
i djvu2pdf - Script pentru a converti fișierele Djvu în fișiere PDF                                                       
i fist - Testul sistemului de instalare din fabrică                                                                     
i A gir1.2-unity-5.0 - Date de introspecție GObject pentru biblioteca Unity                                                
i A linux-headers-5.10.0-1031-oem - Anteturi de kernel Linux pentru versiunea 5.10.0 pe 64 de biți x86 SMP                                       
i A linux-headers-5.10.0-1050-oem - Anteturi de kernel Linux pentru versiunea 5.10.0 pe 64 de biți x86 SMP                                       
i A linux-headers-oem-20.04b - anteturi OEM Linux kernel                                                                        
i Un linux-image-5.10.0-1031-oem - Oem de imagine kernel semnat                                                                         
i Un linux-image-5.10.0-1050-oem - Oem de imagine kernel semnat                                                                         
i O imagine linux-oem-20.04b - imagine de kernel Linux OEM                                                                          
i A linux-modules-5.10.0-1031-oem - module suplimentare ale nucleului Linux pentru versiunea 5.10.0 pe 64 de biți x86 SMP                                 
i A linux-modules-5.10.0-1050-oem - module suplimentare pentru nucleul Linux pentru versiunea 5.10.0 pe 64 de biți x86 SMP                                 
i linux-oem-20.04b - Nucleul și anteturile complete OEM Linux                                                           
i Un linux-oem-5.10-headers-5.10.0-1031 - Fișiere antet legate de versiunea 5.10.0 a nucleului Linux                                             
i Un linux-oem-5.10-headers-5.10.0-1050 - Fișiere antet legate de versiunea 5.10.0 a nucleului Linux                                             
i Un linux-oem-5.10-tools-5.10.0-1031 - Instrumente specifice versiunii nucleului Linux pentru versiunea 5.10.0-1031                                     
i linux-tools-5.10.0-1031-oem - Instrumente specifice versiunii nucleului Linux pentru versiunea 5.10.0-1031                                     
i lsd - O comandă ls cu o mulțime de culori frumoase.                                                      
i manage-distro-upgrade - Dezactivează upgrade-ul pentru OEM.                                                                        
i A manage-estar-settings - Setări legate de Energy Star                                                                    
i O oem-fix-misc-cnl-tlp-estar-conf - configurație personalizată pentru tlp.                                                               
i oem-ouagadougou-meta - Meta pachet pentru imaginea OEM mainstreams.                                                     
i oem-release - Afișează versiunea de lansare OEM                                                                        
i oem-somerville-butterfree-meta - suport hardware pentru platforma Somerville Butterfree                                             
i oem-somerville-factory-butterfree-meta - suport hardware pentru platforma Somerville Butterfree (fabrică)                                   
i oem-somerville-factory-meta - suport hardware pentru platforma Somerville                                                        
i oem-somerville-meta - suport hardware pentru platforma Somerville                                                        
i A oem-somerville-partner-archive-keyring - brelocuri pentru proiectul Somerville                                                                     
i slack-desktop - Slack Desktop                                                                                   
i sosreport-oem - pluginuri și utilitare sosreport legate de imaginea OEM.                                             

căutarea aptitudinilor ~b nu scoate nimic -- niciun pachet spart.

Iată rezultatul arbore /usr/local/:

/usr/local/
âââ coș
âââ etc
âââ jocuri
âââ includ
âââ lib
â  âââ python3.9
â  âââ dist-pachete
âââ om -> share/man
âââ sbin
âââ distribuie
â  âââ ca-certificate
â  âââ fonturi
â  âââ bărbat
â  âââ sgml
â  â  âââ declarație
â  â  âââ dtd
â  â  âââ entități
â  â  âââ diverse
â  â  âââ foaie de stil
â  âââ textmf
â  âââ xml
â  âââ declaraţie
â  âââ entități
â  âââ diverse
â  âââ schema
âââ src
âââ depozitați

Ieșire din 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

Cel mai probabil legat: tocmai am observat linii repetate ale formei

10 noiembrie 2021 15:36:59 j-dell env[10851] /usr/sbin/dcae: eroare la încărcarea bibliotecilor partajate: libldap_r-2.4.so.2: nu se poate deschide fișierul obiect partajat: nu există un astfel de fișier sau director

în /var/log/syslog. Dacă fug dcae pe linia de comandă primesc mesajul de eroare

dcae: eroare la încărcarea bibliotecilor partajate: libldap_r-2.4.so.2: nu se poate deschide fișierul obiect partajat: nu există un astfel de fișier sau director

la fel ca cu răsuci.

user313032 avatar
drapel cn
@TBr: Ubuntu 21.10 vine cu libldap-2.5-0 care nu include fișierul în cauză (dar pe computerul prietenului meu curl funcționează totuși). De aceea am instalat libldap-2.4-2 din 21.04, care include și fișierul (în `/usr/lib/x86_64-linux-gnu/`). Cu fișierul prezent, primesc al doilea mesaj de eroare. Nu inteleg sugestia ta.
user313032 avatar
drapel cn
Mulțumiri! Îmi pare rău, nu am fost explicit cu privire la pachetul care conține fișierul.
user313032 avatar
drapel cn
Acest lucru oferă aceleași două mesaje de eroare pe care le-am postat deja, în funcție de dacă `libldap-2.4-2` este instalat
waltinator avatar
drapel it
Comparați `ldd $(type -p curl)` pe ambele sisteme. Utilizați `dpkg -S filename` (citiți `man dpkg`) pentru a vedea ce pachet oferă `filename`.
user313032 avatar
drapel cn
@waltinator Am adăugat ieșirile comenzilor respective la întrebarea mea. După cum am spus deja, pe sistemul în care curl nu funcționează, încearcă să încarce o versiune mai veche a libldap. Din rezultat, este, de asemenea, evident că același lucru se întâmplă și cu liblber. Deci, se pare că versiunile bibliotecilor nu sunt codificate hard în binare? (Cele două binare sunt la fel, le-am diferențiat pentru a fi sigur).
user313032 avatar
drapel cn
Pentru a afla din ce pachet provine un fișier, folosesc de obicei `apt-file search` în loc de `dpkg -S`, deoarece cred că acesta din urmă caută doar prin fișierele pachetelor instalate. Dar pentru `libldap_r-2.4.so.2` ambele comenzi de căutare eșuează, deoarece fișierul provine din pachetul `libldap-2.4-2` care nu este inclus în Ubuntu 22.10.
user313032 avatar
drapel cn
Același lucru pentru `liblber-2.4.so.2`.
N0rbert avatar
drapel zw
Ieșirea pentru `care curl` este, de asemenea, necesară, poate fi de la `/usr/local/bin` , deci auto-compilată.
user313032 avatar
drapel cn
@N0rbert: L-am adăugat mai sus, este /usr/bin/curl și nu este autocompilat. Am verificat de două ori dacă cele două binare de pe diferite sisteme sunt identice.
N0rbert avatar
drapel zw
Instalarea v2.4 este încă posibilă prin `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` . Astfel de lucruri ciudate se întâmplă de obicei atunci când un pachet local/învechit rămâne instalat pe sistemul actualizat. Vă rugăm să instalați Aptitude și tree prin `sudo apt-get install tree aptitude` și adăugați rezultatul din sistemul defect - `aptitude search ~o` cu `tree /usr/local` la întrebare (dacă este lung - utilizați pastebin).
user313032 avatar
drapel cn
@N0rbert: Am încercat deja să instalez v2.4, ceea ce duce la un mesaj de eroare diferit, așa cum s-a explicat mai sus. Am adăugat ieșirile de comandă solicitate la întrebare. Multumesc pentru ajutor!
N0rbert avatar
drapel zw
Bănuiesc că `dca-enabler` și poate `dca-enabler-packages` sunt rădăcina problemei. Vă rugăm să partajați rezultatul `dpkg -S /usr/lib/dcaenabler/libcurl.so.4 /usr/lib/dcaenabler/libssl.so.1.1 /usr/lib/dcaenabler/libcrypto.so.1.1` . Intenționați să utilizați acest software Dell?
user313032 avatar
drapel cn
S-au adăugat informațiile solicitate. De asemenea, am observat informații relevante în /var/log/syslog, vezi mai sus. Referitor la întrebarea ta finală: nu prea știu ce fac chestia cu dca. Am comandat sistemul cu ubuntu preinstalat, deoarece mi s-a părut mai ușor decât să mă instalez singur și, de asemenea, mai ieftin. De asemenea, speram la un suport hardware mai bun. În afară de asta, nu sunt interesat de nicio caracteristică specifică Dell.
user313032 avatar
drapel cn
@N0rbert: sugerezi să dezinstalez pachetele DCA?
N0rbert avatar
drapel zw
Aș sugera să eliminați aceste pachete Dell folosind `sudo apt-get purge --autoremove dca-enabler-packages dca-enabler`, apoi reporniți pentru a verifica modificările.
user313032 avatar
drapel cn
@N0rbert: Eliminarea pachetelor a rezolvat problema! Mulțumesc mult pentru ajutor! Dacă adaugi un răspuns, îl voi accepta.
Puncte:3
drapel zw

Analiza ldd /usr/bin/curl rezultatul arată că pachetele Dell cauzează această problemă. Pentru a remedia sistemul, trebuie să le eliminăm prin

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

Notă: instrumentul pentru analiza ieșirii ldd este discutat în acest Q&A. M-a ajutat foarte mult să vă detectez problema în mod programatic.

user313032 avatar
drapel cn
Mulțumiri! În retrospectivă, este destul de clar cum să identifici pachetele problematice comparând ieșirile ldd și observând de ex. că diferite versiuni ale `libcurl.so.4` sunt încărcate pe cele două mașini. Dar nu l-am văzut eu până când nu l-ai subliniat.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.