Оба фајла су 32-битна и само један од њих ради на вашој плочи. ELF32 градња за Intel и ELF32 градња за ARM слажу се у пољу класе, а разликују се у свему што је важно. Страница за преузимање која нуди 32-битну опцију није вам рекла скоро ништа док не прочитате заглавље фајла који сте заиста преузели. Преименовање не мења ни једну инструкцију.

Класа и машина одговарају на различита питања

Поље класе говори да ли фајл користи 32-битне или 64-битне структуре. Поље машине именује скуп инструкција за који је фајл компајлиран. Читање само првог је начин на који градња x86 заврши на ARM плочи са именом фајла које изгледа потпуно уверљиво. Обе вредности долазе из исте наредбе, зато је тако лако прескочити једну.

Иста забуна важи и за 64-битне ознаке, где aarch64 и x86-64 деле величину речи и ниједну инструкцију. Страница добављача која наводи једно 64-битно преузимање описује сопствену градњу, а не ваш рачунар. Проверите заглавље фајла, а не наслов колоне на страници.

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

Прва наредба исписује заглавље, укључујући класу и машину. Друга приказује програмска заглавља, где се налази захтев за интерпретер. Трећа вам даје један ред када је табела више него што вам треба.

Додавање дозволе за извршавање или крпање провере дистрибуције ништа не преводи. Емулација, где је платформа подржава, одлука је о распоређивању са сопственим трошком за перформансе и зависности.

Прочитајте заглавље пре покретања инсталатера

Прегледајте поуздан артефакт пре него што из њега било шта извршите. Инсталатер који не успе на пола пута може оставити замењене библиотеке и ништа што ради, што је горе полазиште од архиве са којом сте почели. Преглед заглавља је само читање и повратан у смислу да се ништа на систему не мења.

Упоредите поље машине са архитектуром пакета покренутог система, а не са маркетиншким именом плоче. 64-битни процесор који покреће 32-битни кориснички простор захтева 32-битну градњу, и тај детаљ одлучује које је преузимање нативно. Способност плоче није ограничење; инсталирани кориснички простор јесте.

dpkg --print-architecture
uname -m
getconf LONG_BIT

Прва наредба извештава за коју архитектуру систем инсталира пакете, а то је вредност која мора да се поклопи. Друге две описују језгро и величину речи, и могу се разликовати од корисничког простора при инсталацији више архитектура.

Када се ти одговори разликују, одлучите коју добављач подржава пре него што преузмете другу архиву. Нагађање ствара петљу инсталација од којих свака не успе на другом месту, и сваки неуспех изгледа као нови проблем.

Проверите интерпретер, не само архитектуру

Динамички извршни фајл у програмском заглављу бележи учитавач који очекује. На систему са другачијом путањом учитавача језгро одбија да покрене фајл иако се поље машине тачно поклапа. То је неуспех због којег људи траже библиотеке које недостају.

Порука о грешци говори у ком случају сте, а два случаја је лако заменити. Одбијање због формата или архитектуре разликује се од фајла или интерпретера који недостаје, и само један од њих се исправља инсталирањем другог пакета.

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

Прва наредба показује путању интерпретера коју бинарни фајл захтева. Друга проверава да ли та путања постоји, што раздваја погрешну градњу од учитавача који недостаје.

Не покрећите списак зависности на неповерљивом бинарном фајлу, јер неке имплементације могу извршити фајл који прегледају. Држите преглед само за читање и одуприте се додавању симболичких веза учитавача да бисте покренули неподржану градњу.

Затражите градњу са чињеницама у руци

Пошаљите добављачу издање OS-а, архитектуру пакета, вредности класе и машине и прву поруку о грешци. Та комбинација заслужује користан одговор, док снимак екрана општег неуспеха заслужује шаблон подршке.

Држите питање бинарног фајла одвојено од питања конфигурације. Када исправна градња крене, профили, акредитиви и руте и даље су њихови сопствени проблеми, и никакво уређивање профила неће покренути бинарни фајл погрешне архитектуре.

Повезани чланци