Compilar desde el código fuente puede proporcionar una versión o función que no esté disponible en los repositorios configurados, pero transfiere de la distribución a ti el trabajo de integración, actualización y confianza. Prefiere un paquete compatible de la distribución cuando satisfaga la necesidad.
Paquetes · Lección 7
Compilar código fuente
Aprende a verificar, configurar, compilar, probar, preparar y registrar software compilado desde el código fuente.
Verificar y leer antes de compilar
Obtén el código fuente desde un canal autenticado de publicaciones del proyecto original. Verifica su firma o suma de comprobación a través de una ruta de confianza y después examina el archivo antes de extraerlo en un directorio de preparación sin privilegios. Lee archivos como README, INSTALL y SECURITY, así como la documentación de compilación del proyecto.
Las instrucciones de compilación son código ejecutable. Un script configure, una definición de compilación, una prueba o un complemento del compilador pueden ejecutar órdenes arbitrarias como tu usuario. No compiles código fuente que no sea de confianza ni ejecutes la compilación propiamente dicha con sudo.
¿Por qué debe ejecutarse normalmente el paso de compilación sin sudo?
Instalar los requisitos de compilación
En un sistema de desarrollo de la familia Debian, un punto de partida habitual es:
$ sudo apt install build-essential
Esto instala un compilador básico y herramientas de compilación, no todas las dependencias que necesite cualquier proyecto. Los proyectos también pueden necesitar entornos de ejecución de lenguajes, generadores, herramientas de sistemas de compilación, cabeceras de desarrollo o versiones exactas de bibliotecas. Instala los requisitos desde repositorios de confianza y distingue las dependencias de compilación de las dependencias de ejecución.
¿Qué proporciona build-essential en un sistema de la familia Debian?
Configurar y compilar
Un proyecto tradicional de estilo Autoconf utiliza:
$ ./configure --prefix=/usr/local
$ make
configure comprueba el entorno y genera archivos de compilación según las opciones seleccionadas. make lee reglas de dependencias y órdenes, normalmente desde un Makefile, y crea los objetivos solicitados.
Esta secuencia no es universal. Los proyectos pueden utilizar CMake, Meson, Ninja, herramientas específicas de un lenguaje o scripts personalizados. Sigue la documentación de la versión exacta en vez de ejecutar ./configure solo porque resulte familiar. Un directorio de compilación separado del árbol del código fuente puede mantener aparte los archivos generados cuando el sistema de compilación lo permita.
En el flujo de trabajo tradicional, ¿qué hace make?
Probar antes de instalar
Ejecuta el objetivo de pruebas documentado por el proyecto, por ejemplo:
$ make check
El objetivo real podría ser test, check o una orden independiente. Investiga los fallos en vez de instalar resultados que no se hayan probado. Las pruebas pueden necesitar acceso a la red, servicios, hardware especial o aislamiento; revísalas antes de ejecutarlas igual que revisas el resto del código de compilación.
¿Qué debes hacer cuando falla el conjunto de pruebas documentado?
Preparar y registrar la instalación
sudo make install puede copiar archivos directamente en prefijos del sistema sin registrarlos en la base de datos de paquetes nativa. Los objetivos de desinstalación son opcionales y pueden estar incompletos, mientras que las actualizaciones posteriores pueden sobrescribir archivos o dejarlos huérfanos.
Prefiere uno de estos métodos controlados:
- crear un paquete nativo oficial con las herramientas de empaquetado de la distribución
- instalar bajo un prefijo claramente separado, como
/usr/local, cuando la política lo permita - preparar los archivos en una raíz temporal de empaquetado mediante un mecanismo compatible como
DESTDIR - utilizar un prefijo de usuario sin privilegios, un entorno aislado o un contenedor cuando sea apropiado
checkinstall puede crear un paquete sencillo para algunos flujos de trabajo con make install, pero no es universal ni sustituye una receta de paquete revisada y con la calidad de una distribución. Nunca lo trates como una regla que se deba aplicar «siempre». Antes de cualquier copia con privilegios, examina la lista de archivos preparados, la propiedad, los permisos, las rutas y el plan de desinstalación o actualización.
¿Qué finalidad tiene una instalación de preparación compatible con DESTDIR?
Utiliza Compilar software desde el código fuente en Linux en un entorno desechable para practicar el flujo de trabajo sin mezclar archivos experimentales con un sistema de producción.
Lección completada
Has completado Compilar código fuente
Ahora puedes abordar la compilación desde el código fuente como un flujo controlado de suministro de software.
Autentica el código fuente y revisa sus instrucciones como código ejecutable.
Instala requisitos de compilación explícitos desde repositorios de confianza.
Configura, compila y prueba sin privilegios innecesarios.
Prepara y examina los resultados antes de instalarlos en el sistema.
Registra los archivos instalados mediante paquetes nativos o un prefijo aislado elegido deliberadamente.
Guarda tu progreso
Crea una cuenta gratuita para guardar esta lección y continuar en cualquier dispositivo.
Crear una cuenta gratuita