Installare un pacchetto localmente su un utente - best practice?


18

Voglio installare Git localmente su un utente su un server RHEL (non ho accesso root) Quale sarebbe il modo più pulito / organizzato di installare software su un account utente locale?

  • Installare tutto nella home directory di quell'utente?
  • Come sarebbe il layout della directory?
  • Vuoi installare da sorgente o RPM?
  • Se da RPM usereste YUM o RPM?

Risposte:


17

Ci sono modi per installare rpms in una directory utente usando rpm, ma non credo che sia diretto. Non credo che ci sia un modo per yum.

La mia pratica standard è diventata quella di compilare dalla fonte in una localdirectory nella mia casa

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

Scarica la fonte come farei /usr/localquando ho root, ad esempio, in ~/local/git.

Durante la compilazione ho impostato il prefisso nella localdirectory

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

Aggiungo quindi ~/local/binal mio $ PATH in .bash_profile.

Naturalmente, il problema con l'installazione dalla fonte è che non si ottiene la risoluzione automatica delle dipendenze. Se trovi che devi installare dipendenze, compila e installa come sopra. Quindi, durante la compilazione git, è necessario aggiornare i flag di compilazione in modo che guardino nella posizione corretta per le librerie della dipendenza e includano i file:

./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'

Funzionava perfettamente, grazie per il consiglio!
cablato il

13

Un file .rpm è in realtà una forma di cpioarchivio, che è molto simile a una semplice forma di tar. L' rpm2cpioutilità è probabilmente installata sul sistema e non richiede privilegi per l'uso; scrive su standard out, quindi per convertire:

rpm2cpio whatever.rpm > whatever.cpio

C'è una man cpiosi può guardare se stessi, ma ciò che ora vuole fare è alimentare l'archivio per cpio in "copia in" modalità:

cat whatever.cpio | cpio -i

Molto probabilmente il materiale è organizzato in un albero di directory in modo che i file vadano in posizioni appropriate (bin, ecc, ecc.). Se quelli non esistono nel tuo pwd, otterrai un errore, ma questo elencherà i file nell'archivio (puoi ottenere la stessa cosa con l' opzione -t/ --list). Se si desidera creare automaticamente le directory, utilizzare -d. Quindi un modo rapido per decomprimere un numero di giri:

rpm2cpio whatever.rpm | cpio -i -d

Puoi usarlo per installare in $ HOME. L'unico problema sarà se il programma prevede di trovare contenuti/etc , ecc., Poiché molte cose hanno la loro posizione di installazione hardcoded per qualsiasi scopo quando vengono compilati.

Costruire dalla fonte è probabilmente un'opzione migliore (poiché puoi fornire la posizione corretta), ma se riesci a farlo funzionare in ogni caso, è semplice e veloce.

Inoltre, il browser dei file del comandante di mezzanotte ( mc) e probabilmente altri browser di file oltre, ti consentiranno di navigare in una gerarchia di rpm o cpio (o tar compresso o zip) e copiare singoli file come se l'archivio fosse decompresso (crea un file system temporaneo per navigare con il contenuto dell'archivio in esso).


0

Questo è un supplente (non si utilizza yum) e l'autorizzazione sarà stravagante, ma in seguito è possibile chownper l'utente target: - Inoltre è un successo o meno :-(

#-## 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/*

Quindi aggiungi le posizioni appropriate al tuo percorso.

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.