Sundan ang error ng loader sa pagkakasunod-sunod: aling file ang nawawala, anong arkitektura ang ginagamit ng binary, anong simbolo ang hinahanap nito, at kung nangyari ang kabiguan bago o pagkatapos magsimula ang proseso. Apat na magkakaibang problema ito, at ang symlink ay tumutugon lamang sa una. Ang pagsunod sa pagkakasunod-sunod ay pumipigil sa karaniwang kinalabasan kung saan nagsisimula ang client at pagkatapos ay nabigo sa unang handshake. Nagtatapos ang checklist sa pagpapatunay sa pamamagitan ng tunay na launcher at hindi sa manu-manong pagsubok.

Itala ang path ng executable, ang arkitektura nito, at ang unang error nang eksakto bago baguhin ang anuman.

Apat na magkakaibang kabiguan sa likod ng isang error

Ang nawawalang shared object ay problema sa paghahanap ng file: naghanap ang loader ng pangalan at wala itong natagpuan. Ang nawawalang simbolo ay problema sa interface: umiiral ang file at hindi nire-export ang tinutukoy ng binary. Ang hindi pagtutugma ng bersyon ng simbolo ay parehong klase na may mas maraming detalye. Ang hindi suportadong algorithm na iniulat pagkatapos ng pag-start ay pagbabago ng pag-uugali sa loob ng library na matagumpay na na-load. Bawat isa ay nangangailangan ng ibang tugon, at ang una lamang ang usapin ng pangalan.

ldd sa binary at readelf -d sa dinamikong seksyon nito ay nagpapakita kung ano ang hinihiling nito, na karaniwang sapat upang ihiwalay ang problema sa file mula sa problema sa interface.

Ano ang aktwal na hinihiling ng OpenSSL 3

Ang gabay sa paglipat sa OpenSSL 3 ay tuwiran tungkol dito: ang mga application na itinayo laban sa mga naunang bersyon ay nangangailangan ng hindi bababa sa muling pag-compile, at hindi ginagarantiyahan ang pagiging tugma ng source code. Nagbago ang mga interface, at ang ilan ay na-deprecate o inalis. Ang alias ng pangalan ng file ay hindi makakapag-compile muli at hindi makapagtuturo ng bagong interface sa lumang binary. Ang pag-link ng mas bagong library sa ilalim ng pangalang mukhang mas luma ay gumagawa ng program na maaaring magsimula at pagkatapos ay mabigo sa isang lugar na mas hindi halata.

Mas masama iyon kaysa sa malinaw na kabiguan. Pinangalanan agad ng error ng loader ang problema, samantalang ang huling kabiguan sa loob ng isang operasyon ay mukhang problema sa network o kredensyal at itinutuon ang imbestigasyon sa maling direksyon.

Bakit mali ang lokasyon ng distro library

Ang pagpapalit ng distribution library upang masiyahan ang isang client ay nagbabago ng kapaligiran para sa bawat program sa makina, kabilang ang mga update sa seguridad at lahat ng umaasa sa umiiral na interface. Ang pagkopya ng lumang library sa tabi ng binary ay mas makitid, at gumagawa pa rin ito ng dependency na kailangang panatilihin at i-patch ng isang tao. Ni isa sa dalawa ay hindi aprubadong landas ng pagiging tugma, kahit mukhang gumagana ito sa araw na inilapat. Ang pandaigdigang alias na naiwan pagkatapos ng eksperimento ay mas masama, dahil walang nakakaalala kung bakit ito umiiral.

Gamitin ang sinusuportahang client at dependency set ng vendor para sa aktwal na release ng OS, arkitektura at gateway. Ang format ng package na gumana para sa isang tao ay hindi nagpapatunay ng tamang kasalukuyang landas, at ang naka-archive na recipe ay ebidensya tungkol sa nakaraan.

I-verify ang launcher, hindi ang paglunsad

Pagkatapos ng sinusuportahang pagpapalit, suriin kung ano ang nireresolba ng normal na launcher: ldd sa naka-install na executable, ang mga bersyon ng library na binabanggit nito, at ang kapaligirang ipinapasa ng serbisyo. Pagkatapos ay patakbuhin ang nilalayong pagpapatunay at isang tunay na operasyon. Ang manu-manong pagtawag na may binagong kapaligiran ay nagpapatunay lamang na kayang simulan ito ng iyong shell. Ang launcher, desktop entry o service unit ang aktwal na pinapatakbo ng mga gumagamit.

Kung walang sinusuportahang build, tanungin ang may-ari ng VPN para sa alternatibo o landas ng paglipat. Ang tahimik na paglipat sa ibang protocol, o pag-aakalang natutugunan ng client na may pamilyar na pangalan ng vendor ang gateway, ay naglilipat ng kabiguan sa halip na ayusin ito.

Kung saan hindi maiiwasan ang pansamantalang kaayusan sa pagiging tugma, idokumento ito, limitahan sa binary na iyon, at alisin kapag dumating ang sinusuportahang build.

Kaugnay na mga artikulo