Meine Firma verwendet einen kleinen, veralteten Cluster (CentOS 5.4) für die Berechnung von Zahlen (genauer gesagt Finite-Elemente-Berechnungen). Sie verwenden ein kommerzielles Paket und haben keine Ahnung von Linux. Sie möchten nichts an den Maschinen ändern, solange sie laufen, was ich als zeitsparende Strategie akzeptiere. Ichnichtüber Administratorrechte verfügen.
Ich kann sie kleinere Pakete installieren lassen, aber nicht z. B. die Python-Version von 2.4 auf 2.6+ ändern, also habe ich beschlossen, die aktuelle Version () zu kompilieren und bin auf einige Probleme mit den Abhängigkeiten gestoßen (falsche Version von z. B. readline, zlib, curses, bz2 ... oder Pakete nicht gefunden). Ich muss auch gcc aktualisieren, das sich über fehlende , und ./configure --prefix=/home/mysuser/root2
beschwert .GMP
MPFR
MPC
Der Grund dafür ist, dass ich andere Testsoftware kompilieren möchte, um sie auf diesen Maschinen auszuführen. Was kann ich tun, um die Pakete, die ich brauche, effektiv zu installieren, um die Software zu kompilieren, mit der ich arbeiten muss? Ich verwende anderswoarchlinuxund fände es ganz praktisch, etwas in der Art machen zu können
pacman --root /home/myuser/root2 -S <package>
Aber ich habe keine Ahnung, ob das möglich oder klug ist.
Andere verwandte SE-Fragen:Gentoo-PräfixUndpkgsrcscheint nicht so einfach zu sein (ich kann mich aber auch irren).
Antwort1
Ihr Management ist klug genug, nicht zu versuchen, einen funktionierenden Cluster zu aktualisieren, der eine wichtige Funktion auf der Grundlage eines proprietären Pakets ausführt.
Das Backportieren von Paketen ist zeitaufwändig und riskant, d. h. nicht immer machbar. Sie können den Zeitaufwand vermeiden, wenn Sie die Pakete, die Sie installieren möchten, im ursprünglichen CentOS 5.4-Repository oder in einem CentOS 5.4-Backport-Repository finden. Sie können zwar mehrere Versionen von GCC gleichzeitig auf einem Host haben (die Leute von eingebetteten Systemen/Cross-Compiler machen das ständig), aber es ist nicht trivial, mehr als eine glibc in einer einzigen Laufzeitumgebung zu haben.
Sie sind also am besten beraten, in einer separaten, neueren Umgebung zu arbeiten, die die Pakete enthält, die Sie benötigen, und eine Möglichkeit zu finden, die Ausgabe der alten Umgebung in der neuen zu testen. Riskieren Sie auf keinen Fall, in der alten Umgebung etwas zu beschädigen, sonst benötigen Sie möglicherweise alle Reputationspunkte von stackexchange.com, die Sie bekommen können, um Ihren nächsten Job zu finden ;-)
Antwort2
Das Installieren von Paketen aus Distributionen ist häufig schwierig, wenn Sie keine Root-Berechtigungen besitzen, da diese ein festes Verzeichnislayout voraussetzen und das Abhängigkeitssystem dazu neigt, einige Pakete mit Setuid- oder Setgid-Programmen zu erfordern, die Sie als Nicht-Root-Benutzer nicht installieren können.
Das Kompilieren aus dem Quellcode ist meistens der einfachste Weg. (Und wenn es Ihnen auf Geschwindigkeit ankommt, können Sie die besten Kompilierungsoptionen für Ihr bestimmtes Prozessormodell wählen.)
Um die Pakete zu organisieren, die Sie kompilieren (oder durch Extrahieren von Tarballs installieren), empfehle ich die Verwendungverstauenoder die leistungsfähigere, aber komplexerexstow. Ihre grundlegende Funktionsweise besteht darin, jedes Paket in einem separaten Verzeichnis zu installieren und dann symbolische Links zu erstellen, um sie alle zusammenzuführen. Hier ist eine typische Kompilierungs- und Installationssitzung mit stow:
tar xzf foobar-42.tar.gz
cd foobar-42
./configure --prefix=~/software/stow/foobar-42
make
make install
cd ~/software/stow
stow foobar-42
Dieser letzte Befehl erstellt symbolische Links von Dateien und Verzeichnissen unter ~/software/stow
unter ~/software
. Wenn beispielsweise ein Verzeichnis und Dateien und ~/software/stow/foobar-42
enthält , erhalten Sie symbolische Linkslib/foobar
bin/foobar
man/man1/foobar.1
~/software/bin/foobar -> ../stow/foobar-42/bin/foobar
~/software/lib/foobar -> ../stow/foobar-42/lib/foobar
~/software/man/man1/foobar.1 -> ../../stow/foobar-42/man/man1/foobar.1
Um ein Programm zu deinstallieren, führen Sie es stow -D foobar-42
im ~/software/stow
Verzeichnis aus und löschen Sie es ~/software/stow/foobar-42
. Um ein Programm vorübergehend nicht verfügbar zu machen (z. B. um eine andere Version auszuprobieren), führen Sie einfach das stow -D
Teil aus.
Siehe auchNicht-Root-Paketmanager;Beste Möglichkeit, vim/gvim in Ubuntu 10.04 auf 7.3 zu aktualisieren?