ஒரு பதிவிறக்கப் பக்கம் 32-bit என்கிறது, கோப்பு Raspberry Pi-க்கு வந்து சேர்கிறது, நிறுவி சிக்கலின் எந்தப் பயனுள்ள பகுதியையும் பெயரிடாத செய்தியுடன் தோல்வியடைகிறது. முற்றிலும் வேறுபட்ட இரு இயக்கக்கூடிய கோப்புகளும் ELF பொருளில் 32-bit என கணக்கிடப்படுகின்றன, அவற்றில் ஒன்று மட்டுமே அந்தப் பலகையில் இயங்க முடியும். வகுப்பு புலம் ஒரு உண்மை, இயந்திர புலம் மற்றொன்று, கோப்புப் பெயர் இரண்டையும் நம்பகமாகச் சொல்லாது. நூலகத்தை மாற்றவோ இன்னொரு கண்ணாடியை முயற்சிக்கவோ முன் தலைப்பைப் படியுங்கள்.

வகுப்பு சொல் அளவைச் சொல்கிறது, இயந்திரம் கட்டளைத் தொகுப்பைச் சொல்கிறது

Linux ELF குறிப்பு கோப்புத் தலைப்பில் வகுப்பு புலத்தையும் இயந்திர புலத்தையும் வரையறுக்கிறது, இரண்டும் வெவ்வேறு கேள்விகளுக்குப் பதிலளிக்கின்றன. கோப்பு 32-bit அல்லது 64-bit வடிவத்தைப் பயன்படுத்துகிறதா என வகுப்பு சொல்கிறது; எந்தக் கட்டளைத் தொகுப்புக்காக இது கட்டப்பட்டது என இயந்திரம் சொல்கிறது. 32-bit x86 build மற்றும் 32-bit ARM build முதல் விஷயத்தில் ஒத்துக்கொண்டு இரண்டாவதில் வேறுபடுகின்றன. இவ்வாறு சரியான சொல் அளவை உறுதியளிக்கும் லேபிளும் செயலி புரிந்துகொள்ள முடியாத குறியீட்டை வழங்குகிறது. படிக்கத் தகுந்த மூன்றாவது மதிப்பு கோரப்படும் மொழிபெயர்ப்பான், பைனரி ஒன்றை அறிவிக்கும்போது நிரல் தலைப்புகள் அதைப் பெயரிடுகின்றன.

readelf -h -- ./vendor-vpn
readelf -l -- ./vendor-vpn
readelf -d -- ./vendor-vpn | grep NEEDED

முதல் கட்டளை தலைப்பை அச்சிடுகிறது, இரண்டாவது கோப்பில் இருந்தால் நிரல் தலைப்புகளை அச்சிடுகிறது, மூன்றாவது ஏற்றி தேவைப்படும் பகிரப்பட்ட பொருட்களைப் பட்டியலிடுகிறது. வகுப்பு, இயந்திரம் மற்றும் மொழிபெயர்ப்பானை ஒன்றாகப் பதிவு செய்யுங்கள், ஏனெனில் இந்த மூன்று மதிப்புகளே இந்த அடுக்கில் முழு இணக்கக் கேள்வி. மூன்றில் எதுவும் பதிவிறக்க பொத்தானில் தெரியாது, எனவே கோப்பை விவரிப்பதல்ல, பரிசோதிக்க வேண்டும்.

கர்னலிடம் எந்த மொழிபெயர்ப்பானைக் கேட்கிறது

மொழிபெயர்ப்பானை அறிவிக்கும் இயக்கக்கூடிய கோப்பு கர்னலிடம் ஒரு குறிப்பிட்ட ஏற்றி பாதையைக் கேட்கிறது. அந்த ஏற்றி இல்லாதபோது, நீங்கள் பெயரிட்ட கோப்பு அங்கேயே இருந்தாலும் தொடக்கம் தோல்வியடைகிறது. மக்கள் பதிவிறக்கம் சேதமடைந்தது என முடிவெடுக்கும் இடம் இதுவே, உண்மையான பதில் விநியோகம் வழங்காத ஏற்றி ஆக இருக்கும்போது.

