yum installa nella home dell'utente per i non amministratori


51

Sono un utente non amministratore su un sistema informatico di grandi dimensioni. Ho bisogno di alcuni pacchetti aggiornati che non sono installati sul sistema. Voglio usare yum per installarli. Come utente senza accesso sudo, admin o root, posso usare la gestione dei pacchetti per installare i pacchetti nella mia home directory? Posso sempre usare make dalle fonti, ma essere in grado di usare yum renderà la vita più facile.


1
a meno che il binario yum non sia suid root (le probabilità sono scarse).
h3rrmiller,

1
@ h3rrmiller, ma esiste un gestore di pacchetti che può installare programmi in $ HOME e quindi non richiede l'accesso sudo? So che MacPorts su OSX può farlo. Quali sono tali opzioni per Linux?
highBandWidth

Risposte:


8

La maggior parte dei file binari sono compilati per essere installati in determinate posizioni in /.

Esistono gestori di pacchetti non root come Gentoo Prefix e Rootless GoboLinux e forse 0install .

Come hai detto, compilare te stesso allevierebbe quel problema o usando un chroot. Tuttavia, il tuo più grande ostacolo con il chrooting saranno i prerequisiti e il collegamento agli oggetti condivisi del kernel.


10
Chroot non è un'opzione qui. Devi essere root per chroot.
Marco

38

Anziché utilizzare yum, trova gli rpms desiderati e scaricali. Non puoi ancora installarli direttamente senza essere root, ma i pacchetti RPM sono in realtà file .cpio fantasiosi e puoi decomprimerne il contenuto. Il modo più semplice per farlo è probabilmente tramite il mcbrowser di file ("comandante di mezzanotte") (uno dei più grandi software di sempre), che consente di sfogliare il contenuto di un .rpme copiare i file direttamente da esso.

rpm2cpioInoltre, puoi usarlo per convertirlo in .cpio, quindi cpioper estrarre i file all'interno e metterli nei posti giusti. Entrambi saranno già installati su un sistema redhat o fedora. Ecco un esempio di installazione di "xsnow" (probabilmente vorrai farlo in una directory vuota):

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

Nota che ho trovato un .rpm appropriato per il mio sistema, fc17 x86_64. Questo è importante perché si tratta di binari precompilati collegati ad altri componenti. Ora estrai il .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...

Se sfoglio questo albero di directory, tutto ciò di cui ho bisogno è lì, tranne alcune delle meta-informazioni che potrebbero aiutarmi a risolvere le dipendenze. Questo può essere trovato usando 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

Abbastanza sicuro di avere già tutte queste cose. Quindi ora tutto ciò che devo fare è inserire il file eseguibile xsnow nel mio $ PATH, che include già un cestino nella mia directory home:

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

Viola! Ora non riesco a digitare xsnowe guardare nulla, poiché a quanto pare xsnow non funziona bene con KDE :( ma spero che il jist del processo sia chiaro. Non ho dovuto fare nulla al di fuori della mia home directory.

Se è necessario installare le librerie, è necessario creare una directory in home anche per loro e aggiungere a ~/.bashrc:

export LD_LIBRARY_PATH=/home/you/lib

@siamii Hai una risposta migliore?
Marcin

5
Ok, allora che ne dici di qualcuno che crea uno strumento per creare file cpio e quindi copia tutto in una cartella non root, come ./usr/bin in $ PREFIX / usr / bin ecc., E controlla e installa ricorsivamente anche le dipendenze.
highBandWidth

2
Due anni e mezzo dopo, grazie per la risposta utile. Puoi farlo in una riga con: mkdir xsnow; cd xsnow; wget -O - 195.220.108.108/linux/rpmfusion/nonfree/fedora/releases/17/… | rpm2cpio - | cpio -idv
Larry Engholm,

1
Lo uso da oltre 2 anni sul mio computer da ufficio e funziona come un incantesimo ogni volta. Voglio esprimere la mia sincera gratitudine a te. Vorrei che l'IT della mia università fosse altrettanto competente.

Ogni tanto, mentre lo faccio, incontro un link simbolico Impossibile a '...': Autorizzazione negata o cpio: ....: Impossibile aprire: Autorizzazione negata, c'è un modo per risolvere questo problema? Nota che creo questi file senza sudo, ma poi per qualche motivo ho bisogno di usare sudo per disinstallarli
Phylliida,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.