सेंटोस 64 बिट खराब ईएलएफ दुभाषिया


183

मैंने अभी अभी CentOS 6 64bit संस्करण स्थापित किया है, मैं 64-बिट मशीन पर 32-बिट एप्लिकेशन को स्थापित करने का प्रयास कर रहा हूं और यह त्रुटि मिली:

/lib/ld-linux.so.2: खराब ELF दुभाषिया: ऐसी कोई फ़ाइल या निर्देशिका नहीं

मैं linux के लिए नया हूँ। मैं इसका कैसे समाधान करूं?

जवाबों:


354

आप 64-बिट सिस्टम पर हैं, और 32-बिट लाइब्रेरी समर्थन स्थापित नहीं है।

32-बिट निष्पादन योग्य के लिए (बेसलाइन) समर्थन स्थापित करने के लिए

(यदि आप अपने सेटअप रीड नोट में sudo का उपयोग नहीं करते हैं)

फेडोरा / रेड हैट परिवार में अधिकांश डेस्कटॉप लिनक्स सिस्टम:

 pkcon install glibc.i686

संभवतः कुछ डेस्कटॉप डेबियन / उबंटू सिस्टम ?:

pkcon install ia32-libs

फेडोरा या नई रेड हैट, CentOS:

 sudo dnf install glibc.i686

पुराने RHEL, CentOS:

   sudo yum install glibc.i686

यहां तक ​​कि पुराने RHEL, CentOS:

  sudo yum install glibc.i386

डेबियन या उबंटू:

   sudo apt-get install ia32-libs

आपको (प्रथम, मुख्य) पुस्तकालय चाहिए जो आपको चाहिए।

एक बार जब आप ऐसा कर लेते हैं, तो आपको शायद समर्थन लिबास की आवश्यकता होगी

किसी को भी स्थापित करने की आवश्यकता होगी glibc.i686या glibc.i386शायद अन्य पुस्तकालय निर्भरता में भी चलेगा। एक मनमाना पुस्तकालय प्रदान करने वाले पैकेज की पहचान करने के लिए, आप उपयोग कर सकते हैं

 ldd /usr/bin/YOURAPPHERE

यदि आप सुनिश्चित नहीं हैं कि यह /usr/binआप पर वापस गिर सकता है

 ldd $(which YOURAPPNAME)

आउटपुट इस तरह दिखेगा:

    linux-gate.so.1 =>  (0xf7760000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xf773e000)
    libSM.so.6 => not found

लापता पुस्तकालयों (उदाहरण libSM.so.6के लिए उपरोक्त आउटपुट में) की जांच करें, और प्रत्येक के लिए आपको उस पैकेज को खोजने की आवश्यकता है जो इसे प्रदान करता है।

प्रति वितरण परिवार के लिए पैकेज खोजने की आज्ञा देता है

Fedora / Red Hat Enterprise / CentOS:

 dnf provides /usr/lib/libSM.so.6

या, पुराने आरएचईएल / सेंटो पर:

 yum provides /usr/lib/libSM.so.6

या, डेबियन / उबंटू पर:

पहले, के लिए डेटाबेस को स्थापित और डाउनलोड करें apt-file

 sudo apt-get install apt-file && apt-file update

फिर के साथ खोजें

 apt-file find libSM.so.6

/usr/lib(सामान्य) मामले में उपसर्ग पथ पर ध्यान दें ; शायद ही, कुछ पुस्तकालय अभी भी /libऐतिहासिक कारणों से रहते हैं ... विशिष्ट 64-बिट सिस्टम पर, 32-बिट लाइब्रेरी में रहते हैं /usr/libऔर 64-बिट लाइब्रेरी में रहते हैं /usr/lib64

(डेबियन / उबंटू मल्टी-आर्किटेक्चर लाइब्रेरी को अलग तरीके से व्यवस्थित करते हैं।)

लापता पुस्तकालयों के लिए संकुल स्थापित करना

ऊपर आपको एक पैकेज नाम देना चाहिए, जैसे:

