VPN-uppsetningarforrit segir 32-bit: skoðaðu ELF-hausinn í staðinn
Orðstærð greinir ekki skipanasetið. Ferli til að lesa flokk, vél og túlk og biðja síðan um byggingu sem passar við hýsilinn.
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 download | ELF class | e_machine | Interpreter the kernel wants | How it fails on the wrong host |
|---|---|---|---|---|
| amd64 | ELF64 | x86-64 | /lib64/ld-linux-x86-64.so.2 | Immediate exec failure on an ARM board |
| armhf | ELF32 | ARM | /lib/ld-linux-armhf.so.3 | Loads on a soft-float system, then fails on a float ABI call |
| i386 | ELF32 | Intel 80386 | /lib/ld-linux.so.2 | Exec 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.