Cluster komputasi kami menjalankan versi CentOS yang sangat lama, dengan Kernel lama (2.6.18) dan, tentu saja, lib dan binari yang lama. Karena memperbarui semuanya memerlukan banyak pekerjaan pada semua node, ini bukan pilihan.
Saya mencoba mengkompilasi dan menggunakan program yang membutuhkan C++11dan karenanya versi gcc(dan / atau clang) yang lebih baru. Karena saya tidak ingin dipusingkan dengan sistem sama sekali, saya ingin melakukan ini sebagai pengguna non-root di beberapa pohon direktori lokal.
Masalahnya adalah, yang gccmembutuhkan yang lebih baru glibcdari yang ada pada mesin. Oleh karena itu, saya perlu mempertahankan versi terpisah yang lebih baru glibcdi lib/pohon lokal saya , mungkin seperti yang dijelaskan di sini .
Di mana saya tersesat, bagaimana cara "menyandikan" jalur lib lokal saya ke semua binari yang diperlukan, yaitu gcc,, g++dll.? Mengatur LD_LIBRARY_PATH ke lib/pohon lokal saya menyebabkan semua biner sistem tidak berfungsi lagi ( ELF file OS ABI invalid) karena mereka ingin menggunakan yang baru libm.so/ libc.soyang tidak dikompilasi.
Jadi, untuk menyelesaikannya: Apa cara yang tepat untuk mempertahankan tumpukan pengembangan lokal yang lebih baru (berisi glibc, gccdll.) Secara paralel dengan sistem lama tanpa dipusingkan sebagai root?
Sebagai pertanyaan sampingan: Mengatur LD_LIBRARY_PATH diposkan sebagai solusi di seluruh SE saat akan terpisah glibc. Bagi saya, itu menyebabkan kesalahan di atas ketika saya mencoba menjalankan sistem biner (seperti ls). Bagaimana bisa? Apakah saya melakukan sesuatu yang salah atau apakah ini perilaku yang dimaksudkan?