come eseguire nuovo software senza aggiornare GLIBC?


20

Ho installato Mathematica 9 su un vecchio sistema Red Hat Enterprise Linux AS versione 4. Dopo l'installazione, ho provato ad avviare Mathematica, ma è uscito il seguente messaggio:

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: versione `GLIBC_2.4 'non trovata (richiesto da / home / wcbao / M / Wolfram / Mathematica / 9,0 / SystemFiles / biblioteche / Linux x86-64 / libML64i3.so)

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: versione `GLIBC_2.4 'non trovata (richiesto da / home / wcbao / M / Wolfram / Mathematica / 9,0 / SystemFiles / biblioteche / Linux x86-64 / libQtCore.so.4)

Non voglio aggiornare il sistema glibc, perché è rischioso e l'amministratore non mi consente di farlo.

Qualcuno ha suggerito che è possibile installare la nuova versione di glibc altrove ed eseguire il programma come

LD_LIBRARY_PATH=/lib/new your_application

e questo non influirà sul sistema.

Quindi sto chiedendo qui se questo metodo funziona davvero. E se funziona, voglio sapere come farlo passo dopo passo (in questo momento mi manca l'esperienza in Linux e voglio usare Mathematica su Linux il prima possibile).

Modifica :

Ho notato che esiste un software chiamato "Ermine". Sembra che possa distribuire un software come pacchetto autonomo che non si basa sull'ambiente esterno. Sfortunatamente, è uno shareware. Quindi penso che dal momento che "Ermine" può farlo, ci deve essere un modo per usare il nuovo software sul vecchio sistema.


2
Funzionerebbe. È probabile che ci vorrà un sacco di lavoro da configurare (dovrai installare tutte le librerie da cui dipende Mathematica). La mia raccomandazione sarebbe quella di installare i pacchetti rpm da una versione più recente in una sottodirectory della tua casa. Lascerò che qualcuno che ha più familiarità con RH scriva una risposta spiegando come farlo.
Gilles 'SO- smetti di essere malvagio' il

@Gilles Ciao, Gilles, grazie mille !!! Non vedo l'ora.
user15964

Si è rischioso installare glibc altrove.
BenjiWiebe,

@BenjiWiebe - a che tipo di rischi ti riferisci esattamente?
FooF

1
Trasmissione incrociata da superutente: superuser.com/questions/543249/… Ripetendo il mio commento da lì: "RHEL4 ha otto anni e ha raggiunto la fine del suo normale ciclo di vita dell'assistenza. Non c'è un'altra macchina su cui è possibile installarlo ? ad es. il tuo computer desktop. "
Burhan Ali,

Risposte:


10

Puoi sicuramente compilare una nuova versione di GLIBC e salvarla in una directory separata. La prima cosa che dovrai fare è scaricare la versione di glibc che desideri da http://ftp.gnu.org/gnu/glibc/ .

Esegui lo configurescript e imposta --prefix=su qualcosa di simile /home/you/mylibs.

Dopo che sei riuscito a installarlo in quella directory, dovrai impostare LD_LIBRARY_PATHla posizione del nuovo glibc.

Dovrai capire quali dipendenze potresti dover compilare. Puoi creare uno script di shell che imposta le variabili LD_ * ed esegue il tuo programma (cosa che dovresti comunque fare), ed eseguirlo ripetutamente - scarica / ricompila le librerie mancanti lungo la strada.

È inoltre possibile utilizzare lddper determinare quali librerie condivise sono necessarie al programma, quindi utilizzare lddsu ciascuna delle librerie per scoprire se richiedono glibc.

Questo può richiedere molto tempo e non è per gli impazienti o i deboli di cuore : attraversare / ricompilare la strada attraverso le possibili dipendenze richieste per far funzionare l'applicazione può occasionalmente farti venire voglia di strapparti i capelli.

Aggiornamento 1:

Ho scaricato glibc-2.4 e ho provato a compilarlo su CentOS 6. Per configurefunzionare correttamente ho dovuto cambiare i controlli di versione ace ldcambiando:

2.1[3-9]*)

a:

2.*)

alle righe 4045e 4106nel configurefile stesso. Ho impostato le mie variabili di ambiente * FLAGS in questo modo:

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

e poi eseguito ./configure --prefix=/home/tim/masochist. Si è configurato correttamente ... e ha iniziato anche a costruire correttamente ... ma poi ho iniziato a incorrere in errori - principalmente il compilatore che si lamentava delle cose che venivano ridefinite.

