Ao atualizar um pacote com make install, devo executar make uninstall para o pacote pré-existente primeiro?

2

Se eu não conseguir executar o make uninstall primeiro, o resultado típico não é pior do que simplesmente ter arquivos não utilizados por aí?

Se o dado for sim, a resposta é universalmente aplicável ou depende do pacote? Os documentos do automake indicam que um destino de desinstalação é criado, mas talvez existam exceções.

Obrigado

    
por Paul Carey 15.08.2009 / 15:40

2 respostas

2

Não há como garantir que o processo de desinstalação da nova versão fará a coisa certa com a versão que você instalou. Você também precisa ter certeza de que você tinha opções de configuração idênticas com a sua versão nova e antiga. O risco de fazer algo errado é muito grande, especialmente se você estiver executando isso como root.

Esta é uma das muitas razões pelas quais a criação de pacotes apropriados para o seu sistema é tão útil. Criar pacotes Debian ou RPM não é difícil, e existem ferramentas como o dh-make, que lhe dão 90% do trabalho necessário, especialmente para pacotes baseados em autotools. As vantagens de usar o empacotamento são que, quando você atualiza, você sabe que nenhum dos arquivos da versão anterior está instalado e que você sabe quais arquivos o pacote criou em seu sistema. Você também pode manter o conhecimento de como o pacote anterior foi criado e pode repetir a construção com uma versão mais nova. Se você compilar a partir da fonte usando "./configure; make; make install", haverá a chance de você perder o conhecimento de quais opções foram usadas, qual processo você usou, quais correções foram aplicadas.

Essas vantagens definitivamente valem o pequeno investimento de aprendizado para empacotar seu próprio software.

    
por 15.08.2009 / 16:05
0

Tente usar algo como checkinstall quando for obrigado a instalar a partir da origem. (também pode construir pacotes rpm / deb)

Concorde com David Pashley que construir os pacotes apropriados é o melhor caminho.

    
por 15.08.2009 / 17:29

Tags