ஏற்றியை நீங்கள் உண்மையில் இயக்கும் அமைப்புக்குப் பொருத்துங்கள்: OS வெளியீடு, பயனர் இடத்தின் கட்டமைப்பு மற்றும் ஏற்றியை வழங்கும் தொகுப்பு. 64-bit கர்னல் 32-bit பயனர் இடத்தை இயக்க முடியும் அந்த இடமும் அதன் ஏற்றியும் நிறுவப்பட்டிருந்தால் மட்டுமே, எனவே செயலியின் திறன்கள் தீர்க்கமான காரணி அல்ல. ஒரு சிறிய சரிபார்ப்பு மொழிபெயர்ப்பானை ஒரு வரியில் பெயரிடுகிறது, அது ஆதரவு டிக்கெட்டை விடக் குறைந்த நேரம் எடுக்கிறது. ஷெல் ஸ்கிரிப்ட் மற்றொரு வழியில் தோல்வியடைகிறது, ஏனெனில் அதன் மொழிபெயர்ப்பான் ELF தலைப்பில் அல்ல, முதல் வரியில் பெயரிடப்பட்டுள்ளது, அந்த வரியைப் படிக்க எதுவும் செலவாகாது.

file --brief ./vendor-vpn

பதிவிறக்கத்தை தொகுப்பு கட்டமைப்புக்குப் பொருத்துங்கள்

விநியோகங்களின் தொகுப்பு கட்டமைப்புகள் அதே வேறுபாட்டைத் தங்கள் சொல்லகராதியில் குறியாக்குகின்றன, விற்பனையாளரின் ஆதரவு அறிக்கை அந்தச் சொல்லகராதியையே குறிக்கிறது. உங்கள் தொகுப்பு மேலாளர் தெரிவிக்கும் மதிப்பை விற்பனையாளர் ஆவணப்படுத்தும் மதிப்புடன் ஒப்பிடுங்கள், சந்தைப்படுத்தல் லேபிளைக் கோப்புப் பெயருடன் ஒப்பிடுவதற்குப் பதிலாக. சிக்கல் உருவாக்கும் ஜோடிகள் amd64 எதிராக arm64, மற்றும் armhf எதிராக armel, ஏனெனில் ஒவ்வொரு ஜோடியும் பதிவிறக்கப் பட்டியலில் மாற்றக்கூடியதாகத் தெரிகிறது. x64 அல்லது ia32 இல் முடியும் கோப்புப் பெயர் build இலக்கை விவரிக்கிறது, அதை வைத்திருக்கும் இயந்திரத்தை அல்ல.

Label on the downloadELF classe_machineInterpreter the kernel wantsHow it fails on the wrong host
amd64ELF64x86-64/lib64/ld-linux-x86-64.so.2Immediate exec failure on an ARM board
armhfELF32ARM/lib/ld-linux-armhf.so.3Loads on a soft-float system, then fails on a float ABI call
i386ELF32Intel 80386/lib/ld-linux.so.2Exec format error where no 32-bit loader package exists

ஒவ்வொரு வரிசையும் சொல் அளவு சரியாகத் தெரிந்தும் குறியீடு இன்னும் தவறாக நடந்துகொள்ளும் நிகழ்வு, அல்லது அது தொடங்கி பின்னர் ஒரு அடுக்கு கீழே தோல்வியடையும் நிகழ்வு. மொழிபெயர்ப்பான் நெடுவரிசையைக் குறிப்பாக அல்ல, கடுமையான தேவையாகப் படியுங்கள், ஏனெனில் கர்னல் உங்கள் குறியீட்டின் எந்தப் பகுதியும் இயங்கும் முன் அந்தப் பாதையைத் தீர்க்கிறது. எமுலேஷன் அதன் சொந்த செயல்திறன் மற்றும் ஆதரவு விளைவுகளுடன் கூடிய வரிசைப்படுத்தல் முடிவு, அகலமான சொல் அளவை விளம்பரப்படுத்தும் செயலி அதை ஒருபோதும் குறிப்பதில்லை.

