cara menjalankan perangkat lunak baru tanpa memperbarui GLIBC?


20

Saya menginstal Mathematica 9 pada sistem Red Hat Enterprise Linux AS rilis 4 lama. Setelah instalasi, saya mencoba memulai Mathematica, tetapi pesan berikut keluar:

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: versi `GLIBC_2.4 'tidak ditemukan (diperlukan oleh / home / wcbao / M / Wolfram / Mathematica / 9.0 / SystemFiles / Libraries / Linux-x86-64 / libML64i3.so)

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: versi `GLIBC_2.4 'tidak ditemukan (diperlukan oleh / home / wcbao / M / Wolfram / Mathematica / 9.0 / SystemFiles / Libraries / Linux-x86-64 / libQtCore.so.4)

Saya tidak ingin memperbarui sistem glibc, karena berisiko dan administrator tidak mengizinkan saya untuk melakukan itu.

Seseorang menyarankan bahwa mungkin saja menginstal versi baru glibc di tempat lain, dan menjalankan program sebagai

LD_LIBRARY_PATH=/lib/new your_application

dan ini tidak akan mempengaruhi sistem.

Jadi saya bertanya di sini apakah metode ini benar-benar berfungsi. Dan jika berhasil, saya ingin tahu bagaimana melakukannya langkah demi langkah (saya kurang pengalaman di Linux sekarang, dan ingin menggunakan Mathematica di Linux sesegera mungkin).

Edit :

Saya perhatikan bahwa ada perangkat lunak yang disebut "Ermine". Tampaknya ia dapat menggunakan perangkat lunak sebagai paket mandiri yang tidak bergantung pada lingkungan eksternal. Sayangnya, ini adalah shareware. Jadi saya pikir karena "Ermine" dapat melakukannya, pasti ada cara untuk menggunakan perangkat lunak baru pada sistem lama.


2
Itu akan berhasil. Kemungkinan akan cukup banyak pekerjaan untuk diatur (Anda harus menginstal semua perpustakaan yang bergantung pada Mathematica). Rekomendasi saya adalah menginstal paket-paket rpm dari rilis yang lebih baru di subdirektori rumah Anda. Saya akan membiarkan seseorang yang lebih akrab dengan RH menulis jawaban yang menjelaskan bagaimana melakukan itu.
Gilles 'SANGAT berhenti menjadi jahat'

@Gilles Hai, Gilles, terima kasih banyak !!! Saya melihat ke depan untuk itu.
user15964

Ini adalah berisiko untuk menginstal glibc tempat lain.
BenjiWiebe

@BenjiWiebe - risiko apa yang sebenarnya Anda maksud?
FooF

1
Diposting silang dari superuser: superuser.com/questions/543249/... Mengulang komentar saya dari sana: "RHEL4 berusia delapan tahun dan telah mencapai akhir dari siklus hidup dukungan normal. Tidak ada mesin lain yang dapat Anda instal di ? Misalnya. Mesin desktop Anda. "
Burhan Ali

Jawaban:


10

Anda pasti dapat mengkompilasi versi GLIBC baru dan menyimpannya di direktori yang terpisah. Hal pertama yang harus Anda lakukan adalah mengunduh versi glibc yang Anda inginkan dari http://ftp.gnu.org/gnu/glibc/ .

Jalankan configureskrip dan atur --prefix=ke sesuatu seperti /home/you/mylibs.

Setelah Anda berhasil menginstalnya ke direktori itu, Anda harus mengatur Anda LD_LIBRARY_PATHke lokasi glibc baru.

Anda harus mencari tahu setiap dependensi yang perlu Anda kompilasi. Anda dapat membuat skrip shell yang menetapkan variabel LD_ * dan menjalankan program Anda (yang harus tetap Anda lakukan), dan menjalankannya berulang kali - unduh / kompilasi ulang lib yang hilang di sepanjang jalan.

Anda juga dapat menggunakan ldduntuk menentukan perpustakaan bersama apa yang dibutuhkan oleh program, kemudian gunakan lddpada masing-masing perpustakaan untuk mencari tahu apakah mereka memerlukan glibc.

Ini bisa menjadi proses yang sangat memakan waktu dan bukan karena tidak sabar atau lemah hati - melintasi / mengkompilasi ulang jalan Anda melalui kemungkinan ketergantungan yang diperlukan untuk membuat aplikasi Anda berfungsi kadang-kadang membuat Anda ingin mencabut rambut Anda.

Pembaruan 1:

Saya mengunduh glibc-2.4 dan mencoba untuk mengompilasinya pada CentOS 6. Agar dapat configureberfungsi dengan benar, saya harus mengubah acdan ldmemeriksa versi dengan mengubah:

2.1[3-9]*)

untuk:

2.*)

pada baris 4045dan 4106dalam configurefile itu sendiri. Saya mengatur variabel lingkungan * FLAGS saya seperti:

LDFLAGS="-Wl,--sort-common -Wl,-zcombreloc -Wl,-znow" 
CFLAGS="-pipe -fomit-frame-pointer -g1 -O3 -frename-registers -fweb -ftracer -fmodulo-sched -fvariable-expansion-in-unroller -fgcse-sm"
CXXFLAGS="${CFLAGS}" 
CFLAGS="${CFLAGS} -freorder-blocks-and-partition" 
export LDFLAGS CFLAGS CXXFLAGS

