Al pasar de Windows a Linux, no puedo entender el proceso de instalación de software en Linux. En Windows, cuando ejecutamos un archivo de instalación, le pregunta dónde desea instalar el programa, probablemente solo en la carpeta de archivos de programa. Más tarde, edita el registro. Esto se llama instalación en Windows. ¿Qué significa exactamente 'instalar software' en Linux exactamente?
Supongamos que descargué el código fuente, lo configuré y luego construí el binario usando make
. Ahora es solo un programa binario, no utilizable todavía. ¿Cómo se va a 'instalar'? Por make install
? ¿Y qué hace este comando exactamente?
make
installation
KawaiKx
fuente
fuente
make install
pasos desde el punto de vista de los programadores.Respuestas:
Make es un programa de flujo de trabajo de propósito general, generalmente usado para compilación. Pero se puede usar para cualquier cosa.
Cuando hace algo como "make all", el programa make ejecuta una regla llamada "all" desde un archivo en el directorio actual llamado "Makefile". Esta regla generalmente llama al compilador a compilar algún código fuente en binarios.
Cuando hace "make install", el programa make toma los binarios del paso anterior y los copia en algunas ubicaciones apropiadas para que se pueda acceder a ellos. A diferencia de Windows, la instalación solo requiere copiar algunas bibliotecas y archivos ejecutables y no existe un requisito de registro como tal. En resumen, "make install" solo copia archivos compilados en ubicaciones apropiadas.
fuente
all
enMakefile
y cómo se ve el marcador final de esa sección, para poder ver dónde seall
detiene el procesamiento de reglas .make install
hace lo que elMakefile
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:
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únprefix
. 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 laMakefile
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 ymake 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, comopostfix
,qmail
etc., están formados por muchas piezas móviles diferentes y dependen de que todos trabajen juntos. Otros, comols
osu
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 simpleMakefile
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).fuente
make install
no hace nada menos que ejecutar lainstall
función / sección en suMakefile
fuente
make clean
, básicamente solo ejecuta los códigos en la sección.Lo más importante que se debe mencionar con respecto a la instalación de software en Linux es que es mucho más confiable y fácil de instalar desde su distribución (¡este es su propósito!). Úselo solo
make install
si no hay otra forma (considere también programas alternativos).El error común de los usuarios de Windows es descargar programas de diferentes lugares e intentar instalarlos, olvidando revisar sus paquetes de distribución, que pueden instalarse con un solo clic o comando (en el administrador de paquetes).
Recuerde también que una de las principales razones de la ausencia de infecciones de virus en Linux es que el software está (o debería estar) instalado desde una ubicación central (confiable) en lugar de los muchos sitios aleatorios.
Como nota adicional, mientras que las distribuciones como Ubuntu siempre contienen paquetes obsoletos, también hay distribuciones como Arch Linux que siempre están actualizadas (aunque no ofrecen literalmente todos los programas lanzados para Linux, como Debian / Ubuntu).
En cuanto a lo que sucedería exactamente cuando use el administrador de paquetes, bueno, verificaría las dependencias, descargaría los paquetes, descomprimiría, colocaría todos los archivos en sus directorios apropiados, de acuerdo con las pautas de FHS y de distribución, y algunas otras rutinas que probablemente podría descubrir desde la página del manual del administrador de paquetes.
fuente