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.

Sorodni članki