Como posso instalar um RPM sem ser root?

49

Como posso instalar um RPM em uma máquina em que não tenho permissões de root? Quero instalar um pacote para meu uso apenas em um diretório pessoal de trabalho. Estou executando o SuSe SLES10.

Por favor, não me chame com "Essa ideia é tão idiota que você não deve fazê-lo, porque todos os pedidos devem passar pelo deus raiz da empresa, que ele viva para sempre".

Eu sei que posso pedir isso ao deus raiz, mas serei derrubado (por razões imaculadas e impecáveis, tenho certeza ...). Além disso, ele nunca vai conseguir instalá-lo, mesmo que ele diga que o fará.

Ross Rogers
fonte
6
Isso não é uma duplicata. A substituição do caminho nem sempre permite que um usuário não privilegiado utilize rpm.
John T
Obrigado HarryMC. Vou verificar isso. Além disso, adicionar link ao outro ticket que as pessoas achavam que o meu era uma duplicata. Talvez o pão vai ajudar alguém: superuser.com/questions/160530/override-rpm-install-path
Ross Rogers
Para um futuro melhor, veja appimage.org .
21818 Ross Rogers

Respostas:

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

Consulte Como extrair um pacote RPM sem instalá-lo (comando rpm extract) .

harrymc
fonte
2
Eu fiz isso e o cpio parece não fazer nada, exceto imprimir '1 bloco'. Fiz algo de errado?
Node Parsons
Obrigado. Acontece que eu era capaz de instalar a partir do código, então eu não precisa se preocupar com RPMs
Nate Parsons
10
Isso apenas descompacta o conteúdo do RPM e o despeja onde você estiver. Isso não significa que as obras de resultado (a sua configuração não é onde deveria estar, ...)
vonbrand
Gostaria de poder dar-lhe alguma recompensa de reputação de caridade. Obrigado!
macetw
3

Como extrair o conteúdo dos pacotes rpm

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

Como extrair tar.gzarquivo

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

Como extrair tar.gzpacotes para o diretório atual

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

Como criar binários como não raiz

./configure --prefix=$HOME && make && make install
Yordan Georgiev
fonte
1

Outra opção é instalar a partir da fonte, onde geralmente você pode alterar o diretório de instalação usando o --prefixswitch.

John T
fonte
11
É o que normalmente faço, mas esperava mais automação.
Ross Rogers
2
Para mim, isso não funciona porque tenta obter um bloqueio de arquivo em algo em / var (e a permissão é negada).
Nir Friedman
0

Eu acho que a resposta "real" para "instalar" um rpm sem privilégios de root é que você não pode . MAS supondo que você possa realmente iniciar o processo de instalação ...

Os RPMs são instalados usando uma lista de instruções fornecidas em um arquivo de especificação (.spec) que geralmente segue a Hierarquia do sistema de arquivos. A maioria dos caminhos nessa hierarquia são quase sempre caminhos do sistema operacional e não caminhos do usuário. Portanto, a menos que seu nome de usuário tenha acesso a todos os caminhos em que o RPM instala, certamente falhará. Se você criar um RPM que prefixa todos os seus caminhos com /home/me(ou algum outro caminho que você possui), ele funcionará. Isso exigiria a aquisição de um src.rpm e a extração conforme explicado em outras respostas, depois a reconstrução. Quando você fizer isso, considere apenas obter acesso root ou criar o software a partir do zero (geralmente o que você faz se não planeja distribuir o software em muitas máquinas).

Existem truques inteligentes para ajudá-lo no processo de criação manual. Por exemplo, você pode utilizar as dependências já listadas em um RPM para obter todas as suas dependências: https://stackoverflow.com/a/13877738/1236128 .

Jonathan Komar
fonte