Computer >> कंप्यूटर ट्यूटोरियल >  >> समस्या निवारण >> Linux

उबंटू पर 'cannot execute binary file: Exec format error' को हल करने के लिए त्वरित मार्गदर्शिका

हालांकि आधिकारिक apt-get रिपॉजिटरी का उपयोग करते समय ऐसा नहीं होना चाहिए, यदि आप इंटरनेट से सॉफ़्टवेयर डाउनलोड करते हैं और इसे चलाते हैं तो एक मौका है कि आप भयानक bash: ./nameOfProgram: cannot execute binary file: Exec format error देखेंगे। यह त्रुटि, जो आमतौर पर bash: ./nameOfProgram.sh: Permission denied या ऐसा कुछ द्वारा अनुसरण की जाती है, इंगित करती है कि उबंटू आपके द्वारा डाउनलोड किए गए बाइनरी के साथ सही ढंग से इंटरफेस करने में सक्षम नहीं था। ऐसा इसलिए है क्योंकि जबकि यह स्पष्ट रूप से एक वैध लिनक्स बाइनरी है, यह आपके कर्नेल द्वारा वर्तमान में समर्थित चिपसेट से अलग चिपसेट के लिए डिज़ाइन किया गया है।

उबंटू का उपयोग करने वाले अधिकांश लोग एक मानक आर्किटेक्चर पर आधारित 32-बिट या 64-बिट प्रोसेसर पर हैं जिसे इंटेल ने जारी किया, चाहे उनके माइक्रोचिप्स को वास्तव में किसने बनाया हो। यह याद रखना महत्वपूर्ण है कि 64-बिट प्रोसेसर 32-बिट मोड में चल सकते हैं, इसलिए यदि आपको यह त्रुटि मिल रही है भले ही आपके पास 64-बिट प्रोसेसर हो तो एक मौका है कि आप उबंटू का 32-बिट संस्करण चला रहे हैं। कुछ सरल कमांड यह बताने के लिए हैं कि आपका चिप किस रूप में काम कर रहा है।

विधि 1: arch कमांड का उपयोग करना

यदि आप अपने मशीन पर इंस्टॉल किए गए माइक्रोप्रोसेसर के प्रकार से परिचित नहीं हैं, तो आप पहले कमांड लाइन से arch कमांड का उपयोग करना चाहेंगे। इस कमांड को चलाने के बाद आपको केवल आउटपुट की एक पंक्ति वापस दिखाई देगी। कई मामलों में, आप i686 देखेंगे, जिसका अर्थ है कि आप 32-बिट प्रोसेसर पर हैं और इसलिए x86_64 बाइनरी नहीं चला सकते। यदि आप इसके बजाय amd64 या ऐसा कुछ देखते हैं, तो आप x86_64 प्रोसेसर पर हैं, और कम से कम सैद्धांतिक रूप से अधिकांश 32-बिट और 64-बिट बाइनरी चलाने में सक्षम होना चाहिए। माइक्रोसॉफ्ट विंडोज के विपरीत, उबंटू लिनक्स में वास्तव में 64-बिट चिपसेट के उपयोगकर्ताओं को अपने ऑपरेटिंग सिस्टम में कई मामलों में 16-बिट विंडोज प्रोग्राम चलाने की अनुमति देने के लिए उचित उपकरण हैं।

ये शर्तें अभी भी सच हैं भले ही आप वास्तव में माइक्रोचिप के उस विशेष मॉडल का उपयोग नहीं कर रहे हों। उदाहरण के लिए, i686 वह है जिसे लिनक्स कई 32-बिट प्रोसेसर को संदर्भित करता है भले ही वे वास्तव में इंटेल 80686 चिप्स न हों। यहां तक कि यदि आप 64-बिट इंटेल तकनीक का उपयोग कर रहे हैं, तो arch अभी भी आपके प्रोसेसर को amd64 चिप कह सकता है। यह त्रुटि का संकेत नहीं देता है, और सुरक्षित रूप से अनदेखा किया जा सकता है। आप अपने द्वारा उपयोग किए जा रहे प्रोसेसर के सटीक प्रकार का पता लगाने के लिए cat /proc/cpuinfo या more /proc/cpuinfo का उपयोग कर सकते हैं। चूंकि इस फ़ाइल में लाइनें लंबी हैं, यदि आप ग्राफिकल टर्मिनल विंडो का उपयोग कर रहे हैं तो आप इसे जारी करने से पहले F11 दबाना चाह सकते हैं। वर्चुअल कंसोल के उपयोगकर्ता, विशेष रूप से उबंटू सर्वर के साथ काम करने वाले, इसके बारे में ज्यादा चिंता नहीं करेंगे।

