Como gerenciar o software instalado a partir do código-fonte?

14

Ocasionalmente, talvez tenhamos que instalar algo da origem devido a vários motivos. Embora seja bastante padronizado como instalar software com dependências apropriadas, não está claro para mim como gerenciar essa instalação para conveniência futura.

Mais especificamente:

  1. O que podemos fazer para garantir uma desinstalação fácil e limpa (incluindo as dependências que estão instaladas antes e apenas para o software instalado a partir do código-fonte)?

  2. O que podemos fazer para garantir uma atualização fácil e limpa do mesmo software, que provavelmente será instalado a partir da fonte novamente?

  3. O que podemos fazer para minimizar possíveis conflitos se houver um pacote padrão (instalado usando o apt-get), bem como a versão (mais recente) do pacote (instalada a partir do código-fonte)?

por skyork 23.06.2014 / 06:50

4 respostas

8

Usar checkinstall make install criará um pacote temporário e o instalará. Isso significa que é registrado no gerenciador de pacotes e pode ser desinstalado.

    
por user54114 23.06.2014 / 17:26
7

A melhor coisa a fazer seria fazer os pacotes Debian das versões mais recentes. As ferramentas dpkg e apt fazem as três coisas que você mencionou e são destinadas a esse propósito. Use-os em vez de reinventar a roda. Existem muitos guias sobre embalagens disponíveis. Se o software já existir nos repositórios, você provavelmente poderá obter o pacote fonte ( apt-get src ) que você pode usar para estudar e lançar seu próprio pacote.

Esta resposta ao link pode ser útil como uma diretriz geral.

Embora checkinstall seja ótimo para uma solução rápida e suja, a longo prazo você deve usar uma embalagem adequada.

    
por muru 23.06.2014 / 07:13
4

Antes de tudo, depende muito de como você gerencia seus códigos-fonte. Eu faço um diretório como ~/sources e coloco cada programa em seus subdiretórios, enquanto outros criam um novo diretório para cada programa.

Da mesma forma, alguns como eu, criam um novo sub-subdiretório para cada nova versão e removem versões mais antigas somente quando é assegurado que não há erros significativos na nova versão que parariam meu trabalho.

Não há uma maneira única de fazer isso, mas da maneira que você escolher, escolha uma maneira mais fácil de gerenciar .

  1. Limpar a desinstalação

    • Eu sugeriria criar um script rem_dep.sh que se parecesse com isso.

      #! /bin/bash
      sudo apt-get remove dep1 dep2 ... depn
      

      onde dep1, dep2, depn são dependências.

  2. Limpar & amp; atualização fácil

    • se você obtiver código-fonte de um sistema de controle de versão automatizado como git ou bazaar ou se os links forem previsíveis, você poderá criar um script de shell que será

      #1 make a backup of earlier version
      #2 get new source
      #3 configure, build/make the source
      #5 if make went correctly, remove earlier version.
      #6 make install new version, update dependencies if required.
      
    • Em outros casos também, você pode criar esses scripts com trabalho manual até certo ponto.

  3. Gerenciamento de conflitos

    • A melhor maneira é usar a opção --prefix enquanto instala softwares e dependências.
    • Outra coisa importante é manter seu sistema atualizado para minimizar conflitos.
  
    

OBSERVAÇÃO: Se você estiver compilando mais software do que deveria (defina um max_limit para si mesmo, como 5 ou 10 ou 100), é melhor sair do Ubuntu e ir para o Arch Linux. / p>   

    
por Registered User 23.06.2014 / 12:57
3

Construir dependências:

  • AFAIK eles devem ser gravados manualmente. Você pode criar um arquivo como o README para manter uma lista de dependências instaladas manualmente.

  • Se esse software já tiver construído um binário nos repositórios do Ubuntu ou do PPA. Acompanhar as dependências enquanto a instalação deve ser mais fácil:

    sudo apt-get build-dep target_package
    

Limpar desinstalação:

Mantenha a pasta de origem configurada e instalada. Melhor se você coletar todas as fontes em uma pasta específica com o arquivo de dependências instaladas.

Atualização limpa & amp; isolamento de arquivos instalados:

Instale-os em --prefix específico (preferencialmente --prefix=/opt/software_name-version/ ).

Isso resolverá muitos problemas: versões concorrentes com o do repositório; atualização limpa; mais fácil para a desinstalação suja, caso a fonte tenha sido excluída.

Mais sofisticado ou melhor, como @muru answer, Construa um pacote Debian (para pacotes disponíveis em repositórios Ubuntu / PPA)

    
por user.dz 23.06.2014 / 10:16