Gerenciando a instalação de software sem distribuição

2

Estou procurando maneiras de gerenciar a instalação de software sem distribuição, com várias versões do mesmo software instaladas simultaneamente. Por exemplo, teríamos o ProgramA 1.6 e o ProgramB 1.7 instalados simultaneamente, e os usuários seriam capazes de alternar entre eles.

Uma solução comum para isso parece ser módulos de ambiente que eu sei que é usado com sucesso em muitos sites acadêmicos. Os usuários podem então executar module load ProgramA/1.6 e, em seguida, executar ProgramA obteria a versão correta. Então conceitualmente eu posso manter um repositório de todos os modulefiles que os usuários usariam para ativar o ambiente certo.

Meu problema reside principalmente em criar uma maneira reproduzível de realmente construir o software usado pelos módulos. Eu precisaria de uma maneira reproduzível para construir cada pacote de software. Qual seria uma boa maneira de fazer isso? É possível alcançar com RPMs em um local de raiz alternativo e / ou db de RPM alternativo? Existe outra ferramenta que eu poderia usar para gerenciar as compilações de software? Devo apenas remendá-lo junto com scripts de shell?

A plataforma em que estamos rodando é o Scientific Linux 6, que é basicamente equivalente ao Red Hat 6.

    
por Kamil Kisiel 02.03.2012 / 00:39

3 respostas

1

Você pode configurar seu próprio repositório e criar RPMs para o seu software.
Se você mantiver várias versões no repositório, poderá instalar facilmente a versão desejada através do yum cli.

Para configurar seu próprio repositório, veja aqui: clique em

    
por 02.03.2012 / 03:39
1

Sugestões:

  1. Se o seu software não precisar ser instalado via rpm, dê uma olhada no comando alternatives .
  2. Se o seu software for escrito em python, você poderá usar virtualenv .
  3. Se o seu software estiver escrito em ruby, você poderá usar rvm .
por 04.03.2012 / 11:44
1

Uma maneira razoavelmente simples de conseguir isso seria usar Stow para instalar cada versão do software em seu próprio local, em seguida, permita que os usuários usem stow (por exemplo, via sudo ) para reenrolar a versão do aplicativo ou use as funções do shell para redefinir PATH para apontar para a versão do software diferente.

Eu faço algo semelhante a isso (sem stow ) para servidores Sybase que possuem várias versões de banco de dados executadas neles. Eu tenho um script chamado setenv.sh , que se parece com algo como:

#!/bin/sh

case $1 in
  12.5|125)
      echo "Setting environment for ASE 12.5"
      export SYBASE=$HOME/ase125
      # ... some other stuff
      ;;
  15.0|150)
      echo "Setting environment for ASE 15.0"
      export SYBASE=$HOME/ase150
      # ... some other stuff
      ;;
esac
    
por 04.03.2012 / 13:01