Ein Paket lokal für einen Benutzer installieren – bewährte Methoden?

Ein Paket lokal für einen Benutzer installieren – bewährte Methoden?

Ich möchte Git lokal für einen Benutzer auf einem RHEL-Server installieren (ich habe keinen Root-Zugriff). Was wäre Ihre sauberste/organisierteste Methode zum Installieren von Software auf einem lokalen Benutzerkonto?

  • Alles im Home-Verzeichnis dieses Benutzers installieren?
  • Wie würde das Verzeichnislayout aussehen?
  • Möchten Sie aus der Quelle oder von RPM installieren?
  • Wenn von RPM, würden Sie YUM oder RPM verwenden?

Antwort1

Es gibt Möglichkeiten, RPMs in einem Benutzerverzeichnis zu installieren rpm, aber ich glaube nicht, dass das so einfach ist. Ich glaube nicht, dass es eine Möglichkeit mit gibt yum.

Meine Standardpraxis ist geworden, aus dem Quellcode in ein localVerzeichnis in meinem Home-

$ mkdir ~/local
$ mkdir ~/local/bin
$ mkdir ~/local/lib
$ mkdir ~/local/include

Ich lade den Quellcode so herunter, wie ich es tun würde, /usr/localwenn ich Root-Rechte hätte, beispielsweise in ~/local/git.

Beim Kompilieren setze ich das Präfix auf das localVerzeichnis

$ configure --prefix=/home/user_name/local
$ make
$ make install

Ich füge dann ~/local/binmeinen $PATH hinzu .bash_profile.

Das Problem bei der Installation aus dem Quellcode ist natürlich, dass Sie keine automatische Abhängigkeitsauflösung erhalten. Wenn Sie feststellen, dass Sie Abhängigkeiten installieren müssen, kompilieren und installieren Sie sie wie oben beschrieben. Wenn Sie dann kompilieren git, müssen Sie die Kompilierflags aktualisieren, damit sie am richtigen Speicherort nach den Bibliotheken und Include-Dateien der Abhängigkeit suchen:

./configure --prefix=/home/user_name/local LDFLAG='-L/home/user_name/local/lib' CFLAGS='-I/home/user_name/local/include' CPPFLAGS='-I/home/user_name/local/include' CXXFLAGS='-I/home/user_name/local/include'

Antwort2

Eine .rpm-Datei ist eigentlich eine Art cpioArchiv, das einer einfachen Form von sehr ähnlich ist tar. Das rpm2cpioDienstprogramm ist wahrscheinlich auf dem System installiert und erfordert keine Berechtigungen zur Verwendung. Es schreibt in die Standardausgabe. Um es zu konvertieren, müssen Sie also Folgendes tun:

rpm2cpio whatever.rpm > whatever.cpio

Es gibt eins, man cpiodas Sie sich selbst ansehen können, aber was Sie jetzt tun möchten, ist, das Archiv im „Kopieren in“-Modus an cpio weiterzuleiten:

cat whatever.cpio | cpio -i

Sehr wahrscheinlich ist das Material in einem Verzeichnisbaum organisiert, sodass die Dateien an die entsprechenden Stellen (bin usw.) gelangen. Wenn diese in Ihrem pwd nicht vorhanden sind, erhalten Sie eine Fehlermeldung, aber die Dateien im Archiv werden aufgelistet (dasselbe erreichen Sie mit dem Schalter -t/ --list). Wenn Sie die Verzeichnisse automatisch erstellen möchten, verwenden Sie -d. So können Sie ein RPM schnell entpacken:

rpm2cpio whatever.rpm | cpio -i -d

Sie können dies verwenden, um in $HOME zu installieren. Das einzige Problem entsteht, wenn das Programm erwartet, Dinge in /etcusw. zu finden, da bei vielen Dingen der Installationsort aus irgendeinem Grund beim Kompilieren fest codiert ist.

Das Erstellen aus dem Quellcode ist wahrscheinlich die bessere Option (da Sie den richtigen Speicherort angeben können), aber wenn Sie es auf jeden Fall zum Laufen bringen können, ist es schnell und einfach.

Darüber hinaus können Sie mit dem Dateibrowser Midnight Commander ( mc) und wahrscheinlich auch mit anderen Dateibrowsern in einer RPM- oder CPIO-Hierarchie (oder komprimierten TAR- oder ZIP-Datei) navigieren und einzelne Dateien so kopieren, als wäre das Archiv entpackt (es wird ein temporäres Dateisystem mit dem Archivinhalt erstellt, das Sie durchsuchen können).

Antwort3

Dies ist eine Alternative (ohne Yum) und die Berechtigung wird verrückt sein, aber Sie können chownsie dem Zielbenutzer anschließend erteilen: – außerdem ist es Glückssache :-(

#-## Download all dependency for the RPM -- 
#sudo yum install yum-utils
#sudo yumdownloader --resolve --destdir ~/download bash

#-## Install all downloaded to an alternate root 
#sudo rpm --initdb --root <user_home_dir>
#sudo rpm --root <user_home_dir> -Uvh --nodeps ~/download/*

Fügen Sie Ihrem Pfad dann entsprechende Orte hinzu.

verwandte Informationen