Como devo instalar o software a partir do código-fonte para que eu possa tornar minha configuração gerenciável e reproduzível?

2

Eu trabalho com muitos softwares científicos em distribuições Linux (normalmente variantes do Debian e variantes do Red Hat). Para maximizar o desempenho e obter acesso aos recursos mais recentes, geralmente é preferível compilar o software a partir do código-fonte.

No entanto, isso é confuso e pode levar a conflitos com o gerenciador de pacotes. Analisei todas as sugestões no Unix & Linux pergunta "Como compilar e instalar programas da fonte" e o Unix & Questão do Linux Onde devo colocar o software que eu compilo da fonte? para alguma orientação. Essas perguntas são um bom ponto de partida, mas não está claro para mim como posso gerenciar as dependências facilmente. Por exemplo, se eu construir o ramo de desenvolvimento de NumPy da fonte usando algo como checkinstall , como devo detectar dependências para que eu possa adicioná-las corretamente no pacote criado pelo checkinstall? Meu objetivo aqui é tornar a instalação e a desinstalação de software relativamente indolor, sem sobrecarregar minha configuração.

Eu também gostaria de tornar minha configuração repetível. Com isso, quero dizer, gostaria de criar um fluxo de trabalho para instalar software na minha máquina, para que eu pudesse repeti-lo exatamente em uma nova instalação do sistema operacional. Existe uma prática recomendada para isso? Quando se trata de pacotes padrão em um gerenciador de pacotes, o método mais simples para repetir uma instalação de software é criar um script contendo o apt-get install <package> (ou equivalentes) apropriado. No entanto, ao instalar o software a partir do código-fonte, pude ver esse método ficando muito complicado. Existe uma maneira melhor?

    
por Geoff Oxberry 11.06.2012 / 00:36

1 resposta

1

O Caminho Certo é construir pacotes (RPMs / Debs) desse software e apenas instalar pacotes. É a única maneira que se integra corretamente ao gerenciador de pacotes e lida com as dependências corretamente. Eu sugiro que você aprenda como os RPMs / Debs são construídos, e então encontre as embalagens existentes daquele software para basear seus pacotes.

Os módulos Python podem ser empacotados e instalados em todo o sistema e geralmente funcionam com virtualenvs (a menos que você esteja usando --no-site-packages ). Se isso é melhor do que instalar diretamente no virtualenv com pip , é menos claro. Os pacotes são mais pesados, mas as instalações virtualenv tendem a ser menos repetíveis, porque você pode se surpreender com novas versões.

Para definir a lista de pacotes que compõem seu sistema, sugiro criar um meta-pacote , que é um pacote não contém arquivos, mas tem dependências. Este metapacote dependeria de todos os pacotes necessários (tanto os pacotes que você construiu quanto os pacotes upstream). Instalar um novo sistema é simplesmente um caso de instalar esse metapacote.

    
por 11.06.2012 / 04:20