1
ฉันจะรักษา glibc / gcc / … stack ที่แยกต่างหาก (ใหม่กว่า) ได้อย่างไรในรูปแบบที่ไม่ใช่รูทบน Linux
คลัสเตอร์การคำนวณของเรารัน CentOS เวอร์ชันเก่ามากโดยมีเคอร์เนลเก่า (2.6.18) และแน่นอน libs เก่าและไบนารี เนื่องจากการอัปเดตสิ่งทั้งหมดต้องการงานจำนวนมากบนโหนดทั้งหมดนี่ไม่ใช่ตัวเลือก ฉันกำลังพยายามรวบรวมและใช้โปรแกรมที่ต้องการC++11และดังนั้นรุ่นที่ใหม่กว่าของgcc(และ / หรือclang) เนื่องจากฉันไม่ต้องการยุ่งกับระบบเลยฉันต้องการทำสิ่งนี้ในฐานะผู้ใช้ที่ไม่ใช่รูทในทรีไดเรกทอรีในเครื่อง ปัญหาคือที่gccต้องใหม่glibcกว่าที่มีอยู่ในเครื่อง ดังนั้นผมจำเป็นต้องรักษาแยกรุ่นใหม่glibcในท้องถิ่นของฉันlib/ต้นไม้อาจจะเป็นตามที่อธิบายไว้ที่นี่ ที่ฉันหายไปคือวิธีการทำผม "ฝัง" เส้นทางของ libs ท้องถิ่นของฉันในทุกไบนารีที่จำเป็นเช่นgcc, g++ฯลฯ ? การตั้งค่า LD_LIBRARY_PATH กับแผนผังโลคัลของฉันlib/ทำให้ไบนารีระบบทั้งหมดไม่ทำงานอีกต่อไป ( ELF file OS ABI invalid) เพราะพวกเขาต้องการใช้ใหม่libm.so/ libc.soกับที่พวกเขายังไม่ได้รวบรวม ดังนั้นเพื่อตัดมันขึ้น: อะไรคือวิธีการที่เหมาะสมในการรักษาใหม่กองพัฒนาท้องถิ่น (ที่มีglibc, gccฯลฯ ) ในแบบคู่ขนานกับระบบเก่าได้โดยไม่ต้อง messing รอบเป็นราก? ตามคำถามด้านข้าง: การตั้งค่า LD_LIBRARY_PATH จะโพสต์เป็นโซลูชันทั่ว SE เมื่อแยกออกglibcมา สำหรับฉันมันทำให้เกิดข้อผิดพลาดด้านบนเมื่อฉันพยายามรันไบนารีระบบใด ๆ (เช่นls) มาทำไม …