CentOS 64 bit ELF interpreter ที่ไม่ดี


183

ฉันเพิ่งติดตั้ง CentOS 6 64 บิตฉันพยายามติดตั้งแอปพลิเคชั่น 32 บิตบนเครื่อง 64 บิตและได้รับข้อผิดพลาดนี้:

/lib/ld-linux.so.2: ล่าม ELF ไม่ดี: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว

ฉันใหม่กับ linux ฉันจะแก้ไขปัญหานี้ได้อย่างไร

คำตอบ:


355

คุณใช้ระบบ 64 บิตและไม่ได้ติดตั้งการสนับสนุนไลบรารี 32 บิต

ในการติดตั้ง (พื้นฐาน) รองรับไฟล์เรียกทำงานแบบ 32 บิต

(ถ้าคุณไม่ใช้ sudo ในการตั้งค่าอ่านหมายเหตุด้านล่าง)

ระบบ Linux บนเดสก์ท็อปส่วนใหญ่ในตระกูล Fedora / Red Hat:

 pkcon install glibc.i686

อาจเป็นไปได้ที่ระบบเดสก์ท็อปเดเบียน / อูบุนตู:

pkcon install ia32-libs

Fedora หรือ Red Hat ที่ใหม่กว่า CentOS:

 sudo dnf install glibc.i686

เก่ากว่า RHEL, CentOS:

   sudo yum install glibc.i686

แม้แต่ RHEL ที่เก่ากว่า CentOS:

  sudo yum install glibc.i386

Debian หรือ Ubuntu:

   sudo apt-get install ia32-libs

ควรคว้าไลบรารี่ที่คุณต้องการ

เมื่อคุณได้รับสิ่งนั้นแล้วคุณอาจต้องการการสนับสนุน 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

หรือบน RHEL ที่เก่ากว่า / CentOS:

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

หรือบน Debian / Ubuntu:

ก่อนติดตั้งและดาวน์โหลดฐานข้อมูลสำหรับ 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บิตอาศัยอยู่ใน

(Debian / Ubuntu จัดระเบียบไลบรารีหลายสถาปัตยกรรมแตกต่างกัน)

การติดตั้งแพ็กเกจสำหรับไลบรารีที่หายไป

ข้างต้นควรให้ชื่อแพ็คเกจเช่น:

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บิตของแพคเกจคือ

จากนั้นคุณสามารถติดตั้งแพคเกจเพื่อคว้าไลบรารี่ที่จำเป็นโดยใช้pkconใน GUI หรือsudo dnf/yum/apt-getตามความเหมาะสม…. pkcon install libSM.i686เช่น หากจำเป็นคุณสามารถระบุเวอร์ชันได้อย่างสมบูรณ์ sudo dnf install ibSM-1.2.0-2.fc15.i686เช่น

ห้องสมุดบางแห่งจะมีผู้ออกแบบ "ยุค" ก่อนที่ชื่อของพวกเขา; สามารถละเว้นได้ (ผู้ที่อยากรู้อยากเห็นสามารถอ่านบันทึกด้านล่าง)

หมายเหตุ

คำเตือน

อนึ่งปัญหาที่คุณเผชิญอยู่แสดงว่าฐานข้อมูล RPM (การตอบสนอง DPkg / DSelect) ของคุณเสียหายหรือแอปพลิเคชันที่คุณพยายามเรียกใช้ไม่ได้ติดตั้งผ่านตัวจัดการแพคเกจ หากคุณยังใหม่กับ Linux คุณอาจต้องการหลีกเลี่ยงการใช้ซอฟต์แวร์จากแหล่งอื่นนอกเหนือจากตัวจัดการแพ็คเกจของคุณทุกครั้งที่ทำได้

หากคุณไม่ได้ใช้ "sudo" ในการตั้งค่าของคุณ

ชนิด

su -c

ทุกครั้งที่คุณเห็นsudoเช่น

su -c dnf install glibc.i686

เกี่ยวกับ epoch designator ในชื่อไลบรารี

ตัวกำหนด“ ยุค” ก่อนชื่อเป็นสิ่งประดิษฐ์ของวิธีที่ไลบรารี 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แพ็คเกจย้อนกลับและ "ยุค" จะต้องเพิ่มขึ้นเพื่อให้แน่ใจว่าเวอร์ชั่นใหม่จะได้รับการพิจารณาว่าเป็น "รุ่นใหม่" ในระหว่างการอัปเดต .)


อัปเดตเพื่อให้ความกระจ่างและครอบคลุมตัวเลือกตัวจัดการแพคเกจต่าง ๆ อย่างเต็มที่ (March, 2016)


iv ติดตั้งที่ได้รับตอนนี้ im 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 i686 หรือไม่ x86_64 มันจะติดตั้งโดยค่าเริ่มต้นในระบบของคุณ)
BRPocock

คำตอบนี้เป็นสวรรค์เมื่อคุณมีซอฟต์แวร์ 32 บิตที่คุณต้องโยกย้ายไปยังระบบ 64 บิตของคุณ
froggythefrog

สิ่งนี้มีประโยชน์มากสำหรับการติดตั้ง jre 1.7 ของ Oracle บน Fedora 20 นอกจาก glibc.i686 ฉันต้องติดตั้ง libgcc.i686
John Schmitt

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 wrote (ในกรณีที่คุณสงสัยว่าตรรกะคืออะไร ... ):

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 แต่ฉันไม่มีสิทธิ์เพียงพอ

ดังนั้นการมีส่วนร่วมของฉันคือสำหรับทุกคนที่พยายามติดตั้ง IBM Integration Toolkit จากชุด Integration Bus ของ IBM

เมื่อคุณพยายามเรียกใช้คำสั่ง "เครื่องมือจัดการการติดตั้ง" จากโฟลเดอร์ / Integration_Toolkit / IM_Linux (ไฟล์ที่จะเรียกใช้คือ "ติดตั้ง") คุณจะได้รับข้อผิดพลาดที่แสดงในโพสต์นี้

คำแนะนำเพิ่มเติมเพื่อแก้ไขปัญหานี้คุณจะพบในหน้าเว็บของ IBM นี้: https://www-304.ibm.com/support/docview.wss?uid=swg21459143

หวังว่านี่จะช่วยให้ใครก็ตามที่พยายามติดตั้งนั้น



0

ฉันจะเพิ่มสำหรับ Debian คุณต้องการคอมไพเลอร์อย่างน้อยหนึ่งตัวในระบบ (ตามDebian Stretch และ Jessie 32-bit libraries )

ฉันติดตั้งapt-get install -y gcc-multilibเพื่อให้สามารถเรียกใช้ไฟล์ปฏิบัติการแบบ 32 บิตในคอนเทนเนอร์ของนักเทียบท่าตามเดเบียน: เจสซี


โปรดระบุส่วนสำคัญของลิงก์ในคำตอบของคุณด้วย
Ibo

0

คุณสามารถติดตั้ง OpenJDK 32-bit ( .i686) แทน ตามการทดสอบของฉันมันจะถูกติดตั้งและทำงานได้อย่างไม่มีปัญหา

sudo yum install java-1.8.0-openjdk.i686

บันทึก:

Java-1.8.0-OpenJDKแพคเกจประกอบด้วยเพียง Java Runtime Environment หากคุณต้องการพัฒนาโปรแกรม Java ให้ติดตั้งแพคเกจjava-1.8.0-openjdk-devel

ดูที่นี่สำหรับรายละเอียดเพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.