Двата файла се 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

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

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

Побарајте изградба со фактите во рака

Испратете му на добавувачот верзијата на ОС, архитектурата на пакетите, вредностите за класа и машина и првата порака за грешка. Таа комбинација заслужува корисен одговор, додека слика од екранот на општ неуспех заслужува шаблон за поддршка.

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

Поврзани статии