Wie führe ich eine neue Software ohne Aktualisierung von GLIBC aus?

20

Ich habe Mathematica 9 auf einem alten Red Hat Enterprise Linux AS Release 4-System installiert. Nach der Installation habe ich versucht, Mathematica zu starten, aber die folgende Meldung wurde ausgegeben:

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: Version `GLIBC_2.4 'nicht gefunden (benötigt von / home / wcbao / M / Wolfram / Mathematica / 9.0 / Systemdateien / Bibliotheken / Linux-x86-64 / libML64i3.so)

/home/wcbao/M/Wolfram/Mathematica/9.0/SystemFiles/FrontEnd/Binaries/Linux-x86-64/Mathematica: /lib64/tls/libc.so.6: Version `GLIBC_2.4 'nicht gefunden (benötigt von / home / wcbao / M / Wolfram / Mathematica / 9.0 / Systemdateien / Bibliotheken / Linux-x86-64 / libQtCore.so.4)

Ich möchte das System nicht glibc aktualisieren, weil es riskant ist und der Administrator mir das nicht erlaubt.

Jemand schlug vor, dass es möglich sei, eine neue Version von glibc irgendwo anders zu installieren und das Programm als auszuführen

LD_LIBRARY_PATH=/lib/new your_application

und dies wird das System nicht beeinflussen.

Ich frage hier, ob diese Methode wirklich funktioniert. Und wenn es funktioniert, möchte ich wissen, wie es Schritt für Schritt gemacht wird (mir fehlen momentan Erfahrungen mit Linux und ich möchte Mathematica so schnell wie möglich unter Linux einsetzen).

Bearbeiten :

Mir ist aufgefallen, dass es eine Software namens "Ermine" gibt. Es scheint, dass es eine Software als eigenständiges Paket bereitstellen kann, das nicht von der externen Umgebung abhängt. Leider ist es eine Shareware. Ich denke, da "Ermine" das kann, muss es eine Möglichkeit geben, neue Software auf alten Systemen zu verwenden.

user15964
quelle
2
Es würde funktionieren. Das Einrichten ist wahrscheinlich sehr aufwändig (Sie müssen alle Bibliotheken installieren, von denen Mathematica abhängig ist). Ich würde empfehlen, RPM-Pakete von einer neueren Version in einem Unterverzeichnis Ihres Hauses zu installieren. Ich lasse jemanden, der mit RH besser vertraut ist, eine Antwort schreiben, in der er erklärt, wie das geht.
Gilles 'SO- hör auf böse zu sein'
@ Gilles Hallo Gilles, vielen Dank !!! Ich freue mich darauf.
user15964
Es ist riskant, glibc woanders zu installieren.
BenjiWiebe
@BenjiWiebe - auf welche Risiken beziehen Sie sich genau?
FooF
1
Cross-Gepostet von Super - User: superuser.com/questions/543249/... Wiederholung meines Kommentars von dort: „RHEL4 ist acht Jahre alt und hat das Ende ihres normalen Lebenszyklus erreicht Gibt es nicht eine andere Maschine , die Sie installieren könnte auf. zB Ihre Desktop-Maschine. "
Burhan Ali

Antworten:

10

Sie können definitiv eine neue Version von GLIBC kompilieren und in einem separaten Verzeichnis ablegen. Als erstes müssen Sie die gewünschte Version von glibc von http://ftp.gnu.org/gnu/glibc/ herunterladen .

Führen Sie das configureSkript aus und setzen Sie das --prefix=auf so etwas wie /home/you/mylibs.

Nachdem Sie es in dieses Verzeichnis installiert haben, müssen Sie LD_LIBRARY_PATHden Speicherort der neuen glibc festlegen .

Sie müssen alle Abhängigkeiten herausfinden, die Sie möglicherweise kompilieren müssen. Sie können ein Shell-Skript erstellen, das die LD_ * -Variablen setzt und Ihr Programm ausführt (was Sie ohnehin tun müssten), und es wiederholt ausführen - fehlende Bibliotheken herunterladen / neu kompilieren.

Sie können auch lddbestimmen, welche gemeinsam genutzten Bibliotheken das Programm benötigt, und dann lddin jeder der Bibliotheken herausfinden, ob sie glibc benötigen.

Dies kann sehr zeitaufwändig sein und ist nichts für Ungeduldige oder schwache Nerven. Wenn Sie sich durch die möglichen Abhängigkeiten bewegen, die für die Ausführung Ihrer Anwendung erforderlich sind, möchten Sie sich gelegentlich die Haare ausziehen.

Update 1:

Ich habe glibc-2.4 heruntergeladen und versucht, es unter CentOS 6 zu kompilieren. Um richtig zu configurefunktionieren, musste ich die acund ldVersionsüberprüfung ändern , indem ich Folgendes änderte:

2.1[3-9]*)

zu:

2.*)

in Zeilen 4045und 4106in der configureDatei selbst. Ich setze meine * FLAGS Umgebungsvariablen wie folgt:

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

und dann ausgeführt ./configure --prefix=/home/tim/masochist. Es wurde richtig konfiguriert ... und es wurde auch richtig gebaut ... aber dann fing ich an, auf Fehler zu stoßen - meistens beschwerte sich der Compiler über die Neudefinition von Dingen.

