make install
hace lo que el Makefile
autor quiere que haga. Por lo general, en este punto, es demasiado tarde para cambiar el directorio de instalación, como a menudo se sabe antes , durante la compilación, por lo que los archivos de ayuda y los archivos de configuración pueden referenciarse con las rutas correctas.
Muchos proyectos utilizan las herramientas automáticas GNU para tratar de mejorar su portabilidad entre las diferencias de hardware y sistema operativo. (Las diferentes variantes de Unix usan encabezados ligeramente diferentes para las declaraciones de funciones que están ligeramente fuera de la ruta habitual, excepto que la mayoría de los programas necesitan uno u otro de los declarados en diferentes ubicaciones)
Cuando un proyecto usa Autotools, el mantra normal para instalarlo es:
./configure
make
make install
El ./configure
general le permite utilizar una opción de línea de comandos como --prefix /opt/apache
o algo similar para especificar una ruta diferente. /usr/local/
Es un defecto común prefix
. Es mucho más fácil para el software creado localmente vivir en un solo lugar y el software proporcionado por la distribución para vivir en los "directorios principales": /usr/
/bin/
y así sucesivamente. (Los empaquetadores son muy cuidadosos de no tocar nunca los archivos /usr/local/
; saben que es exclusivamente para administradores de sistemas).
De todos modos, ./configure --prefix /path/to/new/prefix
establecerá una variable en la Makefile
que está disponible al compilar el programa, modificando las páginas del manual para que apunten a las ubicaciones correctas para los archivos, modificando los archivos de configuración, etc. Así make
construirá el software específicamente para la ubicación de instalación que desee y make install
lo instalará en esa ubicación.
La mayoría de los programas pueden ejecutarse incluso sin el make install
paso final , solo ./program_name
que a menudo los iniciará. Esto definitivamente es algo por proyecto: algunos, como postfix
, qmail
etc., están formados por muchas piezas móviles diferentes y dependen de que todos trabajen juntos. Otros, como ls
o su
podrían ser lo suficientemente autónomos como para ejecutarse bien desde el directorio en el que se crearon. (Esto a menudo no es útil, pero a veces es muy útil).
Sin embargo, no todos los proyectos usan Autotools: son enormes , complicados y miserables de mantener. Los Makefile
s escritos a mano son mucho más simples de escribir, y personalmente creo que distribuir un simple Makefile
con las variables de configuración disponibles es mucho más fácil tanto para los desarrolladores como para los usuarios. (Aunque el ./configure ; make ; make install
mantra es realmente fácil para los usuarios cuando funciona).
make install
pasos desde el punto de vista de los programadores.