आप कुछ अन्य प्रकार के आउटपुट देख सकते हैं, जो सॉफ़्टवेयर चलाने के मामले में आपके विकल्पों को और प्रतिबंधित कर सकते हैं। उबंटू ने सबसे लंबे समय तक PowerPC आर्किटेक्चर का समर्थन किया, जो कुछ वर्कस्टेशन के साथ-साथ कई क्लासिक मैकिन्टोश और पुराने OS X मैकिन्टोश मशीनों में पाया जाता है। आप वास्तव में अभी भी इन आर्किटेक्चर के लिए उबंटू रिपॉजिटरी ढूंढ सकते हैं, हालांकि उन्हें आज थोड़ा समर्थन मिलता है। हालांकि, आप शायद आधिकारिक रिपॉजिटरी के बाहर इंटरनेट से डाउनलोड किए गए कई लिनक्स बाइनरी को इस मामले में चलाने में सक्षम नहीं होंगे। इसका मतलब यह नहीं है कि उबंटू इन मशीनों पर काम नहीं करता, हालांकि आप हल्के Lubuntu वितरण को देखना चाह सकते हैं।

विधि 2: file कमांड का उपयोग करना

file कमांड पहचानता है कि विभिन्न फ़ाइलों में क्या है, और यह आमतौर पर बहुत सटीक होता है। file nameOfProgram टाइप करके प्रश्न में फ़ाइल की पहचान करने का प्रयास करें ताकि आप देख सकें कि क्या आपको आउटपुट के रूप में ELF 32-bit या ELF 64-bit मिलता है। यदि यह आपको बताता है कि यह एक ELF 64-bit बाइनरी है और आपको arch कमांड से आउटपुट के रूप में i686 प्राप्त हुआ, तो आपके मशीन पर इसे चलाने का कोई उचित तरीका नहीं है। यदि आप 32-बिट उबंटू चला रहे 64-बिट माइक्रोप्रोसेसर पर हैं, तो आप तकनीकी रूप से ऑपरेटिंग सिस्टम को पुनर्स्थापित कर सकते हैं, हालांकि एक ही प्रोग्राम चलाने के लिए यह थोड़ा चरम कदम है।

हालांकि, बहुत वास्तविक संभावना भी है, हालांकि मामूली, कि आप एक बाइनरी के बजाय आ सकते हैं जो जब आप इसे चलाने का प्रयास करते हैं तो टर्मिनल पर जंक कैरेक्टर उगलता है भले ही आपने इस पर मैलवेयर स्कैन चलाया हो। ये वर्ण आमतौर पर या तो लोज़ेंज-आकार के ब्लॉक का रूप लेते हैं, या वैकल्पिक रूप से आयताकार क्यूब्स जिनमें उनमें संख्यात्मक मान होते हैं। कुछ कंप्यूटर वैज्ञानिक बाद वाले को टोफू कहते हैं, और आपके वर्तमान में इंस्टॉल किए गए टाइपफेस द्वारा प्रदर्शित नहीं किए जा सकने वाले वर्णों के यूनिकोड मानों का प्रतिनिधित्व करते हैं। यदि टर्मिनल उन्हें इस तरह प्रदर्शित कर रहा है, तो आप निश्चिंत हो सकते हैं कि यह न तो फ़ॉन्ट त्रुटि है और न ही मैलवेयर से संबंधित कुछ भी। बल्कि, यह केवल इसलिए है क्योंकि बाइनरी के अंदर संकलित माइक्रोप्रोसेसर ओपकोड आपके सिस्टम के लिए इतना विदेशी है कि यह कोड के कुछ हिस्सों की व्याख्या करना नहीं जानता।