dpkg --print-architecture

ENOEXEC மற்றும் ENOENT வெவ்வேறு தோல்விகள்

தொடக்க நிலை இரண்டு பிழைகளில் ஒன்றைத் தெரிவிக்கிறது, அவை வெவ்வேறு சிக்கல்களைச் சுட்டுகின்றன. பிழையின் மதிப்பைப் படிப்பது வேறு எதையும் இயக்கும் முன் தோல்வியை வகைப்படுத்துகிறது.

ENOEXEC என்பது வடிவம் அடையாளம் காணப்படவில்லை: தவறான கட்டமைப்பு, தவறான வகுப்பு அல்லது இயக்கக்கூடிய கோப்பே இல்லாத ஒன்று. ELF கோப்பில் ENOENT பொதுவாக மொழிபெயர்ப்பான் இல்லை எனப் பொருள்படும், நீங்கள் கோரிய கோப்பு இருந்தாலும். அதே ENOENT ஸ்கிரிப்டின் மொழிபெயர்ப்பான் இல்லை எனவும் பொருள்படலாம், எனவே ஸ்கிரிப்டின் முதல் வரி முக்கியம். எப்படியிருந்தாலும் செய்தி அடுக்கைப் பெயரிடுகிறது, ஒவ்வொரு “கிடைக்கவில்லை”யையும் காணாமல் போன கட்டமைப்பாகக் கருதுவது விசாரணையைத் தவறான திசைக்கு அனுப்புகிறது. டிக்கெட்டில் பிழையின் மதிப்பை மேற்கோள் காட்டுங்கள், ஏனெனில் அது சுற்றியுள்ள வாக்கியத்தை விட மீண்டும் சொல்வதைச் சிறப்பாகத் தாங்குகிறது.

பைனரி தொடங்காதபோது என்ன செய்யக்கூடாது

விளக்கப்படாத பைனரியை ஷெல் உறையின் வழியாக கட்டாயப்படுத்தி அனுப்புவது அதை இயக்காது. நீங்கள் நம்பாத கோப்பில் சார்பு சரிபார்ப்பைக் கவனக்குறைவாக இயக்க வேண்டாம், ஏனெனில் அதை இயக்குவது சில சூழ்நிலைகளில் பைனரியிலிருந்து குறியீட்டை இயக்கக்கூடும். ஏற்றி குறியீட்டு இணைப்புகளைச் சேர்க்க வேண்டாம், ஹோஸ்ட் நூலகங்களை மாற்ற வேண்டாம், செய்தியைத் தவிர்க்க மூன்றாம் தரப்பு கண்ணாடியிலிருந்து பழைய காப்பகத்தைப் பெற வேண்டாம். இவை ஒவ்வொன்றும் தலைப்பு ஏற்கனவே பெயரிட்ட பொருந்தாமையைத் தொடாமல் மாற்றத்தின் எல்லையை விரிவாக்குகிறது.

விற்பனையாளரை அணுகும்போது கதையல்ல, மதிப்புகளை அனுப்புங்கள்: OS வெளியீடு, தொகுப்பு கட்டமைப்பு, வகுப்பு மற்றும் இயந்திர சரங்கள், கோரப்பட்ட மொழிபெயர்ப்பான் மற்றும் முதல் பிழை வரி. அந்தத் தொகுப்பு ஆதரவுக் கேள்விகளைத் தோல்வியடையும் நிறுவியின் திரைப்பிடிப்பை விட வேகமாகத் தீர்க்கிறது. பழைய கலைப்பொருட்களும் நினைவில் உள்ள மன்ற வெளியீடுகளும் தற்போதைய ஆதரவு அணி அல்ல, நேரடி பைனரி ஏற்றப்பட்ட பிறகு சுயவிவரம், அங்கீகாரம் மற்றும் வழிப்பாதை தனிக் காரியமாகவே இருக்கும்.

தொடர்புடைய கட்டுரைகள்