O que é um método eficaz para instalar software atualizado em uma máquina de produção desatualizada?

5

Desculpas, se isso já foi perguntado, mas eu sou tão iniciante, nem sequer posso expressar uma consulta de pesquisa para isso.

Plano de fundo

Minha empresa usa um pequeno cluster desatualizado (CentOS 5.4) para fazer processamento de números (os cálculos de elementos finitos são mais específicos). Eles estão usando um pacote comercial e não têm idéia do Linux. Eles não querem mudar nada nas máquinas enquanto operam, o que eu aceito como uma política de tempo efetivo. Eu faço não ter direitos administrativos.

Eu posso instalar pacotes menores, mas não alterar, a versão python de 2.4 para 2.6+, então eu 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, curses, bz2 ... ou pacotes não encontrados ). Eu também preciso atualizar o gcc que reclama sobre a falta de GMP , MPFR e MPC .

O motivo para fazer isso é que eu gostaria de compilar outros softwares de teste para serem executados nessas máquinas. O que posso fazer para instalar com eficiência os pacotes necessários para compilar o software com o qual preciso trabalhar? Eu estou em outro lugar usando o archlinux e acho bastante útil ser capaz de fazer algo ao longo das linhas

pacman --root /home/myuser/root2 -S <package>

Mas não tenho ideia se isso é possível ou inteligente.

Outras questões SE relacionadas: prefixo do gentoo e pkgsrc parece não ser tão fácil (posso estar errado , embora).

    
por Sebastian 02.04.2012 / 06:58

2 respostas

3

Seu gerenciamento é sábio ao não tentar atualizar um cluster em funcionamento que esteja desempenhando uma função importante com base em um pacote proprietário.

Os pacotes de backporting são demorados e arriscados, isto é, nem sempre é viável. Você pode evitar a penalidade de tempo se puder 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 (os sistemas embarcados / pessoas de compilação cruzada fazem isso o tempo todo), mas não é trivial ter mais de um glibc em um único ambiente de tempo de execução. / p> Portanto, é melhor que você trabalhe em um ambiente separado e mais novo que tenha os pacotes necessários e encontre uma maneira de testar a saída do ambiente antigo no novo. Em qualquer caso, não arrisque quebrar nada no ambiente antigo ou você pode precisar de todos os pontos de reputação do stackexchange.com que você pode encontrar para encontrar seu próximo trabalho; -)

    
por 02.04.2012 / 08:46
2

A instalação de pacotes a partir de distribuições costuma ser difícil quando você não tem permissões de root, pois elas 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 .

A compilação a partir da origem é mais frequentemente do que a maneira mais fácil. (E se você estiver atrás da velocidade, você pode escolher as melhores opções de compilação para o seu modelo de processador particular.)

Para organizar os pacotes que você compila (ou instala extraindo tarballs), eu recomendo usar armazenamento ou mais poderoso mas mais complexo xstow . Seu modo básico de operação é instalar cada pacote em um diretório separado e, em seguida, criar links simbólicos para colocá-los todos juntos. Aqui está uma típica 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 em ~/software/stow under ~/software . Por exemplo, se ~/software/stow/foobar-42 contiver um diretório lib/foobar e os 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 diretório ~/software/stow e exclua ~/software/stow/foobar-42 . Para tornar um programa temporariamente indisponível (por exemplo, para tentar outra versão), basta executar a parte stow -D .

Veja também Gerentes de pacotes não-raiz ; Melhor maneira de atualizar vim / gvim para 7.3 no Ubuntu 10.04?

    
por 03.04.2012 / 02:12