Lokales Installieren eines Pakets für einen Benutzer - Best Practices?

18

Ich möchte Git lokal auf einem Benutzer auf einem RHEL-Server installieren (ich habe keinen Root-Zugriff). Was wäre Ihre sauberste / am besten organisierte Art, Software auf einem lokalen Benutzerkonto zu installieren?

  • Alles im Home-Verzeichnis des Benutzers installieren?
  • Wie würde das Verzeichnislayout aussehen?
  • Würden Sie von der Quelle oder RPM installieren?
  • Wenn von RPM würden Sie YUM oder RPM verwenden?
Wiredin
quelle

Antworten:

17

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

Meine übliche Praxis ist es, von der Quelle in ein localVerzeichnis in meinem Haus zu kompilieren

$ 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 habe, z ~/local/git. B. in .

Beim Kompilieren habe ich das Präfix auf das localVerzeichnis gesetzt

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

Ich füge ~/local/bindann meinem $ PATH hinzu .bash_profile.

Das Problem bei der Installation von der Quelle 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 diese wie oben beschrieben. Wenn Sie dann kompilieren git, müssen Sie die Kompilierungsflags aktualisieren, damit sie am richtigen Speicherort für die Bibliotheken und Include-Dateien der Abhängigkeit angezeigt werden:

./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'
drs
quelle
Das hat einwandfrei funktioniert, danke für den Rat!
Wiredin
13

Eine .rpm-Datei ist eigentlich eine Form des cpioArchivs, die einer einfachen Form von sehr ähnlich ist tar. Das rpm2cpioDienstprogramm ist wahrscheinlich auf dem System installiert und erfordert keine Berechtigungen. Es schreibt nach Standard aus, so umzuwandeln:

rpm2cpio whatever.rpm > whatever.cpio

Es gibt einen man cpioman sich selbst sehen kann, aber was wollen Sie jetzt tun füttern wird das Archiv zu cpio in „Kopie in“ Modus:

cat whatever.cpio | cpio -i

Sehr wahrscheinlich ist das Zeug in einem Verzeichnisbaum organisiert, so dass die Dateien an geeigneten Orten (bin usw. usw.) abgelegt werden. Wenn diese in Ihrem pwd nicht vorhanden sind, erhalten Sie eine Fehlermeldung, die jedoch die Dateien im Archiv auflistet (dasselbe können Sie mit dem Schalter -t/ erreichen --list). Wenn Sie die Verzeichnisse automatisch erstellen möchten, verwenden Sie -d. Also ein schneller Weg, um eine rpm auszupacken:

rpm2cpio whatever.rpm | cpio -i -d

Sie können dies verwenden, um in $ HOME zu installieren. Das einzige Problem wird sein, wenn das Programm erwartet, /etcDinge in usw. zu finden , da der Installationsort vieler Dinge für welchen Zweck auch immer fest programmiert ist, wenn sie kompiliert werden.

Das Erstellen von der Quelle aus ist wahrscheinlich eine bessere Option (da Sie den richtigen Speicherort angeben können), aber wenn Sie dies in jedem Fall zum Funktionieren bringen können, ist es schnell und einfach.

Mit dem Midnight Commander - Dateibrowser ( mc) und wahrscheinlich auch mit anderen Dateibrowsern können Sie in einer rpm - oder cpio - Hierarchie (oder einer komprimierten tar - oder zip - Hierarchie) navigieren und einzelne Dateien so kopieren, als ob das Archiv entpackt wäre (es erstellt eine temporäres Dateisystem, um den Archivinhalt darin zu durchsuchen).

Goldlöckchen
quelle
0

Dies ist eine Alternative (ohne yum) und die Erlaubnis wird verrückt sein, aber Sie können chowndem Zielbenutzer danach: - Auch es ist ein Hit oder Miss :-(

#-## 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 dann Ihrem Pfad die entsprechenden Positionen hinzu.

Kalpesh Patel
quelle