libSM-1.2.0-2.fc15.i686 : X.Org X11 SM runtime library
Repo        : fedora
Matched from:
Filename    : /usr/lib/libSM.so.6

इस उदाहरण में पैकेज का नाम है libSMऔर पैकेज के 32 बिट संस्करण का नाम हैlibSM.i686

फिर आप pkconGUI या sudo dnf/yum/apt-getउपयुक्त के रूप में अपेक्षित लाइब्रेरी को हथियाने के लिए पैकेज स्थापित कर सकते हैं ... जैसे pkcon install libSM.i686। यदि आवश्यक हो तो आप संस्करण को पूरी तरह से निर्दिष्ट कर सकते हैं। जैसे sudo dnf install ibSM-1.2.0-2.fc15.i686

कुछ पुस्तकालयों में उनके नाम से पहले एक "युगांतरकारी" पदनाम होगा; इसे छोड़ा जा सकता है (जिज्ञासु नीचे के नोट्स पढ़ सकता है)।

टिप्पणियाँ

चेतावनी

गुप्त रूप से, आप जिस समस्या का सामना कर रहे हैं, उसका तात्पर्य है कि आपका RPM (सम्मान। DPkg / DSelect) डेटाबेस दूषित है, या आप जिस एप्लिकेशन को चलाने का प्रयास कर रहे हैं, वह पैकेज मैनेजर के माध्यम से इंस्टॉल नहीं किया गया था। यदि आप लिनक्स में नए हैं, तो आप संभवत: जब भी संभव हो, अपने पैकेज मैनेजर के अलावा अन्य स्रोतों से सॉफ्टवेयर का उपयोग करने से बचना चाहते हैं ...

यदि आप अपने सेट-अप में "sudo" का उपयोग नहीं करते हैं

प्रकार

su -c

हर बार जब आप देखते हैं sudo, जैसे,

su -c dnf install glibc.i686

पुस्तकालय के नामों में युगप्रवर्तक के बारे में

नाम से पहले "युग" पदनाम इस तरह से एक कलाकृति है कि अंतर्निहित RPM लाइब्रेरी संस्करण संख्याओं को संभालती है; जैसे

2:libpng-1.2.46-1.fc16.i686 : A library of functions for manipulating PNG image format files
Repo        : fedora
Matched from:
Filename    : /usr/lib/libpng.so.3

यहाँ, 2:छोड़ा जा सकता है; बस pkcon install libpng.i686या sudo dnf install libpng-1.2.46-1.fc16.i686। (यह अस्पष्ट रूप से कुछ का अर्थ है: कुछ बिंदु पर, libpngपैकेज का संस्करण संख्या पीछे की ओर लुढ़का हुआ था, और यह सुनिश्चित करने के लिए "युगांतर" बढ़ाना पड़ा कि अपडेट के दौरान नए संस्करण को "नया" माना जाएगा। या ऐसा ही कुछ हुआ। दो बार। ।)


विभिन्न पैकेज प्रबंधक विकल्पों को अधिक पूरी तरह से स्पष्ट करने और कवर करने के लिए अपडेट किया गया (मार्च, 2016)


iv स्थापित किया गया है कि अब libpam.so.0 हो रहा है: साझा वस्तु फ़ाइल नहीं खोल सकता है
c11ada

