make installhace lo que el Makefileautor 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 ./configuregeneral le permite utilizar una opción de línea de comandos como --prefix /opt/apacheo 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/prefixestablecerá una variable en la Makefileque 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í makeconstruirá el software específicamente para la ubicación de instalación que desee y make installlo instalará en esa ubicación.
La mayoría de los programas pueden ejecutarse incluso sin el make installpaso final , solo ./program_nameque a menudo los iniciará. Esto definitivamente es algo por proyecto: algunos, como postfix, qmailetc., están formados por muchas piezas móviles diferentes y dependen de que todos trabajen juntos. Otros, como lso supodrí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 Makefiles escritos a mano son mucho más simples de escribir, y personalmente creo que distribuir un simple Makefilecon 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 installmantra es realmente fácil para los usuarios cuando funciona).
make installpasos desde el punto de vista de los programadores.