Kas sinu VPN-binaarfail on selle protsessori jaoks ehitatud? Lugege ELF-päist
ELF klass ja masin on erinevad väljad ning interpretaator on kolmas. Lugege kõiki kolme enne VPN-kliendi paigaldamist Pi-le või mõnele muule plaadile.
Mõlemad failid on 32-bitised ja ainult üks neist töötab sinu plaadil. Intelile mõeldud ELF32-build ja ARM-ile mõeldud ELF32-build nõustuvad klassi väljas ja erinevad kõiges olulises. Allalaadimisleht, mis pakub 32-bitist valikut, ei ole sulle peaaegu midagi öelnud enne, kui loed selle faili päise, mille sa tegelikult alla laadisid. Ümbernimetamine ei muuda ühtki käsku.
Klass ja masin vastavad erinevatele küsimustele
Klassi väli ütleb, kas fail kasutab 32-bitiseid või 64-bitiseid struktuure. Masina väli nimetab käsustiku, mille jaoks fail kompileeriti. Ainult esimese lugemine on see, kuidas x86-build satub ARM-plaadile failinimega, mis näeb täiesti usutav välja. Mõlemad väärtused tulevad samast käsust, seepärast on ühe vahelejätmine nii lihtne.
Sama segadus kehtib 64-bitiste siltide kohta, kus aarch64 ja x86-64 jagavad sõna suurust ja üldse mitte ühtegi käsku. Tarnija leht, mis loetleb ühe 64-bitise allalaadimise, kirjeldab omaenda buildi, mitte sinu masinat. Kontrollige faili päist, mitte lehe veeru pealkirja.
readelf -h ./vendor-vpn readelf -l ./vendor-vpn | head -20 file ./vendor-vpn
Esimene käsk trükib päise, sealhulgas klass ja masin. Teine näitab programmi päise, kus asub interpretaatori taotlus. Kolmas annab sulle ühe rea, kui tabel on rohkem, kui vaja.
Käivitamisõiguse lisamine või distributsiooni kontrolli paikamine ei tõlgi midagi. Emuleerimine, kus platvorm seda toetab, on juurutamisotsus, millel on oma jõudluse ja sõltuvuste kulu.
Lugege päist enne paigaldaja käivitamist
Kontrollige usaldusväärset artefakti enne, kui midagi sellest käivitate. Paigaldaja, mis ebaõnnestub poolel teel, võib jätta asendatud teegid ja mitte midagi töötavat, mis on halvem lähtepunkt kui arhiiv, millega alustasite. Päise kontrollimine on ainult lugemiseks ja pööratav selles mõttes, et süsteemis ei muutu midagi.
Võrrelge masina välja töötava süsteemi paketiarhitektuuriga, mitte plaadi turundusnimega. 32-bitist kasutajaruumi käitav 64-bitine protsessor vajab 32-bitist buildi ja see üksikasjalik detail otsustab, milline allalaadimine on natiivne. Plaadi võimekus ei ole piirang; paigaldatud kasutajaruum on.
dpkg --print-architecture uname -m getconf LONG_BIT
Esimene käsk teatab arhitektuuri, mille jaoks süsteem pakette paigaldab, ja see on väärtus, mis peab ühtima. Ülejäänud kaks kirjeldavad kerneli ja sõna suurust ning need võivad mitmikarhitektuuri paigaldusel kasutajaruumiga mitte ühtida.
Kui need vastused erinevad, otsustage, millist tarnija toetab, enne teise arhiivi allalaadimist. Oletamine loob paigalduste ahela, millest igaüks ebaõnnestub erinevas kohas, ja iga ebaõnnestumine näeb välja nagu uus probleem.
Kontrollige interpretaatorit, mitte ainult arhitektuuri
Dünaamiline käivitatav fail salvestab programmi päisesse laadija, mida ta ootab. Süsteemis, kus laadija tee on erinev, keeldub kernel faili käivitamast isegi siis, kui masina väli ühtib täpselt. See on tõrge, mis saadab inimesi otsima puuduvaid teeke.
Veateade ütleb, millises juhtumis olete, ja neid kahte juhtumit on lihtne segi ajada. Vormingu või arhitektuuri tagasilükkamine erineb puuduvast failist või interpretaatorist, ja ainult üks neist parandatakse teise paketi paigaldamisega.
readelf -l ./vendor-vpn | grep -A1 INTERP ls -l /lib64/ld-linux-x86-64.so.2
Esimene käsk näitab interpretaatori teed, mida binaarfail nõuab. Teine kontrollib, kas see tee on olemas, mis eristab vale buildi puuduvast laadijast.
Ärge käivitage sõltuvuste loendit mitteusaldusväärse binaarfaili vastu, sest mõned rakendused võivad käivitada faili, mida nad kontrollivad. Hoidke kontroll ainult lugemiseks ja vastu pidage laadija sümboolsete linkide lisamisele, et toetamata build käivituks.
Küsige buildi, kui faktid on käes
Saatke tarnijale OS-i versioon, paketiarhitektuur, klassi ja masina väärtused ning esimene veateade. See kombinatsioon teenib kasuliku vastuse, samas kui üldise tõrke ekraanipilt teenib tugimalli.
Hoidke binaarfaili küsimus konfiguratsiooni küsimusest eraldi. Kui õige build käivitub, on profiilid, volitused ja marsruudid endiselt nende endi probleemid, ja ükski profiili redigeerimine ei pane vale arhitektuuriga binaarfaili tööle.