Usar checkinstall make install
criará um pacote temporário e o instalará. Isso significa que é registrado no gerenciador de pacotes e pode ser desinstalado.
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:
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)?
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?
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)?
Usar checkinstall make install
criará um pacote temporário e o instalará. Isso significa que é registrado no gerenciador de pacotes e pode ser desinstalado.
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.
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 .
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.
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.
Gerenciamento de conflitos
--prefix
enquanto instala softwares e dependências. 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>
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
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.
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)