yum instala na página inicial do usuário para não administradores

51

Eu sou um usuário não administrador em um sistema de computador grande. Preciso de alguns pacotes atualizados que não estejam instalados no sistema. Eu quero usar o yum para instalá-los. Como usuário sem acesso sudo, admin ou root, posso usar o gerenciamento de pacotes para instalar pacotes no meu diretório pessoal? Eu sempre posso usar o make das fontes, mas poder usar o yum tornará a vida mais fácil.

alta largura de banda
fonte
11
não, a menos que o binário yum seja raiz suid (as chances são pequenas).
H3rrmiller
11
@ h3rrmiller, mas existe algum gerenciador de pacotes que possa instalar programas em $ HOME e, portanto, não exija acesso ao sudo? Eu sei que o MacPorts no OSX pode fazê-lo. Quais são essas opções para o Linux?
highBandWidth

Respostas:

8

A maioria dos binários é compilada para ser instalada em determinados locais abaixo /.

Existem gerenciadores de pacotes não raiz como o Gentoo Prefix e o Rootless GoboLinux e talvez 0install .

Como você disse, compilar a si mesmo aliviaria esse problema ou usaria um chroot. No entanto, seu maior obstáculo ao chrooting serão os pré-requisitos e a vinculação aos objetos compartilhados do kernel.

h3rrmiller
fonte
10
Chroot não é uma opção aqui. Você precisa ser root para chroot.
Marco
38

Em vez de usar yum, encontre os rpms desejados e faça o download deles. Você ainda não pode instalá-los diretamente sem ser root, mas os pacotes RPM são realmente arquivos .cpio sofisticados e é possível descompactar o conteúdo deles. A maneira mais fácil de fazer isso é provavelmente através do mcnavegador de arquivos ("midnight commander") (um dos melhores softwares de todos os tempos), que permite navegar pelo conteúdo de um .rpmarquivo e copiá-lo diretamente dele.

Sem isso, você pode usá rpm2cpio-lo para convertê-lo em .cpio e depois cpioextrair os arquivos para dentro e colocá-los nos lugares certos. Ambos já estarão instalados em um sistema redhat ou fedora. Aqui está um exemplo de instalação do "xsnow" (você provavelmente deseja fazer isso em um diretório vazio):

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

Observe que encontrei um .rpm apropriado para o meu sistema, fc17 x86_64. Isso é importante porque esses binários pré-compilados estão vinculados a outros componentes. Agora extraia o arquivo .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 eu navegar por essa árvore de diretórios, tudo o que preciso estará lá, exceto algumas das meta-informações que podem me ajudar a resolver dependências. Isso pode ser encontrado 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

Tenho certeza que já tenho todas essas coisas. Então agora tudo o que preciso fazer é colocar o executável xsnow no meu $ PATH, que já inclui uma lixeira no meu diretório pessoal:

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

Viola! Agora não consigo digitar xsnowe assistir a nada, pois, como se vê, o xsnow não funciona bem com o KDE :(, mas espero que o início do processo seja claro. Não precisei fazer nada fora do meu diretório pessoal.

Se você precisar instalar bibliotecas, também precisará criar um diretório em casa para elas e adicionar a ~/.bashrc:

export LD_LIBRARY_PATH=/home/you/lib
Cachinhos Dourados
fonte
@siamii Bem, você tem uma resposta melhor?
Marcin10
5
Ok, então que tal alguém criar uma ferramenta para criar arquivos cpio e depois copiar tudo para uma pasta não raiz, como ./usr/bin, para $ PREFIX / usr / bin etc., e também verificar e instalar dependências recursivamente.
highBandWidth 10/09
2
Dois anos e meio depois, obrigado pela resposta útil. Você pode fazer isso em uma linha com: mkdir xsnow; cd xsnow; wget -O - 195.220.108.108/linux/rpmfusion/nonfree/fedora/releases/17/… | rpm2cpio - | cpio -idv
Larry Engholm
11
Uso isso há mais de 2 anos no computador do escritório e funciona como um encanto todas as vezes. Quero expressar minha sincera gratidão a você. Desejo que a TI da minha universidade seja tão competente.
De vez em quando, ao executar isso, encontro um link simbólico Não é possível "...": Permissão negada ou cpio: ....: Não é possível abrir: Permissão negada, existe uma maneira de corrigir isso? Nota que eu criar esses arquivos sem sudo, mas, em seguida, por alguma razão, eu preciso usar sudo para desinstalá-los
Phylliida