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.