¿`make install` sobrescribe los archivos?

¿`make install` sobrescribe los archivos?

Me tomé un tiempo para instalar una versión más nueva de Apache2.x en mi Mac Os X 10.6.8.

Al configurar Apache a través de ./configure, especifiqué el diseño de Darwin. Este diseño asume la configuración de la ruta de la instalación de Apache existente, que es lo que quiero ya que mi objetivo es reemplazar la anterior.

Ejecuté make y luego, por supuesto, sudo make install.

Revisé la versión de Apache haciendo

apachetcl -v

y tengo

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

Lo que es bueno. Pero aquí viene la parte extraña. Revisé el archivo httpd.conf 'antiguo' en /etc/apache2 y tenía una fecha de modificación antigua.

Realmente no me di cuenta de eso hasta que intenté ejecutar Apache. Apache intentó cargar algunas extensiones que no eran compatibles con la nueva versión.

Esto me llevó a verificar el directorio /usr/libexec/apache2 y vi que los módulos no habían sido modificados recientemente excepto dos o tres. Esencialmente, sudo make install no había sobrescrito todos los archivos posibles.

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

Supongo que depende de cómo los desarrolladores escribieron el script de configuración y el Makefile.

Terminé haciendo algo de rm -rf en cualquier directorio de Apache existente que conocía antes de ejecutar make install nuevamente. Después de eso, todo quedó fresco.

Respuesta1

Tiene razón con respecto a que Makefilelas únicas cosas que suceden se definen en él o en los scripts complementarios que se ejecutan. Las "mejores prácticas" al actualizar el software desde el origen suelen ser utilizar la uninstallopción si no ejecutó make cleano eliminó el directorio de instalación del origen original.

Sin embargo, debe tener cuidado, si el programa tiene archivos instalados fuera de /usr/localusted, es posible que elimine los archivos agregados por el administrador de paquetes. A menudo, los archivos de configuración principales como los de Apache no son afectados y simplemente se eliminan durante la instalación y pueden conservarse o se conservan. Aunque este no es siempre el caso. Puede hacer una copia de seguridad de cada destino con la opción -bo --backuppara instalar.

Editar: Al observar Makefile.inla versión actual, httpdparece que varios de sus cpcomandos agregan el -pinterruptor que preserva la propiedad y las marcas de tiempo.

información relacionada