7
यदि आपका ऐप अपने आवश्यक पुस्तकालयों को सूचीबद्ध नहीं करता है, तो आपको उन्हें खुद को शिकार करना होगा और उन्हें स्थापित करना होगा; यदि आप भाग्यशाली हैं, तो वे यम के माध्यम से उपलब्ध होंगे। पुस्तकालयों को सूचीबद्ध करने के लिए आप "ldd (बाइनरी)" का उपयोग कर सकते हैं। सूचीबद्ध प्रत्येक पुस्तकालय के लिए, जो "/lib/ld-linux.so.2" (0x4f8d9000) या "libc.so.6 => /lib/libc.so.6 (0x4f8fa000) जैसे रीडआउट नहीं देता है ", कोशिश करें: sudo yum प्रदान करता है * / lib / libWHATEVER.so - पैकेज नाम (ओं) को खोजने के लिए, और फिर sudo yum इसे स्थापित करने के लिए PACKAGE.i686 स्थापित करें। (
I386

यह उत्तर एक Godsend है जब आपके पास 32-बिट सॉफ़्टवेयर है जिसे आपको अपने 64-बिट सिस्टम पर माइग्रेट करना होगा।
मेंढकघर में

यह फेडोरा 20 पर ओरेकल के jre 1.7 को स्थापित करने के लिए बहुत मददगार था। glibc.i686 के अलावा, मुझे libgcc.i686 को स्थापित करना था।
जॉन श्मिट

17

बस एक ताजा स्थापित CentOS 6.4 64-बिट मशीन पर एक ही समस्या का सामना करना पड़ा। एक एकल yum कमांड इस तरह की 99% समस्याओं को ठीक करेगा:

yum groupinstall "संगतता पुस्तकालय"

या तो इसे 'sudo' के साथ उपसर्ग करें या रूट के रूप में चलाएं, जो भी आपके लिए सबसे अच्छा काम करता है।


14

सामान्य तौर पर, जब आपको इस तरह की त्रुटि मिलती है, तो बस करें

yum provides ld-linux.so.2

तो आप कुछ इस तरह देखेंगे:

glibc-2.20-5.fc21.i686 : The GNU libc libraries
Repo        : fedora
Matched from:
Provides    : ld-linux.so.2

और फिर आप बस निम्नलिखित को चलाते हैं जैसे BRPocock ने लिखा है (यदि आप सोच रहे थे कि तर्क क्या था ...):

yum install glibc.i686

3

प्रयत्न

$ yum provides ld-linux.so.2
$ yum update
$ yum install glibc.i686 libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6

आशा है कि यह साफ हो जाएगा।


0

बस BRPocock में एक टिप्पणी जोड़ना चाहता था, लेकिन मेरे पास पर्याप्त विशेषाधिकार नहीं हैं।

इसलिए मेरा योगदान आईबीएम के इंटीग्रेशन बस बंडल से आईबीएम इंटीग्रेशन टूलकिट स्थापित करने की कोशिश करने वाले सभी लोगों के लिए था।

जब आप फ़ोल्डर / Integration_Toolkit / IM_Linux से "इंस्टालेशन मैनेजर" कमांड चलाने का प्रयास करते हैं (चलाने के लिए फ़ाइल "इंस्टॉल" है) आपको इस पोस्ट में दिखाई गई त्रुटि मिलती है।

इस समस्या को ठीक करने के लिए और निर्देश आपको इस IBM के वेब पेज में मिलेंगे: https://www-304.ibm.com/support/docview.wss?uid=swg21459143

आशा है कि यह किसी को भी स्थापित करने की कोशिश करने में मदद करता है।



0

मैं डेबियन के लिए जोड़ूंगा आपको सिस्टम में कम से कम एक कंपाइलर की जरूरत है ( डेबियन स्ट्रेच और जेसी 32-बिट लाइब्रेरी के अनुसार )।

मैंने apt-get install -y gcc-multilibडेबियन के आधार पर अपने डॉक कंटेनर में 32-बिट निष्पादन योग्य फ़ाइल चलाने के लिए स्थापित किया: जेसी।


कृपया अपने उत्तर में लिंक के आवश्यक भागों को शामिल करें
Ibo

0

आप .i686इसके बजाय OpenJDK 32-बिट ( ) भी स्थापित कर सकते हैं । मेरे परीक्षण के अनुसार, इसे स्थापित किया जाएगा और समस्याओं के बिना काम करेगा।

sudo yum install java-1.8.0-openjdk.i686

ध्यान दें:

जावा-1.8.0-openjdk पैकेज में शामिल सिर्फ जावा रनटाइम एनवायरनमेंट । यदि आप जावा प्रोग्राम विकसित करना चाहते हैं तो जावा-1.8.0-ओपेनजेक-डेवेल पैकेज स्थापित करें।

अधिक जानकारी के लिए यहां देखें ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.