yum instalar no usuário home para não administradores

39

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

    
por highBandWidth 14.01.2013 / 18:25

2 respostas

5

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

Existem gerenciadores de pacotes não-raiz, como Prefixo do Gentoo e GoboLinuxRootless e talvez 0install .

Como você disse, compilar a si mesmo poderia aliviar esse problema ou usar um chroot. No entanto, seu maior obstáculo ao chrooting são os pré-requisitos e links para objetos compartilhados do kernel.

    
por 14.01.2013 / 18:54
25

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 na verdade arquivos .cpio, e você pode descompactar seus conteúdos. A maneira mais fácil de fazer isso é provavelmente através do navegador de arquivos mc ("midnight commander") (um dos maiores softwares de todos os tempos), que permite navegar pelo conteúdo de um .rpm e copiar arquivos diretamente de isso.

Sem esse, você pode usar rpm2cpio para convertê-lo em .cpio, depois cpio para extrair os arquivos 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 quer 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 são binários pré-compilados que estão vinculados a outros componentes. Agora extraia o .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 está 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 tenho que fazer é colocar o executável xsnow em meu $ PATH, que já inclui um bin no meu diretório home:

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

Viola! Agora eu posso digitar xsnow e não ver nada, já que o xsnow não funciona bem com o KDE :( mas espero que o jist do processo esteja claro. Eu não precisei fazer nada fora do meu diretório pessoal.

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

export LD_LIBRARY_PATH=/home/you/lib
    
por 14.01.2013 / 21:33

Tags