A 'make install' sobrescreve os arquivos?

5

Demorei algum tempo para instalar uma versão mais recente do Apache2.x no meu Mac Os X 10.6.8.

Ao configurar o apache através do ./configure, especifiquei o layout do Darwin. Esse layout assume a configuração do caminho da instalação existente do apache, que é o que eu quero, pois meu objetivo é substituir o antigo.

Eu corri make, então claro, o sudo make install.

Eu verifiquei a versão do Apache fazendo

apachetcl -v

e eu tenho

Server version: Apache/2.4.1 (Unix)
Server built:   Mar 31 2012 01:52:54

O que é bom. Mas então aqui está a parte estranha. Eu verifiquei o arquivo 'antigo' httpd.conf em / etc / apache2 e ele tinha uma data de modificação antiga.

Eu realmente não descobri isso até depois de tentar usar o apache. O Apache tentou carregar algumas extensões que não eram compatíveis com a nova versão.

Isso me levou a verificar o diretório / usr / libexec / apache2 e vi que os módulos não haviam sido modificados recentemente, exceto por dois ou três. Essencialmente, o sudo make install não havia sobrescrito todos os arquivos possíveis.

What is the convention here? Should make install overwrite everything or not?

Estou assumindo que isso depende apenas de como os desenvolvedores escreveram o script de configuração e o Makefile.

Acabei fazendo algum rm -rf em quaisquer diretórios do apache que eu conhecia antes de executar make install novamente. Depois disso, tudo estava fresco.

    
por Jerry Saravia 01.04.2012 / 01:15

1 resposta

7

Você está correto em relação ao Makefile , as únicas coisas que acontecem são definidas nele ou em scripts complementares executados. "Práticas recomendadas" ao atualizar o software a partir da origem geralmente é usar a opção uninstall se você não executou um make clean ou excluiu o diretório de instalação original.

Você precisa ser cuidadoso, porém, caso o programa tenha instalado arquivos fora de /usr/local , você pode remover arquivos que foram adicionados pelo gerenciador de pacotes. Muitas vezes, os arquivos de configuração principais, como o Apache, não são corrompidos e simplesmente excluídos durante a instalação, podem ou são preservados. Embora isso nem sempre seja o caso. Você pode fazer backup de todos os destinos com a opção -b ou --backup para instalar.

Editar: Observando o Makefile.in da versão atual de httpd , parece que vários dos seus comandos cp adicionaram a opção -p , que preserva a propriedade e os timestamps.

    
por 01.04.2012 / 01:57