A quel punto ho rinunciato ... Perché stava diventando troppo tempo . ;)


+1 per l'informazione, sebbene l'ultima riga sia importante. Il PO deve decidere se vale la pena.
Burhan Ali,

Grazie a tutti! OK, mi dimetto. Penso che sarebbe meglio restare con Mathematica 8 come un compromesso. Funziona su Red Hat 4.
user15964

@livingstaccato Ciao, ma come commentano le parole di vonbrand: "Installare una nuova versione in un posto strano è più rischioso ... La biblioteca in quel posto strano potrebbe essere raccolta da materiale casuale, ....". È davvero più rischioso? Hai mai provato il modo descritto nella tua risposta?
user15964

@ user15964 Non è rischioso se non stai prestando attenzione a quello che stai facendo root o fai qualcosa di strano come cambiare LD_PRELOAD nello script di init della sessione e bloccarti.
Livingstaccato

@ user15964 Inoltre - sì - ho ricostruito glibc modo, modo, indietro nel tempo.
Livingstaccato

1

L'aggiornamento di glibc a una versione supportata dalla tua distribuzione è a basso rischio. È scritto per gestire la compatibilità con le versioni che risalgono a molto tempo fa e (scoprendo i bug) una nuova versione dovrebbe essere solo una goccia in sostituzione. Installare una nuova versione in un posto strano è più rischioso, IMHO.


4
ma il problema è che non sono l'amministratore, non ho l'autorità. Anche se ho ottenuto l'autorizzazione, ho paura di apportare modifiche al sistema, perché non è il mio computer, è in realtà un cluster, molte persone ci lavorano. A proposito, perché una nuova versione in un altro posto è rischiosa? Ho solo bisogno di collegare il software di cui avevo bisogno alla nuova libreria, non all'intero sistema.
user15964

1
E ti senti libero di installare un pacchetto casuale? Le politiche di amministrazione del sistema sono in attesa di una revisione seria . La libreria nello strano posto potrebbe essere raccolta da cose casuali e stirare solo l'esecuzione della tua applicazione (e possibili processi avviati da essa, che non coinvolgono programmi standard) potrebbe rivelarsi una vera sfida ...
vonbrand

1
@vonbrand - Sciocchezze, a meno che non stiamo parlando di qualche macchina ad alta sicurezza (e non per esempio di uno sviluppatore condiviso o di una macchina / cluster di test) nel qual caso devi avere una sana paranoia sul software straniero non certificato. In termini di rotture casuali, aggiornare libc (influendo su tutto il sistema, probabilmente causando rotture del sistema) è piuttosto diverso rispetto all'installazione di un programma applicativo isolato da fonti attendibili (non sono d'accordo con l'idea che Mathematica sia un pacchetto casuale). L'esaurimento delle risorse ovviamente è una preoccupazione valida che dovrebbe affrontare il sistema competente.
FooF

@FooF, ho visto troppi casi di "L'amministrazione conosce meglio, lascia che gli utenti facciano ciò che vogliono senza supporto" per avere illusioni in questo settore.
vonbrand,

1
@vonbrand - Tendo ad essere d'accordo con il tuo ultimo commento. Ma non sono assolutamente d'accordo sul fatto che l'aggiornamento di libc o l'installazione di software ben noto (non "pacchetto casuale") sia in qualche modo comparabile (assumendo nessuna cattiva intenzione). Sappiamo molto poco della natura dell'ambiente e dei suoi utenti per esprimere qui un'opinione definitiva. Nelle macchine di sviluppo software (con molti utenti competenti), potrebbe avere senso consentire agli utenti di eseguire il proprio software. A volte è assolutamente necessaria (OpenWRT e OpenEmbedded che le piattaforme embedded di destinazione costruiranno da fonti alcuni strumenti necessari per costruire l'immagine in bianco e nero).
FooF

-3

In questo caso specifico direi di non preoccuparti, a meno che tu non abbia l'assistenza (e l'autorizzazione) degli amministratori di questo sistema condiviso.

Mathematica funziona su Windows, Mac e Linux, quindi installalo sul tuo computer desktop dove non devi preoccuparti di influenzare gli altri. È anche più probabile che il sistema operativo sia più recente di RHEL4 e quindi non dovrai fare alcuna contorsione per installarlo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.