Je vaša binarna datoteka VPN zgrajena za ta procesor? Preberite glavo ELF
Razred in stroj ELF sta različna polja, tolmač pa je tretje. Preberite vse tri, preden namestite odjemalca VPN na Pi ali drugo ploščo.
Obe datoteki sta 32-bitni in le ena od njiju teče na vaši plošči. Gradnja ELF32 za Intel in gradnja ELF32 za ARM se ujemata v polju razreda in se ne ujemata v vsem, kar je pomembno. Stran za prenos s 32-bitno možnostjo vam ni povedala skoraj nič, dokler ne preberete glave datoteke, ki ste jo dejansko prenesli. Preimenovanje ne spremeni niti enega ukaza.
Razred in stroj odgovarjata na različna vprašanja
Polje razreda pove, ali datoteka uporablja 32-bitne ali 64-bitne strukture. Polje stroja poimenuje nabor ukazov, za katerega je bila datoteka prevedena. Branje samo prvega je način, kako se gradnja x86 znajde na plošči ARM z imenom datoteke, ki je videti popolnoma verjetno. Obe vrednosti prihajata iz istega ukaza, zato je tako lahko eno izpustiti.
Enaka zmeda velja za 64-bitne oznake, kjer si aarch64 in x86-64 delita velikost besede in nobenega ukaza. Stran ponudnika, ki navaja en prenos 64 bitov, opisuje svojo lastno gradnjo, ne vašega stroja. Preverite glavo datoteke namesto naslova stolpca na strani.
readelf -h ./vendor-vpn readelf -l ./vendor-vpn | head -20 file ./vendor-vpn
Prvi ukaz izpiše glavo, vključno z razredom in strojem. Drugi pokaže glave programa, kjer je zahteva za tolmač. Tretji vam da eno vrstico, ko je tabela več, kot potrebujete.
Dodajanje pravice za izvajanje ali popravljanje preverjanja distribucije ne prevede ničesar. Emulacija je tam, kjer jo platforma podpira, odločitev o uvedbi z lastnimi stroški delovanja in odvisnosti.
Preberite glavo, preden zaženete namestitveni program
Preglejte zaupanja vreden artefakt, preden iz njega kar koli izvedete. Namestitveni program, ki spodleti na pol poti, lahko pusti zamenjane knjižnice in nič delujočega, kar je slabše izhodišče od arhiva, s katerim ste začeli. Pregled glave je samo za branje in povraten v smislu, da se v sistemu nič ne spremeni.
Primerjajte polje stroja z arhitekturo paketov delujočega sistema, ne s tržnim imenom plošče. 64-bitni procesor, ki poganja 32-bitni uporabniški prostor, potrebuje 32-bitno gradnjo, in ta podrobnost odloči, kateri prenos je izviren. Zmogljivost plošče ni omejitev; nameščeni uporabniški prostor je.
dpkg --print-architecture uname -m getconf LONG_BIT
Prvi ukaz poroča o arhitekturi, za katero sistem namešča pakete, in to je vrednost, ki se mora ujemati. Druga dva opisujeta jedro in velikost besede, in lahko se pri večarhitekturni namestitvi razlikujeta od uporabniškega prostora.
Ko se ta odgovora razlikujeta, se odločite, katero ponudnik podpira, preden prenesete drugo arhiv. Ugibanje ustvari zanko namestitev, od katerih vsaka spodleti na drugem mestu, in vsaka napaka je videti kot nova težava.
Preverite tolmač, ne le arhitekture
Dinamična izvršljiva datoteka v glavo programa zapiše nalagalnik, ki ga pričakuje. V sistemu z drugačno potjo nalagalnika jedro zavrne zagon datoteke, tudi ko se polje stroja natančno ujema. To je napaka, ki ljudi pošlje iskat manjkajoče knjižnice.
Sporočilo o napaki pove, v katerem primeru ste, in ta dva primera je lahko zamenjati. Zavrnitev zaradi oblike ali arhitekture se razlikuje od manjkajoče datoteke ali tolmača, in le enega od njiju odpravi namestitev drugega paketa.
readelf -l ./vendor-vpn | grep -A1 INTERP ls -l /lib64/ld-linux-x86-64.so.2
Prvi ukaz pokaže pot tolmača, ki jo zahteva binarna datoteka. Drugi preveri, ali ta pot obstaja, kar loči napačno gradnjo od manjkajočega nalagalnika.
Ne zaženite seznama odvisnosti na nezanesljivi binarni datoteki, ker nekatere izvedbe lahko izvedejo datoteko, ki jo pregledujejo. Pregled naj ostane samo za branje in uprite se skušnjavi, da bi dodali simbolne povezave nalagalnika, da bi zagnali nepodprto gradnjo.
Prosite za gradnjo z dejstvi v roki
Pošljite ponudniku različico OS, arhitekturo paketov, vrednosti razreda in stroja ter prvo sporočilo o napaki. Ta kombinacija si zasluži koristen odgovor, medtem ko posnetek zaslona splošne napake dobi predlogo za podporo.
Držite vprašanje o binarni datoteki ločeno od vprašanja o konfiguraciji. Ko se pravilna gradnja zažene, so profili, poverilnice in poti še vedno njihove lastne težave, in nobena količina urejanja profilov ne bo pognala binarne datoteke z napačno arhitekturo.