Wie kann ich ein RPM installieren, ohne root zu sein?

49

Wie kann ich ein RPM auf einem Computer installieren, auf dem ich keine Root-Berechtigungen habe? Ich möchte ein Paket für meinen Gebrauch nur in einem persönlichen Arbeitsverzeichnis installieren. Ich verwende SuSe SLES10.

Bitte flamm mich nicht mit "Diese Idee ist so dumm, du solltest es nicht tun, weil alle Anfragen durch den korporativen Wurzelgott gehen müssen, möge er für immer leben."

Ich weiß, dass ich dies vom Wurzelgott verlangen kann, aber ich werde abgeschossen (aus makellosen, einwandfreien Gründen, da bin ich mir sicher ...). Außerdem wird er nie dazu kommen, es zu installieren, selbst wenn er sagt, dass er es tun wird.

Ross Rogers
quelle
6
Dies ist überhaupt kein Duplikat. Das Überschreiben des Pfads ermöglicht es nicht immer einem nichtprivilegierten Benutzer, rpm zu verwenden.
John T
Danke HarryMC. Ich werde das überprüfen. Das Hinzufügen eines Links zu dem anderen Ticket, von dem die Leute dachten, dass es ein Duplikat von meins war. Vielleicht helfen die Semmelbrösel jemand anderem: superuser.com/questions/160530/override-rpm-install-path
Ross Rogers
Für eine bessere Zukunft schauen Sie auf appimage.org .
Ross Rogers

Antworten:

56
cd my-dir;
rpm2cpio to-install.rpm | cpio -idv

Siehe So extrahieren Sie ein RPM-Paket, ohne es zu installieren (Befehl rpm extract) .

Harrymc
quelle
2
Ich habe dies getan und cpio scheint nichts anderes zu tun als '1 Block' zu drucken. Habe ich etwas falsch gemacht?
Nate Parsons
Vielen Dank. Es stellte sich heraus, dass ich die Installation von der Quelle aus durchführen konnte, sodass ich mich nicht um RPMs kümmern muss
Nate Parsons
10
Das entpackt einfach den Inhalt des RPM und gibt ihn dort ab, wo Sie sind. Das heißt nicht, dass das Ergebnis funktioniert (seine Konfiguration ist nicht so, wie es sein sollte, ...)
vonbrand
Ich wünschte, ich könnte Ihnen nur einen Ruf als Belohnung für wohltätige Zwecke geben. Danke!
Macetw
3

So extrahieren Sie den Inhalt von rpm-Paketen

export ins=foo-bar.rpm
rpm2cpio $ins | cpio -idv

So extrahieren Sie das tar.gzArchiv

gzip -dc foo-bar.tar.gz | tar xvf –
cd foo-bar-dir

So extrahieren Sie tar.gzPakete in das aktuelle Verzeichnis

export file=foo-bar.tar.gz
# Note that `xovf` switch order *matters*
gzip -dc $file | tar -xovf -

Wie man Binärdateien als Nicht-Root erstellt

./configure --prefix=$HOME && make && make install
Jordan Georgiev
quelle
1

Eine andere Option ist die Installation von der Quelle aus, wo Sie normalerweise das Installationsverzeichnis mithilfe des --prefixSchalters ändern können .

John T
quelle
1
Das ist, was ich normalerweise mache, aber ich hatte mir mehr Automatisierung erhofft.
Ross Rogers
2
Bei mir funktioniert das nicht, weil versucht wird, eine Dateisperre für etwas in / var zu erhalten (und die Berechtigung verweigert wird).
Nir Friedman
0

Ich denke, die "echte" Antwort auf das "Installieren" einer RPM ohne Root-Berechtigung ist, dass Sie es nicht können . ABER vorausgesetzt, Sie könnten den Installationsprozess tatsächlich starten ...

RPMs werden mithilfe einer Liste von Anweisungen installiert, die in einer Spezifikationsdatei (.spec) enthalten sind, die normalerweise der Dateisystemhierarchie folgt. Die meisten Pfade in dieser Hierarchie sind fast immer Betriebssystempfade und keine Benutzerpfade. Wenn Ihr Benutzername nicht Zugriff auf alle Pfade hat, auf denen ein RPM installiert ist, schlägt dies mit Sicherheit fehl. Wenn Sie ein RPM erstellen, dem alle Pfade vorangestellt sind /home/me(oder ein anderer Pfad, den Sie besitzen), funktioniert dies. Dazu müsste eine src.rpm abgerufen und wie in den anderen Antworten erläutert extrahiert und anschließend neu erstellt werden. Wenn Sie dies tun, erwägen Sie möglicherweise, Root-Zugriff zu erhalten oder die Software von Grund auf neu zu erstellen (normalerweise, wenn Sie nicht vorhaben, die Software auf viele Computer zu verteilen).

Es gibt clevere Tricks, die Ihnen bei der manuellen Erstellung helfen. Sie können beispielsweise die bereits in einem RPM aufgelisteten Abhängigkeiten verwenden, um alle Abhängigkeiten abzurufen : https://stackoverflow.com/a/13877738/1236128 .

Jonathan Komar
quelle