Como gerenciar o software instalado a partir da fonte?

14

Ocasionalmente, podemos ter que instalar algo da fonte devido a vários motivos. Embora seja bastante padrão como instalar o software, dadas as 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 instaladas imediatamente antes e apenas para o software instalado a partir da 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) e a versão (mais recente) do pacote (instalada a partir da fonte)?

skyork
fonte

Respostas:

8

O uso checkinstall make installcriará um pacote temporário e o instalará. Isso significa que ele é gravado no gerenciador de pacotes e pode ser desinstalado.

user54114
fonte
7

A melhor coisa a fazer seria criar os pacotes Debian das versões mais recentes. dpkge as aptferramentas fazem todas as três coisas que você menciona e se destinam a esse propósito. Use-os em vez de reinventar a roda. Existem muitos guias sobre embalagens disponíveis. Se o software já existe nos repositórios, você provavelmente pode obter o pacote fonte ( apt-get src) que pode ser usado para estudar e iniciar seu próprio pacote.

Esta resposta para /ubuntu//a/485230/158442 pode ser útil como orientação geral.

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

muru
fonte
obrigado pelas sugestões. Quando você disse 'o software já existe nos repositórios', presumo que você queira dizer os repositórios oficiais mantidos pelo Ubuntu. Nesse caso, em muitos casos, esses repositórios não fornecem versões mais recentes, especialmente em versões mais antigas do Ubuntu. Então apt-get srcprovavelmente não pode ajudar nesses casos.
skyork
@skyork talvez não. Mas você pode usar pacotes de versões mais antigas para estudar. Pode haver alguma personalização que os empacotadores fizeram, alguns scripts de manutenção personalizados. Não há razão para ignorar tudo isso e começar do zero. Reinventar a roda parece ser um tema aqui.
Muru
4

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

Da mesma forma, alguns como eu, criam um novo subdiretório subdiretório para cada nova versão e removem as versões mais antigas somente quando é garantido que não haja bugs significativos na nova versão que interromperiam meu trabalho.

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

  1. Desinstalação Limpa

    • Eu sugeriria criar um rem_dep.shscript que se pareceria com isso.

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

      Onde dep1, dep2, depnestão as dependências.

  2. Atualização limpa e fácil

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

      #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. Conflito de gestão

    • A melhor maneira é usar a --prefixopção ao instalar softwares e dependências.
    • Outra coisa importante é manter seu sistema atualizado para minimizar conflitos.

NOTA: Se você estiver compilando mais software do que deveria (defina um max_limitpara você, como 5, 10 ou 100), é melhor você sair do Ubuntu e migrar para o Arch Linux.

Usuário Registrado
fonte
3

Construir dependências:

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

  • Se esse software já tiver um binário incorporado nos repositórios Ubuntu ou PPA. O rastreamento de dependências durante a instalação deve ser mais fácil:

    sudo apt-get build-dep target_package
    

Desinstalação limpa:

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 e isolamento de arquivos instalados:

Instale-os em específico --prefix(de preferência --prefix=/opt/software_name-version/).

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

Mais sofisticado ou da melhor maneira, como a resposta do @muru, Construa um pacote Debian (para pacotes disponíveis nos repositórios Ubuntu / PPA)

user.dz
fonte