Niðurhalssíða segir 32-bit, skráin lendir á Raspberry Pi og uppsetningarforritið mistekst með skilaboðum sem nefna engan gagnlegan hluta vandans. Tvær gjörólíkar keyranlegar skrár teljast báðar 32-bit í ELF-skyni, og aðeins önnur þeirra getur keyrt á því borði. Flokkasviðið er ein staðreynd, vélarsviðið önnur, og skráarnafn segir þér hvorugt á áreiðanlegan hátt. Lestu hausinn áður en þú skiptir um bókasafn eða prófar aðra spegilmynd.

Flokkurinn segir orðstærð, vélin segir skipanaset

Linux ELF-handbókin skilgreinir flokkasvið og vélarsvið í haus skrárinnar, og þau tvö svara mismunandi spurningum. Flokkurinn segir hvort skráin notar 32-bit eða 64-bit form; vélin segir fyrir hvaða skipanaset hún var byggð. 32-bit x86-bygging og 32-bit ARM-bygging eru sammála um hið fyrra og ósammála um hið síðara. Þannig skilar merkimiði sem lofar réttri orðstærð samt kóða sem örgjörvinn getur ekki afkóðað. Þriðja gildið sem er þess virði að lesa er umbeðinn túlkur, sem hausar forritsins nefna þegar tvíundarskráin lýsir einum.

readelf -h -- ./vendor-vpn
readelf -l -- ./vendor-vpn
readelf -d -- ./vendor-vpn | grep NEEDED

Fyrsta skipunin prentar hausinn, önnur prentar forritshausa þegar skráin hefur þá, og þriðja listar sameiginlegu hlutina sem hleðslutækið þarf á að halda. Skráðu flokk, vél og túlk saman, því þessi þrjú gildi eru öll samhæfnispurningin á þessu lagi. Ekkert þeirra þriggja birtist á niðurhalshnappi, þess vegna verður að skoða skrána frekar en lýsa henni.

Hvaða túlk hún biður kjarnann um

Keyranleg skrá sem lýsir túlk biður kjarnann um eina tiltekna hleðsluslóð. Þegar sá hleðslumaður vantar mistekst ræsingin þótt skráin sem þú nefndir standi einmitt þar. Þetta er punkturinn þar sem fólk ákveður að niðurhalið sé skemmt, þegar raunverulega svarið er hleðslumaður sem dreifingin útvegar ekki.

Láttu hleðslumanninn passa við kerfið sem þú keyrir í raun: útgáfu stýrikerfisins, arkitektúr notendarýmis og pakkann sem útvegar hleðslumanninn. 64-bita kjarni getur aðeins keyrt 32-bita notendarými þegar það rými og hleðslumaður þess eru uppsett, svo geta örgjörvans er ekki ráðandi þáttur. Ein stutt athugun nefnir túlkinn á einni línu, og hún tekur skemmri tíma en stuðningsmiði. Shell-skrift mistekst aftur á annan hátt, því túlkur hennar er nefndur á fyrstu línu en ekki í ELF-haus, og að lesa þá línu kostar ekkert.

file --brief ./vendor-vpn

Láttu niðurhalið passa við arkitektúr pakkans

Pakkearkitektúrar dreifinga kóða sömu aðgreiningu í eigin orðaforða, og á þann orðaforða vísar stuðningsyfirlýsing framleiðanda. Berðu saman gildið sem pakkastjórinn þinn greinir frá við gildið sem framleiðandinn skjalfestir, í stað þess að bera saman markaðsmerkimiða við skráarnafn. Pörin sem valda vandræðum eru amd64 gegn arm64 og armhf gegn armel, því hvert par virðist skiptanlegt í niðurhalslista. Skráarnafn sem endar á x64 eða ia32 lýsir byggingarmarki, ekki vélinni sem geymir það.

Label on the downloadELF classe_machineInterpreter the kernel wantsHow it fails on the wrong host
amd64ELF64x86-64/lib64/ld-linux-x86-64.so.2Immediate exec failure on an ARM board
armhfELF32ARM/lib/ld-linux-armhf.so.3Loads on a soft-float system, then fails on a float ABI call
i386ELF32Intel 80386/lib/ld-linux.so.2Exec format error where no 32-bit loader package exists

Hver röð er tilvik þar sem orðstærðin virðist rétt og kóðinn hagar sér samt rangt, eða þar sem hann ræsist og mistekst svo einu lagi neðar. Lestu túlkdálkinn sem harða kröfu en ekki vísbendingu, því kjarninn leysir þá slóð áður en nokkur hluti kóðans þíns keyrir. Hermun er dreifingarákvörðun með eigin afleiðingar fyrir afköst og stuðning, og hún er aldrei gefin í skyn af örgjörva sem auglýsir breiðari orðstærð.

dpkg --print-architecture

ENOEXEC og ENOENT eru ólík mistök

Ræsingarstigið greinir frá annarri tveggja villna, og þær benda á mismunandi vandamál. Að lesa villugildið flokkar mistökin áður en þú keyrir eitthvað annað.

ENOEXEC þýðir að sniðið var ekki þekkt: röng arkitektúr, röngur flokkur eða eitthvað sem er alls ekki keyranleg skrá. ENOENT á ELF-skrá þýðir venjulega að túlkurinn vanti, þótt skráin sem þú baðst um sé til. Sama ENOENT getur einnig þýtt að túlkur skriftu vanti, þess vegna skiptir fyrsta lína skriftu máli. Hvort sem er nefnir skilaboðin lagið, og að meðhöndla hvert „fannst ekki“ sem vantaða stillingu sendir rannsóknina í ranga átt. Vitnaðu í villugildið í miðanum, því það þolir endursögn betur en setningin í kringum það.

Hvað á ekki að gera þegar tvíundarskráin ræsist ekki

Að þvinga óútskýrða tvíundarskrá í gegnum shell-umbúðir lætur hana ekki keyra. Ekki keyra áreiðanleikaprófun fyrir slysni á skrá sem þú treystir ekki, því keyrsla hennar getur við sumar aðstæður keyrt kóða úr tvíundarskránni. Bættu ekki við táknrænum hlekkjum hleðslumanns, skiptu ekki um hýsilbókasöfn og sæktu ekki gamalt safn frá spegli þriðja aðila til að komast fram hjá skilaboðunum. Hvert þessara víkkar breytingasvæðið án þess að snerta ósamræmið sem hausinn hefur þegar nefnt.

Þegar þú leitar til framleiðandans skaltu senda gildi en ekki sögu: útgáfu stýrikerfisins, arkitektúr pakkans, flokks- og vélastrengi, umbeðinn túlk og fyrstu villulínuna. Þetta mengi leysir stuðningsspurningar hraðar en skjáskot af uppsetningarforriti sem mistekst. Gamlar gerviefni og munaðar fórumúttak eru ekki gildandi stuðningsfylki, og þegar innfædd tvíundarskrá hefur hlaðist eru prófíll, auðkenning og leiðsögn áfram aðskilin vinna.

Tengdir greinar