rpm sem raiz

12

É possível usar o rpm sem acesso root?

David Nehme
fonte

Respostas:

2

Dependendo do conteúdo do pacote, você pode simplesmente extrair o conteúdo do rpm e usá-lo de algum lugar no diretório inicial. Mesmo que não seja sinalizado como realocável. Se os binários no pacote tiverem caminhos codificados ou se o aplicativo exigir acesso root, talvez não seja possível.

Zoredache
fonte
1
isso está realmente incorreto, você não pode realmente executar o rpmcomando sem acesso ao sudo / root.
8

Existem muitas respostas sugerindo pacotes realocáveis. A opção de realocação é para os administradores escolherem o destino (tornar o destino / opt em vez de / usr / local, por exemplo) e não é realmente para permissões de usuário.

Embora seja possível contornar alguns problemas de permissão usando esse método, o principal problema é que, quando você executa operações rpm, está modificando os bancos de dados /var/lib/rpm/__db.* pertencentes a root: root. Então, como o JPerkSter disse "resposta curta = não". Configurar o sudo para permitir necessidades específicas provavelmente seria a melhor aposta.

Alex
fonte
8

Considerando todas as opções acima, em relação às compilações realocáveis, você pode tentar seguir as instruções listadas aqui .

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
Lee Gee
fonte
3

A especificação do RPM contém uma opção chamada 'relocável'. Se o rpm for construído com a relocabilidade ativada, ele poderá ser instalado em um diretório especificado pelo usuário usando a opção '--prefix'. Portanto, presumivelmente, uma rpm poderia ser instalada localmente sem acesso de superusuário, desde que duas condições fossem atendidas:

  1. O pacote foi originalmente construído para ser realocável
  2. O binário 'rpm' não tenta adicionar o pacote ao catálogo global do sistema

Mas, em geral, não, você precisa de acesso de superusuário para instalar um RPM. Embora a opção relocável exista, quase nunca vi um pacote que foi criado para suportá-lo.

Scott Pack
fonte
3

Alguns pacotes são realocáveis ​​e, portanto, podem funcionar bem sem raiz, basta especificar o prefixo ao instalá-lo: rpm -i my.rpm --prefix = / my / home / folder

Se o pacote não for realocável, você ainda poderá extrair os arquivos do RPM e tentar executá-lo. Você pode extrair arquivos RPM usando, por exemplo:

Copie os arquivos para a pasta ~ /, adicione bibliotecas de dependência adicionais e espere o melhor. Não garantido, mas você pode obter alguns pacotes não realocáveis ​​funcionando dessa maneira.

Datageek
fonte
2

Você pode forçá-lo a instalar em um diretório diferente usando um dbpath diferente. Além disso, você provavelmente não deve executar nenhum script diretamente sem vê-lo.

Isso colocará um rpm no diretório atual e extrairá os scripts para que você possa editá-los e executá-los, se necessário.

rpm --install --badreloc --relocate /=`pwd` -dbpath `pwd`/rpm_db --nodeps --noscripts package.rpm

rpm --query --scripts -p package.rpm > scripts.txt
user12722
fonte
2

Sim, mas você pode não querer. Usei manifestos fantoches personalizados e pacotes rpm para manter o software em clusters de computação nos quais eu não tinha acesso root. Em teoria, é tão simples quanto

rpm --inittb --root /foo 
rpm --dbpath /foo -i bar.rpm

No entanto, existem peculiaridades na maneira como isso se comporta no EL4, EL5 e EL6, portanto, você precisará de um conjunto diferente de etapas e opções para cada um. Não tenho mais essas informações à mão. Essas peculiaridades, bem como os problemas freqüentes do banco de dados RPM (talvez devido ao NFS), me fizeram arrepender de usar o rpm.

sciurus
fonte
1

Você pode criar RPMs sem acesso root, basta fazê-lo dentro do seu diretório doméstico. Quanto à instalação de RPMs, eu diria a resposta curta = não.

JPerkSter
fonte
-2

não, não é possível rpm sem acesso root, su ou sudo

Rajat
fonte