इसे ठीक करने का सबसे अच्छा तरीका आपकी आर्किटेक्चर के लिए उचित पैकेज इंस्टॉल करना है। यदि आप उबंटू के अंदर से पैकेज इंस्टॉल कर रहे हैं, तो apt-get सिस्टम या ग्राफिकल Synaptic मैनेजर ने आपको बिना किसी समस्या के कवर किया है। यदि आप किसी अन्य वितरण से पैकेज डाउनलोड कर रहे हैं, तो आपको अपनी आर्किटेक्चर के लिए सही एक ढूंढना होगा। उदाहरण के लिए, आर्क लिनक्स की gvim पैकेज की लिस्टिंग लें। जबकि डिफ़ॉल्ट पैकेज x86_64 आर्किटेक्चर को पेश करता है, i686 चिपसेट के लिए भी एक है। यह इंटेल इंटरप्ट संरचना के साथ काम करने वाली 32-बिट मशीनों पर काम करेगा, लेकिन याद रखें कि i686 और 32-बिट शर्तें हर समय पारस्परिक रूप से समावेशी नहीं हैं क्योंकि लिनक्स द्वारा समर्थित अन्य चिपसेट वास्तव में अपने स्वयं के 32-बिट कार्यान्वयन को पेश करते हैं।

पूरे GNU/Linux दृश्य की खोज करने वाले उपयोगकर्ता इनसे कहीं अधिक विदेशी प्रौद्योगिकियों के लिए संकलित बाइनरी में आ सकते हैं। लिनक्स वास्तव में एक क्रॉस-प्लेटफॉर्म कोड दृश्य है, इसलिए आप OpenRISC, MIPS, SPARC, M32R, MN103, ARM, ARC, Alpha और कई अन्य मानकों को देखेंगे जिनके लिए बाइनरी संकलित की जाती हैं। अधिक संभावना है, आप इनमें से किसी को भी चलाने में सक्षम नहीं होंगे, हालांकि ARM एक अत्यधिक लोकप्रिय टैबलेट और स्मार्टफोन प्लेटफॉर्म है। यह वह प्लेटफॉर्म भी है जिस पर रास्पबेरी पाई आधारित है, जिसका अर्थ है कि यदि आप वास्तव में एक मोबाइल डिवाइस पर उबंटू या रास्पबेरी पाई के लिए उबंटू MATE वितरण चला रहे हैं तो आपको वास्तव में इंटेल 32-बिट या x86_64 बाइनरी के बजाय इनकी आवश्यकता होगी।

  1. macOS टर्मिनल में  Operation not Permitted  त्रुटियां ठीक करें macOS टर्मिनल में 'Operation not Permitted' त्रुटियां ठीक करें

    विषय सूची:1. टर्मिनल Operation not permitted क्यों कहता है2. टर्मिनल त्रुटि Operation not permitted कैसे ठीक करें3. निष्कर्ष4. Operation not permitted के बारे में अक्सर पूछे जाने वाले प्रश्नटर्मिनल, एक बिल्ट-इन macOS यूटिलिटी, मैक उपयोगकर्ताओं के लिए टेक्स्ट-आधारित ऑपरेटिंग सिस्टम तक पहुंचने का एक अ

  1. MacOS और Mac OS X पर हार्ड डिस्क स्टोरेज कैसे खाली करें MacOS और Mac OS X पर हार्ड डिस्क स्टोरेज कैसे खाली करें

    ये ट्रिक्स आपको अपने MacOS और Mac OS X डिवाइस पर फ्री स्पेस पाने में मदद करेंगे। आपको उन फाइलों को डिलीट करने या एक्सटर्नल हार्ड ड्राइव खरीदने की आवश्यकता नहीं है जिन्हें आप रखना पसंद करेंगे। हार्ड ड्राइव के समय में हम सभी के पास अपने Macs पर बहुत सारी जगह थी। आजकल SSDs और फ्लैश ड्राइव हमें बहुत छो

  1. फिक्स:  Another Installation is in Progress  एरर विंडोज 7, 8 और 10 में फिक्स: "Another Installation is in Progress" एरर विंडोज 7, 8 और 10 में

    विंडोज के अन्य सभी संस्करणों की तरह, विंडोज 10 किसी प्रोग्राम को Windows Installer का उपयोग करके इंस्टॉल नहीं कर सकता जब किसी अन्य प्रोग्राम की इंस्टॉलेशन पहले से चल रही हो। अगर कोई उपयोगकर्ता किसी अन्य इंस्टॉलेशन के पहले से चलते हुए Windows Installer के माध्यम से प्रोग्राम इंस्टॉल करने का प्रयास कर