yum install in user home für nichtadministratoren

51

Ich bin ein Benutzer ohne Administratorrechte auf einem großen Computersystem. Ich benötige einige aktuelle Pakete, die nicht auf dem System installiert sind. Ich möchte yum verwenden, um sie zu installieren. Kann ich als Benutzer ohne sudo, admin oder root-Zugriff die Paketverwaltung verwenden, um Pakete in meinem Ausgangsverzeichnis zu installieren? Ich kann immer make aus den Quellen verwenden, aber wenn ich yum verwenden kann, wird das Leben einfacher.

grosse Bandbreite
quelle
1
nicht, wenn die yum-Binärdatei suid root ist (die Chancen dafür sind gering).
h3rrmiller
1
@ h3rrmiller, aber gibt es einen Paketmanager, der Programme in $ HOME installieren kann und daher keinen sudo-Zugriff erfordert? Ich weiß, dass MacPorts unter OSX dies kann. Was sind solche Optionen für Linux?
HighBandWidth

Antworten:

8

Die meisten Binärdateien sind so kompiliert, dass sie an bestimmten Speicherorten unter installiert werden können /.

Es gibt Nicht-Root-Paketmanager wie Gentoo Prefix und Rootless GoboLinux und möglicherweise 0install .

Wie Sie sagten, würde das Kompilieren dieses Problems lindern oder eine Chroot verwenden. Die größte Hürde beim Chrooten sind jedoch die Voraussetzungen und die Verknüpfung mit gemeinsam genutzten Kernelobjekten.

h3rrmiller
quelle
10
Chroot ist hier keine Option. Sie müssen root sein, um chroot zu spielen.
Marco
38

Anstatt Verwendung yumfinden die RPMs Sie wollen und sie herunterladen. Sie können sie immer noch nicht direkt installieren, ohne root zu sein, aber RPM-Pakete sind eigentlich schicke .cpio-Dateien, und Sie können ihren Inhalt entpacken. Der einfachste Weg, dies zu tun, ist wahrscheinlich der mcDateibrowser ("Midnight Commander") (eine der größten Software-Komponenten aller Zeiten), mit dem Sie den Inhalt einer .rpmDatei durchsuchen und Dateien direkt daraus kopieren können.

In diesem rpm2cpioFall können Sie es in .cpio konvertieren und dann cpiodie darin enthaltenen Dateien extrahieren und an den richtigen Stellen ablegen . Beide werden bereits auf einem Red Hat- oder Fedora-System installiert. Hier ist ein Beispiel für die Installation von "xsnow" (Sie möchten dies wahrscheinlich in einem leeren Verzeichnis tun):

»rpm2cpio xsnow-1.42-17.fc17.x86_64.rpm > xsnow.cpio

Beachten Sie, dass ich eine für mein System geeignete RPM-Datei gefunden habe: fc17 x86_64. Dies ist wichtig, da es sich um vorkompilierte Binärdateien handelt, die mit anderen Komponenten verknüpft sind. Extrahieren Sie nun die .cpio:

»cpio -idv < xsnow.cpio 
./usr/bin/xsnow
./usr/share/doc/xsnow-1.42
./usr/share/doc/xsnow-1.42/README
./usr/share/man/man6/xsnow.6.gz
212 blocks
Press any key to continue...

Wenn ich diesen Verzeichnisbaum durchsuche, ist alles vorhanden, was ich brauche, mit Ausnahme einiger Metainformationen, die mir beim Auflösen von Abhängigkeiten helfen könnten. Dies kann gefunden werden mit rpm -q -p [package] --[query]:

»rpm -q -p xsnow-1.42-17.fc17.x86_64.rpm --requires
warning: xsnow-1.42-17.fc17.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID d2382b83: NOKEY
libX11.so.6()(64bit)  
libXext.so.6()(64bit)  
libXpm.so.4()(64bit)  
libc.so.6()(64bit)  
libc.so.6(GLIBC_2.2.5)(64bit)  
libc.so.6(GLIBC_2.3.4)(64bit)  
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)  
rpmlib(PayloadIsXz) <= 5.2-1

Ich bin mir ziemlich sicher, dass ich all das Zeug schon habe. Jetzt muss ich nur noch die ausführbare Datei xsnow in meinem $ PATH ablegen, die bereits einen Bin in meinem Home-Verzeichnis enthält:

»cp ./usr/bin/xsnow ~/bin

Viola! Jetzt kann ich xsnownichts mehr tippen und ansehen, da xsnow mit KDE nicht gut funktioniert :( aber hoffentlich ist der eigentliche Vorgang klar. Ich musste nichts außerhalb meines Home-Verzeichnisses tun.

Wenn Sie Bibliotheken installieren müssen, müssen Sie auch für diese ein eigenes Verzeichnis erstellen und Folgendes hinzufügen ~/.bashrc:

export LD_LIBRARY_PATH=/home/you/lib
Goldlöckchen
quelle
@ siamii Na, hast du eine bessere Antwort?
Marcin
5
Ok, wie wäre es, wenn jemand ein Tool zum Erstellen von cpio-Dateien erstellt und dann alles in einen Nicht-Root-Ordner kopiert, z. B. ./usr/bin nach $ PREFIX / usr / bin usw., und auch Abhängigkeiten rekursiv überprüft und installiert.
HighBandWidth
2
Zweieinhalb Jahre später vielen Dank für die hilfreiche Antwort. Sie können dies in einer Zeile tun mit: mkdir xsnow; cd xsnow; wget -O - 195.220.108.108/linux/rpmfusion/nonfree/fedora/releases/17/… | rpm2cpio - | cpio -idv
Larry Engholm
1
Ich benutze dies seit über 2 Jahren auf meinem Bürocomputer und es funktioniert jedes Mal wie ein Zauber. Ich möchte Ihnen aufrichtig danken. Ich wünschte, die IT meiner Universität wäre genauso kompetent.
Hin und wieder stoße ich dabei auf einen Kann nicht-Symlink zu '...': Berechtigung verweigert oder cpio: ....: Kann nicht geöffnet werden: Berechtigung verweigert. Gibt es eine Möglichkeit, dies zu beheben? Beachten Sie, dass ich diese Dateien ohne sudo erstelle, dann aber aus irgendeinem Grund sudo verwenden muss, um sie zu deinstallieren
Phylliida