Minha empresa usa um pequeno cluster desatualizado (CentOS 5.4) para fazer processamento de números (cálculos de elementos finitos para ser mais específico). Eles estão usando um pacote comercial e não têm ideia do Linux. Eles não querem mudar nada nas máquinas enquanto elas estiverem em funcionamento, o que aceito como uma política eficaz em termos de tempo. Eu façonãotêm direitos administrativos.
Posso fazer com que eles instalem pacotes menores, mas não alterem, por exemplo, a versão do python de 2.4 para 2.6+, então decidi compilar a versão atual ( ./configure --prefix=/home/mysuser/root2
) e tive alguns problemas com as dependências (versão errada de, por exemplo, readline, zlib, maldições , bz2 ... ou pacotes não encontrados). Também preciso atualizar o gcc, que reclama da falta de GMP
, MPFR
e MPC
.
A razão para fazer isso é que eu gostaria de compilar outro software de teste para rodar nessas máquinas. O que posso fazer para instalar efetivamente os pacotes necessários para compilar o software com o qual preciso trabalhar? Estou em outro lugar usandoarquilinuxe acharia muito útil poder fazer algo nesse sentido
pacman --root /home/myuser/root2 -S <package>
Mas não tenho ideia se isso é possível ou inteligente.
Outras questões relacionadas ao SE:prefixo gentooepkgsrcparece não ser tão fácil (posso estar errado, no entanto).
Responder1
Seu gerenciamento é sábio ao não tentar atualizar um cluster funcional que está executando uma função importante com base em um pacote proprietário.
Fazer backport de pacotes é demorado e arriscado, ou seja, nem sempre é viável. Você pode evitar a penalidade de tempo se conseguir encontrar os pacotes que deseja instalar no repositório original do CentOS 5.4 ou em algum repositório backport do CentOS 5.4. Embora você possa ter várias versões do GCC em um host ao mesmo tempo (o pessoal de sistemas embarcados/compilação cruzada faz isso o tempo todo), mas não é trivial ter mais de um glibc em um único ambiente de tempo de execução.
Portanto, é melhor trabalhar em um ambiente separado e mais recente que tenha os pacotes necessários e encontrar uma maneira de testar a saída do ambiente antigo no novo. De qualquer forma, não arrisque quebrar nada no ambiente antigo ou você pode precisar de todos os pontos de reputação do stackexchange.com que puder obter para encontrar seu próximo emprego ;-)
Responder2
Instalar pacotes de distribuições geralmente é difícil quando você não tem permissões de root, pois eles assumem um layout de diretório fixo e o sistema de dependência tende a exigir alguns pacotes com programas setuid ou setgid que você não pode instalar como não-root.
Compilar a partir do código-fonte geralmente é a maneira mais fácil. (E se você procura velocidade, pode escolher as melhores opções de compilação para o seu modelo de processador específico.)
Para organizar os pacotes que você compila (ou instala extraindo tarballs), recomendo usararrumarou o mais poderoso, mas mais complexoxstow. Seu modo básico de operação é instalar cada pacote em um diretório separado e, em seguida, criar links simbólicos para reuni-los todos. Aqui está uma sessão típica de compilação e instalação com stow:
tar xzf foobar-42.tar.gz
cd foobar-42
./configure --prefix=~/software/stow/foobar-42
make
make install
cd ~/software/stow
stow foobar-42
Esse último comando cria links simbólicos de arquivos e diretórios ~/software/stow
em ~/software
. Por exemplo, se ~/software/stow/foobar-42
contiver um lib/foobar
diretório e arquivos bin/foobar
e man/man1/foobar.1
, você terá links simbólicos
~/software/bin/foobar -> ../stow/foobar-42/bin/foobar
~/software/lib/foobar -> ../stow/foobar-42/lib/foobar
~/software/man/man1/foobar.1 -> ../../stow/foobar-42/man/man1/foobar.1
Para desinstalar um programa, execute stow -D foobar-42
no ~/software/stow
diretório e exclua o arquivo ~/software/stow/foobar-42
. Para tornar um programa temporariamente indisponível (por exemplo, para tentar outra versão), basta executar a stow -D
peça.
Veja tambémGerenciadores de pacotes não raiz;Melhor maneira de atualizar o vim/gvim para 7.3 no Ubuntu 10.04?