Ці сабраны ваш бінарнік VPN для гэтага працэсара? Чытайце загаловак ELF
Клас і машына ELF — розныя палі, а інтэрпрэтатар — трэцяе. Прачытайце ўсе тры, перш чым усталёўваць кліент VPN на Pi ці іншую плату.
Абодва файлы 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
Першая каманда паказвае шлях інтэрпрэтатара, які запытвае бінарнік. Другая правярае, ці існуе гэты шлях, што аддзяляе няправільную зборку ад адсутнага загрузчыка.
Не запускайце сродак пераліку залежнасцей супраць недаверанага бінарніка, бо некаторыя рэалізацыі могуць выконваць файл, які яны правяраюць. Трымайце агляд толькі для чытання і супраціўляйцеся даданню сімвалічных спасылак загрузчыка, каб прымусіць неподтрымліваемую зборку запусціцца.
Прасіце зборку, маючы факты ў руках
Паведаміце пастаўшчыку выпуск АС, архітэктуру пакетаў, значэнні класа і машыны і першае паведамленне пра памылку. Гэтая камбінацыя заслугоўвае карыснага адказу, а здымак экрана агульнага збою — шаблон падтрымкі.
Трымайце пытанне бінарніка асобна ад пытання канфігурацыі. Пасля запуску правільнай зборкі профілі, уліковыя даныя і маршруты застаюцца ўласнымі праблемамі, і ніякая колькасць рэдагавання профілю не прымусіць бінарнік няправільнай архітэктуры працаваць.