È possibile utilizzare rpm senza accesso root?
È possibile utilizzare rpm senza accesso root?
Risposte:
A seconda del contenuto del pacchetto, è possibile semplicemente estrarre il contenuto di rpm e utilizzarlo da qualche parte all'interno della directory home. Anche se non è contrassegnato come trasferibile. Se i file binari nel pacchetto hanno percorsi hardcoded o se l'applicazione richiede l'accesso come root, potrebbe non essere possibile.
Ci sono molte risposte che suggeriscono pacchetti trasferibili. L'opzione di trasferimento è per gli amministratori di scegliere la destinazione (rendendo la destinazione sia / opt invece che / usr / local per esempio) e non è realmente per le autorizzazioni dell'utente.
Mentre può essere possibile aggirare alcuni problemi di autorizzazione usando questo metodo, il problema MAJOR è che quando si eseguono operazioni rpm, sta modificando i database /var/lib/rpm/__db.* che sono di proprietà root: root. Così come ha detto JPerkSter "risposta breve = no". Configurare sudo per consentire le esigenze specifiche sarebbe probabilmente la soluzione migliore.
Considerando quanto sopra, per quanto riguarda le build trasferibili, puoi provare a seguire le istruzioni elencate qui .
rpm --initdb --root /home/username/local --dbpath /home/username/local/lib/rpm
rpm --root /home/username/local --dbpath /home/username/local/lib/rpm \
--relocate /usr=/home/username/local --nodeps -ivh package.rpm
Le specifiche RPM contengono un'opzione chiamata 'trasferibile'. Se l'rpm è creato con la rilocatività attivata, può essere installato in una directory specificata dall'utente usando l'opzione '--prefix'. Quindi presumibilmente un rpm potrebbe essere installato localmente senza accesso da superutente purché siano soddisfatte due condizioni:
Ma, in generale, no, è necessario l'accesso da superutente per installare un RPM. Mentre esiste l'opzione trasferibile, non ho quasi mai visto un pacchetto che è stato creato per supportarlo.
Alcuni pacchetti possono essere trasferiti, quindi potrebbero funzionare bene senza root, basta specificare il prefisso durante l'installazione: rpm -i my.rpm --prefix = / my / home / cartella
Se il pacchetto non è trasferibile, è comunque possibile estrarre i file da RPM e provare a eseguirlo. È possibile estrarre i file RPM usando ad esempio:
Copia i file nella tua cartella ~ /, aggiungi eventuali librerie di dipendenza aggiuntive e spera per il meglio. Non garantito ma è possibile che alcuni pacchetti non trasferibili funzionino in questo modo.
È possibile forzare l'installazione in una directory diversa utilizzando un diverso dbpath. Inoltre, probabilmente non dovresti eseguire alcuno script direttamente senza verificarli.
Questo metterà un rpm nella directory corrente ed estrarrà gli script in modo da poterli modificare ed eseguirli se necessario.
rpm --install --badreloc --relocate /=`pwd` -dbpath `pwd`/rpm_db --nodeps --noscripts package.rpm
rpm --query --scripts -p package.rpm > scripts.txt
Sì, ma potresti non volerlo. Ho usato manifest personalizzati di marionette e pacchetti rpm per mantenere il software su cluster di calcolo su cui non avevo accesso root. In teoria è semplice come
rpm --inittb --root /foo
rpm --dbpath /foo -i bar.rpm
Tuttavia, ci sono delle stranezze nel modo in cui questo si comporta su EL4, EL5 ed EL6, quindi avrai bisogno di una serie diversa di passaggi e opzioni per ognuno. Non ho più queste informazioni a portata di mano. Quelle stranezze, così come i frequenti problemi del database RPM (forse dovuti a NFS), mi hanno fatto pentire usando rpm.
rpm
comando senza l'accesso sudo / root.