Obje datoteke su 32-bitne i samo jedna od njih radi na vašoj ploči. ELF32 gradnja za Intel i ELF32 gradnja za ARM slažu se u polju razreda, a razlikuju u svemu što je važno. Stranica za preuzimanje koja nudi 32-bitnu opciju nije vam rekla gotovo ništa dok ne pročitate zaglavlje datoteke koju ste stvarno preuzeli. Preimenovanje ne mijenja ni jednu instrukciju.

Razred i stroj odgovaraju na različita pitanja

Polje razreda govori koristi li datoteka 32-bitne ili 64-bitne strukture. Polje stroja imenuje skup instrukcija za koji je datoteka kompilirana. Čitanje samo prvoga jest način na koji x86 gradnja završi na ARM ploči s imenom datoteke koje izgleda posve uvjerljivo. Obje vrijednosti dolaze iz iste naredbe, zato je jednu tako lako preskočiti.

Ista zabuna vrijedi i za 64-bitne oznake, gdje aarch64 i x86-64 dijele veličinu riječi i nijednu instrukciju. Stranica dobavljača koja navodi jedno 64-bitno preuzimanje opisuje vlastitu gradnju, a ne vaše računalo. Provjerite zaglavlje datoteke, a ne naslov stupca na stranici.

readelf -h ./vendor-vpn
readelf -l ./vendor-vpn | head -20
file ./vendor-vpn

Prva naredba ispisuje zaglavlje, uključujući razred i stroj. Druga prikazuje programska zaglavlja, gdje se nalazi zahtjev za interpreter. Treća vam daje jedan redak kad je tablica više nego što trebate.

Dodavanje dopuštenja za izvršavanje ili krpanje provjere distribucije ništa ne prevodi. Emulacija, gdje je platforma podržava, odluka je o implementaciji s vlastitim troškom izvedbe i ovisnosti.

Pročitajte zaglavlje prije pokretanja instalatera

Pregledajte pouzdan artefakt prije nego što iz njega išta izvršite. Instalater koji zakaže na pola puta može ostaviti zamijenjene biblioteke i ništa što radi, što je gore polazište od arhive s kojom ste počeli. Pregled zaglavlja samo je čitanje i povrativ u smislu da se ništa na sustavu ne mijenja.

Usporedite polje stroja s arhitekturom paketa pokrenutog sustava, a ne s marketinškim imenom ploče. 64-bitni procesor koji vrti 32-bitni korisnički prostor treba 32-bitnu gradnju i ta pojedinost odlučuje koje je preuzimanje nativno. Sposobnost ploče nije ograničenje; instalirani korisnički prostor jest.

dpkg --print-architecture
uname -m
getconf LONG_BIT

Prva naredba izvješćuje za koju arhitekturu sustav instalira pakete, a to je vrijednost koja se mora podudarati. Druge dvije opisuju jezgru i veličinu riječi i mogu se razilaziti s korisničkim prostorom pri multiarch instalaciji.

Kad se ti odgovori razilaze, odlučite koji dobavljač podržava prije preuzimanja druge arhive. Nagađanje stvara petlju instalacija od kojih svaka zakaže na drugom mjestu i svaki kvar izgleda kao novi problem.

Provjerite interpreter, ne samo arhitekturu

Dinamički izvršni program bilježi u programskom zaglavlju učitavač koji očekuje. Na sustavu s drukčijim putem učitavača jezgra odbija pokrenuti datoteku iako se polje stroja točno podudara. To je kvar zbog kojeg ljudi traže biblioteke koje nedostaju.

Poruka o pogrešci kaže u kojem ste slučaju, a dva je slučaja lako zamijeniti. Odbijanje zbog formata ili arhitekture razlikuje se od datoteke ili interpretera koji nedostaje, i samo se jedan od njih ispravlja instaliranjem drugog paketa.

readelf -l ./vendor-vpn | grep -A1 INTERP
ls -l /lib64/ld-linux-x86-64.so.2

Prva naredba pokazuje put interpretera koji binarni program traži. Druga provjerava postoji li taj put, što razlikuje pogrešnu gradnju od učitavača koji nedostaje.

Ne pokrećite popis ovisnosti na nepovjerljivom binarnom programu jer neke implementacije mogu izvršiti datoteku koju pregledavaju. Držite pregled samo za čitanje i oduprite se dodavanju simboličkih veza učitavača da biste pokrenuli nepodržanu gradnju.

Zatražite gradnju s činjenicama u ruci

Pošaljite dobavljaču izdanje OS-a, arhitekturu paketa, vrijednosti razreda i stroja te prvu poruku o pogrešci. Ta kombinacija zaslužuje koristan odgovor, dok snimka zaslona općenitog kvara zaslužuje predložak podrške.

Držite pitanje binarnog programa odvojeno od pitanja konfiguracije. Kad ispravna gradnja krene, profili, vjerodajnice i rute i dalje su vlastiti problemi i nikakvo uređivanje profila neće pokrenuti binarni program pogrešne arhitekture.

Povezani članci