Mae gosodwr VPN yn dweud 32-bit: gwiriwch bennawd ELF
Nid yw maint gair yn nodi’r set gyfarwyddyd. Gweithdrefn ar gyfer darllen dosbarth, peiriant a dehonglydd, ac yna gofyn am adeiladwaith sy’n cyfateb i’r gwesteiwr.
Mae tudalen lawrlwytho yn dweud 32-bit, mae’r ffeil yn glanio ar Raspberry Pi, ac mae’r gosodwr yn methu â neges nad yw’n enwi unrhyw ran ddefnyddiol o’r broblem. Mae dau ffeil weithredadwy hollol wahanol ill dau yn cyfrif fel 32-bit yn ystyr ELF, a dim ond un ohonynt all redeg ar y bwrdd hwnnw. Mae’r maes dosbarth yn un ffaith, mae’r maes peiriant yn un arall, ac nid yw enw ffeil yn dweud y naill na’r llall wrthych yn ddibynadwy. Darllenwch y pennawd cyn newid llyfrgell neu roi cynnig ar ddrych arall.
Mae’r dosbarth yn dweud maint gair, mae’r peiriant yn dweud y set gyfarwyddyd
Mae cyfeirlyfr ELF Linux yn diffinio maes dosbarth a maes peiriant ym mhennawd y ffeil, ac mae’r ddau yn ateb cwestiynau gwahanol. Mae’r dosbarth yn dweud a yw’r ffeil yn defnyddio ffurf 32-bit neu 64-bit; mae’r peiriant yn dweud ar gyfer pa set gyfarwyddyd y’i hadeiladwyd. Mae adeiladwaith x86 32-bit ac adeiladwaith ARM 32-bit yn cytuno ar y cyntaf ac yn anghytuno ar yr ail. Dyna sut y mae label sy’n addo’r maint gair cywir yn dal i ddanfon cod na all y prosesydd ei ddadgodio. Y trydydd gwerth sy’n werth ei ddarllen yw’r dehonglydd gofynnol, y mae pennawdau’r rhaglen yn ei enwi pan fydd y deuaidd yn datgan un.
readelf -h -- ./vendor-vpn
readelf -l -- ./vendor-vpn
readelf -d -- ./vendor-vpn | grep NEEDED
Mae’r gorchymyn cyntaf yn argraffu’r pennawd, mae’r ail yn argraffu pennawdau rhaglen pan fo gan y ffeil rai, ac mae’r trydydd yn rhestru’r gwrthrychau a rennir y bydd y llwythwr eu hangen. Cofnodwch ddosbarth, peiriant a dehonglydd gyda’i gilydd, oherwydd y tri gwerth hynny yw’r cwestiwn cydnawsedd cyfan ar y haen hon. Nid oes unrhyw un o’r tri yn ymddangos ar fotwm lawrlwytho, a dyna pam y mae’n rhaid archwilio’r ffeil yn hytrach na’i disgrifio.
Pa ddehonglydd y mae’n ei ofyn i’r cnewyllyn
Mae ffeil weithredadwy sy’n datgan dehonglydd yn gofyn i’r cnewyllyn am un llwybr llwythwr penodol. Pan fydd y llwythwr hwnnw ar goll, mae’r lansiad yn methu hyd yn oed os yw’r ffeil a enwoch yn sefyll yn union yno. Dyna’r pwynt lle mae pobl yn penderfynu bod y lawrlwythiad wedi’i llygru, tra bo’r ateb go iawn yn llwythwr nad yw’r dosbarthiad yn ei ddarparu.
Cyfatebwch y llwythwr i’r system rydych chi’n ei rhedeg mewn gwirionedd: rhyddhad y system weithredu, pensaernïaeth y gofod defnyddiwr, a’r pecyn sy’n darparu’r llwythwr. Gall cnewyllyn 64-bit redeg gofod defnyddiwr 32-bit dim ond pan fydd y gofod hwnnw a’i lwythwr wedi’u gosod, felly nid yw galluoedd y prosesydd yn ffactor penderfynol. Mae un gwiriad byr yn enwi’r dehonglydd ar un llinell, ac mae’n cymryd llai o amser na thocyn cymorth. Mae sgript shell yn methu’n wahanol eto, oherwydd mae ei dehonglydd wedi’i enwi ar y llinell gyntaf yn hytrach nag mewn pennawd ELF, ac nid yw darllen y llinell honno’n costio dim.
file --brief ./vendor-vpn
Cyfatebwch y lawrlwythiad i bensaernïaeth y pecyn
Mae pensaernïaeth pecynnau dosbarthiadau yn amgodio’r un gwahaniaeth yn eu geirfa eu hunain, a’r eirfa honno yw’r hyn y mae datganiad cymorth gwerthwr yn cyfeirio ato. Cymharwch y gwerth y mae eich rheolwr pecynnau yn ei adrodd â’r gwerth y mae’r gwerthwr yn ei ddogfennu, yn lle cymharu label marchnata ag enw ffeil. Y parau sy’n achosi trafferth yw amd64 yn erbyn arm64, ac armhf yn erbyn armel, oherwydd mae pob pâr yn edrych yn gyfnewidiol mewn rhestr lawrlwytho. Mae enw ffeil sy’n gorffen mewn x64 neu ia32 yn disgrifio targed adeiladu, nid y peiriant sy’n ei ddal.
| Label on the download | ELF class | e_machine | Interpreter the kernel wants | How it fails on the wrong host |
|---|---|---|---|---|
| amd64 | ELF64 | x86-64 | /lib64/ld-linux-x86-64.so.2 | Immediate exec failure on an ARM board |
| armhf | ELF32 | ARM | /lib/ld-linux-armhf.so.3 | Loads on a soft-float system, then fails on a float ABI call |
| i386 | ELF32 | Intel 80386 | /lib/ld-linux.so.2 | Exec format error where no 32-bit loader package exists |
Mae pob rhes yn achos lle mae maint y gair yn edrych yn gywir ac mae’r cod yn dal i ymddwyn yn wael, neu lle mae’n cychwyn ac yna’n methu un haen yn is i lawr. Darllenwch y golofn dehonglydd fel gofyniad caled yn hytrach nag awgrym, oherwydd mae’r cnewyllyn yn datrys y llwybr hwnnw cyn i unrhyw ran o’ch cod redeg. Mae efelychu yn benderfyniad defnyddio sydd â’i ganlyniadau perfformiad a chymorth ei hun, ac ni chyhyra prosesydd sy’n hysbysebu maint gair ehangach mohono byth.
dpkg --print-architecture
Mae ENOEXEC ac ENOENT yn fethiannau gwahanol
Mae’r cam lansio yn adrodd un o ddau gamgymeriad, ac maent yn pwyntio at broblemau gwahanol. Mae darllen gwerth y camgymeriad yn dosbarthu’r methiant cyn i chi redeg unrhyw beth arall.
Mae ENOEXEC yn golygu na chafodd y fformat ei adnabod: pensaernïaeth anghywir, dosbarth anghywir, neu rywbeth nad yw’n ffeil weithredadwy o gwbl. Mae ENOENT ar ffeil ELF fel arfer yn golygu bod y dehonglydd ar goll, hyd yn oed os yw’r ffeil a ofynnoch yn bodoli. Gall yr un ENOENT olygu hefyd fod dehonglydd sgript ar goll, a dyna pam mae llinell gyntaf sgript yn bwysig. Naill ffordd neu’r llall mae’r neges yn enwi’r haen, ac mae trin pob “heb ei ganfod” fel cyfluniad coll yn anfon yr ymchwiliad i’r cyfeiriad anghywir. Dyfynnwch werth y camgymeriad yn y tocyn, oherwydd mae’n goroesi ailadrodd yn well na’r frawddeg o’i gwmpas.
Beth i beidio â’i wneud pan na fydd y deuaidd yn cychwyn
Nid yw gorfodi deuaidd heb esboniad drwy lapio shell yn gwneud iddo redeg. Peidiwch â rhedeg gwiriwr dibyniaeth yn ysgafn ar ffeil nad ydych yn ymddiried ynddi, oherwydd gall ei redeg weithredu cod o’r deuaidd mewn rhai amgylchiadau. Peidiwch ag ychwanegu dolennau symbolaidd llwythwr, cyfnewid llyfrgelloedd gwesteiwr na chyrchu archif hen o ddrych trydydd parti i fynd heibio’r neges. Mae pob un o’r rheini yn ehangu’r wyneb newid heb gyffwrdd â’r anghyfatebiaeth y mae’r pennawd eisoes wedi’i henwi.
Pan fyddwch yn cysylltu â’r gwerthwr, anfonwch werthoedd yn hytrach na stori: rhyddhad y system weithredu, pensaernïaeth y pecyn, llinynnau dosbarth a pheiriant, y dehonglydd gofynnol a’r llinell gamgymeriad gyntaf. Mae’r set honno yn datrys cwestiynau cymorth yn gyflymach na chip llun o osodwr sy’n methu. Nid yw hen arteffactau ac allbynnau fforwm a gofir yn fatrics cymorth cyfredol, ac unwaith y bydd deuaidd brodorol yn llwytho, mae proffil, dilysu a llwybro yn parhau’n waith ar wahân.