dan kemudian dieksekusi ./configure --prefix=/home/tim/masochist. Ini dikonfigurasi dengan benar ... dan mulai membangun dengan benar juga ... tapi kemudian saya mulai mengalami kesalahan - kebanyakan kompiler mengeluh tentang hal-hal yang didefinisikan ulang.

Pada saat itu saya menyerah ... Karena itu terlalu memakan waktu . ;)


Memberi +1 untuk informasi, meskipun baris terakhir penting. OP perlu memutuskan apakah upaya yang dilakukan layak dilakukan.
Burhan Ali

Terima kasih semua! OKE, saya mengundurkan diri. Saya pikir saya akan lebih baik tetap dengan Mathematica 8 sebagai kompromi. Ini bekerja pada Red Hat 4.
user15964

@livingstaccato Hai, Tapi Bagaimana mengomentari kata-kata vonbrand: "Menginstal versi baru di beberapa tempat yang aneh lebih berisiko ... Perpustakaan di tempat yang aneh dapat diambil oleh hal-hal acak, ....". Apakah ini benar-benar berisiko? Pernahkah Anda mencoba cara yang dijelaskan dalam jawaban Anda?
user15964

@ user15964 Tidak berisiko kecuali Anda tidak memperhatikan apa yang Anda lakukan root atau Anda melakukan sesuatu yang aneh seperti mengubah LD_PRELOAD Anda dalam skrip init sesi dan mengunci diri Anda.
livingstaccato

@ user15964 Juga - ya - Saya telah membangun kembali cara glibc, cara, kembali pada hari itu.
livingstaccato

1

Memperbarui glibc ke versi yang didukung oleh distribusi Anda berisiko rendah. Ini ditulis untuk menangani kompatibilitas dengan versi yang tanggal jauh , dan (bug baring) versi baru seharusnya hanya setetes penggantian. Menginstal versi baru di tempat yang aneh lebih berisiko, IMHO.


4
tetapi masalahnya adalah saya bukan administrator, saya tidak memiliki wewenang. Bahkan jika saya mendapat izin, saya takut untuk melakukan perubahan pada sistem, karena itu bukan komputer saya, itu sebenarnya sebuah cluster, banyak orang yang mengerjakannya. Omong-omong, mengapa versi baru di tempat lain berisiko? Saya hanya perlu menautkan perangkat lunak yang saya butuhkan ke lib baru, bukan keseluruhan sistem.
user15964

1
Dan Anda merasa ragu untuk menginstal beberapa paket acak? Kebijakan administrasi sistem sudah terlambat untuk revisi serius . Perpustakaan di tempat yang aneh dapat diambil oleh hal-hal acak, dan menyeterika jalannya aplikasi Anda saja (dan proses yang mungkin dimulai dengan itu, yang tidak melibatkan program standar) bisa menjadi tantangan ...
vonbrand

1
@vonbrand - Omong kosong, kecuali jika kita berbicara tentang beberapa mesin keamanan tinggi (dan tidak misalnya beberapa pengembang bersama atau mesin uji / cluster) dalam hal ini Anda perlu memiliki paranoia yang sehat tentang perangkat lunak asing yang tidak diaudit. Dalam hal kerusakan acak, sangat berbeda untuk memperbarui libc (mempengaruhi semua sistem, kemungkinan menyebabkan kerusakan sistem) daripada hanya menginstal program aplikasi yang terisolasi dari sumber tepercaya (saya tidak setuju dengan anggapan bahwa Mathematica adalah paket acak). Keletihan sumber daya tentu saja merupakan kekhawatiran sah yang harus ditangani oleh sysadmin yang kompeten.
FooF

@FooF, saya telah melihat terlalu banyak kasus "Administrasi tahu yang terbaik, biarkan pengguna melakukan apa yang mereka inginkan tanpa dukungan" untuk memiliki ilusi di bidang ini.
vonbrand

1
@vonbrand - Saya cenderung setuju dengan komentar terakhir Anda. Tapi saya sangat tidak setuju bahwa memperbarui libc atau menginstal perangkat lunak terkenal (bukan "paket acak") entah bagaimana sebanding (dengan asumsi tidak ada niat jahat). Kami tahu sedikit tentang sifat lingkungan dan penggunanya untuk menyuarakan pendapat definitif di sini. Dalam mesin pengembangan perangkat lunak (dengan banyak pengguna yang kompeten), itu bisa masuk akal untuk memungkinkan pengguna menjalankan perangkat lunak mereka sendiri. Kadang-kadang itu adalah kebutuhan biasa (OpenWRT dan OpenEmbedded bahwa platform tertanam target akan membangun dari sumber beberapa alat yang diperlukan untuk membangun gambar f / w).
FooF

-3

Dalam contoh khusus ini saya akan mengatakan jangan repot-repot, kecuali jika Anda memiliki bantuan (dan izin) dari administrator sistem bersama ini.

Mathematica berjalan di Windows, Mac dan Linux jadi pasang saja di mesin desktop Anda di mana Anda tidak perlu khawatir tentang mempengaruhi orang lain. Ini juga lebih mungkin bahwa OS akan lebih baru daripada RHEL4 dan oleh karena itu Anda tidak perlu melakukan liuk untuk menginstalnya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.