Zu diesem Zeitpunkt gab ich auf ... weil es zu zeitaufwändig wurde . ;)

livingstaccato
quelle
+1 für die Information, obwohl die letzte Zeile wichtig ist. Das OP muss entscheiden, ob sich der Aufwand lohnt.
Burhan Ali
Danke euch allen! OK, ich trete zurück. Ich denke, ich halte mich besser an Mathematica 8 als Kompromiss. Es funktioniert auf Red Hat 4.
user15964
@livingstaccato Hi, aber wie kommentiert vonbrand die Worte: "Die Installation einer neuen Version an einem fremden Ort ist riskanter ... Die Bibliothek an dem fremden Ort könnte durch zufällige Dinge abgeholt werden, ....". Ist es wirklich riskanter? Hatten Sie jemals den in Ihrer Antwort beschriebenen Weg ausprobiert?
user15964
@ user15964 Es ist nicht riskant, es sei denn, Sie achten nicht darauf, was Sie tun, root oder Sie tun etwas Seltsames wie das Ändern von LD_PRELOAD in Ihrem Session-Init-Skript und sperren sich aus.
Livingstaccato
@ user15964 Auch - ja - ich habe glibc übrigens damals umgebaut.
Livingstaccato
1

Das Aktualisieren von glibc auf eine von Ihrer Distribution unterstützte Version ist risikoarm. Es wurde geschrieben, um die Kompatibilität mit Versionen zu bewältigen, die weit zurückliegen, und (mit Ausnahme von Fehlern) sollte eine neue Version nur ein Tropfen Ersatz sein. Die Installation einer neuen Version an einem fremden Ort ist meiner Meinung nach riskanter.

vonbrand
quelle
4
Aber das Problem ist, ich bin nicht der Administrator, ich habe nicht die Autorität. Selbst wenn ich die Erlaubnis dazu habe, habe ich Angst, Änderungen am System vorzunehmen, da dies nicht mein Computer ist, sondern ein Cluster, an dem viele Leute arbeiten. Übrigens, warum ist eine neue Version an anderer Stelle riskant? Ich muss nur die Software, die ich benötigte, mit der neuen Bibliothek verknüpfen, nicht mit dem gesamten System.
user15964
1
Und Sie möchten ein zufälliges Paket installieren? Die Systemverwaltungsrichtlinien sind aufgrund einer ernsthaften Überarbeitung überfällig . Die Bibliothek an dem seltsamen Ort könnte durch zufällige Dinge abgeholt werden, und das Ausbügeln der Ausführung Ihrer Anwendung (und der von ihr gestarteten möglichen Prozesse, die keine Standardprogramme beinhalten) könnte eine ziemliche Herausforderung darstellen ...
vonbrand
1
@vonbrand - Unsinn, es sei denn, es handelt sich um einen Computer mit hoher Sicherheit (und nicht zum Beispiel um einen gemeinsam genutzten Entwickler oder einen Testcomputer / Cluster). In diesem Fall benötigen Sie eine gesunde Paranoia in Bezug auf ungeprüfte ausländische Software. In Bezug auf zufällige Fehler ist es eine ganz andere Sache, libc zu aktualisieren (was das gesamte System betrifft und möglicherweise Systemfehler verursacht), als nur ein isoliertes Anwendungsprogramm aus vertrauenswürdigen Quellen zu installieren (ich bin nicht der Meinung, dass Mathematica ein zufälliges Paket ist). Die Erschöpfung von Ressourcen ist natürlich ein berechtigtes Anliegen, mit dem sich der zuständige Systemadministrator befassen sollte.
FooF
@FooF, ich habe zu viele Fälle von "Administration weiß am besten, lass Benutzer tun, was sie wollen, ohne Unterstützung" gesehen, um Illusionen in diesem Bereich zu haben.
Vonbrand
1
@vonbrand - Ich stimme Ihrem letzten Kommentar eher zu. Ich bin jedoch absolut anderer Meinung, dass das Aktualisieren von libc oder das Installieren bekannter Software (nicht "zufälliges Paket") irgendwie vergleichbar ist (unter der Annahme, dass keine bösen Absichten vorliegen). Wir wissen sehr wenig über die Natur der Umwelt und ihrer Nutzer, um hier eine endgültige Meinung abzugeben. In der Software - Entwicklung Maschinen (mit vielen kompetenten Nutzern), es könnte sinnvoll sein, Benutzer , ihre eigene Software zu erlauben laufen. Manchmal ist es einfach notwendig (OpenWRT und OpenEmbedded, dass eingebettete Zielplattformen aus Quellen erstellt werden, einige Tools, die zum Erstellen des f / w-Images erforderlich sind).
FooF
-3

In diesem speziellen Fall würde ich sagen, dass Sie sich nicht darum kümmern, es sei denn, Sie haben Unterstützung (und Erlaubnis) von den Administratoren dieses gemeinsam genutzten Systems.

Mathematica kann unter Windows, Mac und Linux ausgeführt werden. Installieren Sie es also einfach auf Ihrem Desktop-Computer, ohne dass Sie sich Gedanken darüber machen müssen, andere zu beeinflussen. Es ist auch wahrscheinlicher, dass das Betriebssystem aktueller als RHEL4 ist und Sie daher keine Verzerrungen vornehmen müssen, um es zu installieren.

Burhan Ali
quelle