Trucos de verano… Instalando mis programas en Debian y derivados desde el código fuente (compilación obsesiva)

compilingEn Posts anteriores les he hablado de mi pasión por compilar yo mismo la mayoría de las aplicaciones que utilizo en aras de tener mi sistema operativo Ubuntu lo más actualizado posible (A pesar del rumbo de Canonical, me considero fiel a esta distro, así que si quieren quémenme en la hoguera y échenme al río 🙂 ). Hace unos días @Hyuuga_Neji me invitaba a escribir alguna guía sobre como compilar y crear paquetes deb para Debian y derivados.

Escribir un artículo o guía que enseñe a compilar aplicaciones y crear paquetes deb es algo complicado ya que cada aplicación suele traer sus métodos diferentes; cómo mismo dicen que cada maestro tiene su librito, cada aplicación trae su método de compilación, que aunque en su mayoría suelen seguir secuencias de comandos similares, siempre hay que tomar en cuenta las particularidades. En este pequeño artículo que les dejo hoy tomando como referencia algo escrito por David Gomez en la web emsLinux, no veremos como crear paquetes deb, solo nos detendremos a aclarar pasos generales a la hora de compilar e instalar directamente los paquetes fuentes que nos descarguemos de la web oficial de cada proyecto que necesitemos.

Aunque hace unos días he dejado algo de lado a mi amado Ubuntu para dar paso a mi añorado ArchLinux, para escribir este artículo me basaré en mis experiencias propias en Ubuntu (lo escrito a continuación lo he probado personalmente en muchas distros basadas en Debian como Ubuntu, Linux Mint, NOVA, Zorín, Elementary OS, SolusOS y otras y muchos pasos son válidos para cualquier distro en general, de hecho, salvo lo referente a apt-file, lo demás debe servirles en cualquier distro). No creo que una guía de este tipo sea necesaria para ArchLinuxeros porque el carácter de Rolling Release de esta distro, nos evita compilar paquetes constantemente gracias a la casi total actualización de sus repositorios.

Instalar programas nuevos en Ubuntu es actualmente una de las tareas mas sencillas que podemos llevar a cabo en un sistema operativo GNU/Linux, gracias a herramientas como el Centro de Software de Ubuntu, Synaptic, Muon, Gdebi y otros frontends de APT.

Una historia bien diferente es cuando por algún motivo queremos o necesitamos utilizar el sistema tradicional de instalación de paquetes en Linux que usa las fuentes o código fuente de la aplicación que necesitamos, disponible generalmente en los sitios web oficiales de cada proyecto, ya sea porque no podemos encontrarla en los repositorios oficiales o simplemente porque queremos instalar una versión más reciente o de desarrollo de la aplicación en cuestión.

A continuación aprenderemos en cuatro sencillos pasos cómo instalar programas en Debian y derivados directamente desde el código fuente provisto por los desarrolladores de estos programas.

Preparar el sistema para la construcción de paquetes

Debian y familia generalmente no traen de forma predeterminada los paquetes necesarios para la compilación o construcción de paquetes, por lo que es necesario instalar los paquetes build-essential y checkinstall para poder comenzar a instalar programas desde el código fuente de forma exitosa.

Estos paquetes podemos instalarlos directamente desde los repositorios oficiales por medio del siguiente comando:

sudo apt-get install build-essential checkinstall

Probablemente necesites descargar archivos fuentes de proyectos que no cuentan con una versión de lanzamiento oficial directamente desde los servidores que los almacenan, en ese caso las siguientes herramientas te serán útiles:

sudo apt-get install cvs subversion git-core mercurial

Por motivos de organización, es recomendable tener un directorio especifico donde construir todos los paquetes a instalar, sin embargo, puedes utilizar cualquier directorio disponible en tu disco duro.

En caso de querer tener un directorio particular para estos menesteres, Debian y sus múltiples hijos recomiendan utilizar el directorio /usr/local/src y puedes dejarlo listo mediante la ejecución de los siguientes comandos:

sudo chown $USER /usr/local/src
sudo chmod u+rwx /usr/local/src

Recuerda reemplazar la palabra $USER con tu nombre de usuario.

Ya estamos listos entonces para comenzar a descargar los paquetes necesarios e instalar programas en Debian o cualquiera de sus descendientes desde el código fuente.

Conseguir el software que quieres

Normalmente el software descargado en forma de código fuente viene en paquetes llamados tarballs, los cuales no son más que los archivos de la aplicación archivos comprimidos en formatos .tar.gz o .tar.bz2.

Si has descargado un archivo de este tipo, primero muévelo al directorio que hemos creado en el paso anterior y desempaquétalo haciendo clic derecho sobre el archivo y eligiendo la opción “Extraer aquí” o bien ejecutando alguno de los siguientes comandos.

Para archivos .gz

tar -xzvf nombredeltarball.tar.gz

Para archivos .bz2

tar -xjvf nombredeltarball.tar.bz2

Al desempaquetar los archivos descargados, generalmente se creará un nuevo directorio con el nombre y la versión de la aplicación que deseamos instalar, podemos entonces ubicarnos en este directorio para comenzar con el proceso de construcción del paquete.

Normalmente los desarrolladores incluyen una lista de procedimientos a realizar para instalar programas desde el código fuente de forma exitosa contenidos en el archivo README, así que es altamente recomendable que leas este archivo antes de comenzar con la construcción, pues los procedimientos pueden variar con cada aplicación (¿Recuerdan que al inicio les decía que cada maestro tiene su librito?).

Resolviendo las dependencias

Un problema común cuando de instalar programas desde el código fuente se trata es que no contamos con todas las dependencias necesarias para construir los paquetes de la aplicación que queremos instalar, podemos darnos cuenta de esto al momento de ejecutar el comando ./configure dentro del directorio de la aplicación o programa que hemos descargado.

Para hacernos la vida un poco más sencilla al momento de instalar programas desde el código fuente en Debian y su prole contamos con una aplicación llamada apt-file, aplicación que nos permite conocer cuales son los paquetes que contienen los archivos o dependencias necesarias para construir correctamente el paquete e instalar programas desde el código fuente sin inconvenientes.

Para usar apt-file primero debemos instalarlo y actualizar su base de datos mediante la ejecución del siguiente comando:

sudo apt-get install apt-file && sudo apt-file update

Ten en cuenta que la actualización de la base de datos no devuelve ningún tipo de texto en la terminal, así que no vayas a cancelar el proceso pensando que esta bloqueado o que no funcionó.

Si ya tenemos apt-file instalado, vamos a continuar con el proceso de construcción mediante la ejecución del siguiente comando estando ubicados dentro del directorio principal de la aplicación descargada:

./configure

Este comando ejecutará la verificación del sistema para garantizar la correcta instalación de la aplicación en cuestión y nos informará si existe algún archivo o dependencia no cumplida para la correcta construcción del paquete.

En caso de que esto ocurra, haremos uso de la aplicación apt-file de la siguiente manera para encontrar el paquete que nos hace falta para la correcta construcción de la aplicación:

apt-file search nombredelpaquete.extensión

Este comando nos permitirá conocer cual es el paquete que necesitamos para luego instalarlo por medio de apt-get antes de poder comenzar a instalar programas desde el código fuente.

sudo apt-get install paqueterequerido

Después de instalar la dependencia, corremos de nuevo el comando ./configure para verificar de nuevo que todo este bien.

Es importante entender que el comando ./configure configurará la aplicación con los valores predeterminados que esta trae, sin embargo, la mayoría de aplicaciones ofrecen a sus usuarios la posibilidad de configurar aspectos importantes de la misma a través de este comando. Para conocer más acerca de las opciones de configuración que ofrece la aplicación, lee cuidadosamente el archivo README o INSTALL que se encuentra en el directorio principal de la aplicación descargada.

Construir e instalar programas en Debian y distribuciones derivadas (bueno, prácticamente en cualquier distro)

En este punto ya hemos pasado por lo más difícil, ahora solo queda ejecutar un par de comandos y esperar un buen rato dependiendo de la aplicación y tu computadora para instalar programas en nuestro sistema GNU/Linux desde el código fuente de forma exitosa.

El primero de estos comando es make, el cual comenzar con la compilación del código fuente descargado en tu computadora, así que lo único que tienes que ejecutar en la terminal estando ubicado en el directorio principal de la aplicación es el siguiente comando:

make

Después de un buen rato de espera dependiendo del tamaño de la aplicación o la velocidad de tu computadora, podemos continuar con el siguiente comando, el cual nos permitirá finalmente instalar programas en tu Debian o derivado después de haberlos compilado o construido correctamente:

sudo checkinstall
La forma tradicional de instalar programas ya compilados en Linux es haciendo uso del comando make install, sin embargo, el comando checkinstall pone la aplicación en el administrador de paquetes, haciendo su manejo y posterior desinstalación mucho más sencilla.

 En caso de que tengas problemas de instalación usando checkinstall, ejecuta el siguiente comando en la terminal el cual debería permitir la correcta instalación de los paquetes compilados:

sudo checkinstall --fstrans=0

Eso es todo, si los pasos descritos anteriormente han finalizado sin problema alguno, ya puedes ejecutar la aplicación y comenzar a utilizarla.

Consideraciones finales

Desgraciadamente no todas las aplicaciones se compilan por la vía fácil ./configure … make … make install, pero si quieres ir introduciéndote poco a poco en el arte de armar tu propio muñeco GNU/Linux, deberías comenzar por compilar paquetes de este tipo.

Casualmente, mientras termino de escribir este artículo, acabo de compilar una versión actualizada de Unetbootin, herramienta sin la cual me sería imposible probar mis ISOs engendrados en casa sin necesidad de gastar unos cuantos CUC en CDs o DVDs. Nada de ./configure  make  make install, me tuve que leer el archivo README:

unetbootin

Anímate, compilar no muerde [ Yo sí 🙂 ]

Fuente:

http://emslinux.com/

https://help.ubuntu.com

¿Te resultó interesante? Compártelo ...



Maikel Llamaret Heredia

Publicado por Maikel Llamaret Heredia

https://swlx.info » Facebook » Twitter » Google+ » Linkedin » Forma parte de GUTL desde el 6 diciembre, 2011. Parte de la familia GUTL. Usuario de Tecnologías Libres desde hace varios años. Fiel a GNU/Linux y las filosofías del Software Libre y el Código Abierto. Linux User # 587451. Creador y actual mantenedor del Proyecto SWL-X. Freelancer dedicado al Desarrollo / Diseño Web y Marketing Online. Creador de Web & Media Integrated Solutions

Este artículo tiene 11 comentarios

      • Usted tiene razón, eso lo hago yo también, pero siempre es bueno tener el ISO, para los amigos o futuras instalaciones, así ahorramos tiempo a la hora de instalar es menos paquetes que actualizar.

        Saludos, y gracias por tu aporte a la comunidad.

  1. Excelente guía, Maikel, solo añadir que en Debian padre tampoco viene instalado por defecto el kit de compilación (paquetes: make y gcc), ni los headers del kernel, si lo que van a instalar son módulos nuevos (de drivers, por ejemplo). Así que tienen que verificar primero si los trae instalado. Esto solo, repito, es para Debian padre, el resto de las distribuciones que mencionas de ejemplo, sí los trae. 😉

  2. Maikel:

    Guía intuitiva y explícita. Así es cómo debe ofrecerse la luz a los que buscan el camino, al menos esa es mi opinión.

    Bien por nuestra fémina al hacer la aclaración pertinente y completar el tutorial.

    Un saludo cordial.

  3. Además, y con permiso de mi amigo Llamaret, yo recomendaría en la parte que se refiere a la preparación previa del sistema y luego a la resolución de las dependencias, hacer ante todo una actualización del sistema, sobre todo si se quiere instalar una aplicación muy reciente. ¿Por qué? Porque a veces no solo nos faltan las dependencias, sino que a lo mejor las tenemos instaladas pero en una versión más atrasada de la que necesita X aplicación que se va a compilar, así que si no tienes el sistema actualizado, por más que le pidas a «apt-get» (o aptitude/synaptic) instalar tal o más cual dependencia, no va a instalarte la más actualizada. Así que sugiero en primer lugar:
    «apt-get update»
    y si es posible «apt-get upgrade»,
    y luego,
    «apt-get install xdependencia»
    Chao. 😉

  4. Un truco, al instalar con «checkinstall -D» para algunos paquetes puede dar error la primera vez, lo que hago es hacer make install normal y luego checkinstall para crear el paquete, así tengo rekonq 2.2 en Wheezy.

  5. Muy bueno este articulo. Siempre se agradece la publicación de articulos de este corte. Sigue asi Maikito 😉

  6. Excelente articulo, quisiera acotar algo:
    0- buscar los fichero «readme» o «install» y leerlos detenidamente (generalmente en ellos los desarrolladores hacen una explicación sobre el proceso de compilación e instalación del software).
    1- la orden «./configure» solo es posible si el src tiene el script con ese nombre.
    2- tener conocimiento del lenguaje en que se desarrollo el software; pues en ocasiones uno de los lenguajes mas comunes «C++» su compilador G++ no está instalado de forma predeterminada como es el caso de Debian.
    3- la orden «make install» solo es posible si el fichero «makefile» tiene esa regla, pueden abrir el makefile con el editor que más les guste y verificar si está o no esta opción, incluso pueden crearla si es necesario, al igual que la orden «make uninstall».
    4- una vez creado el vinario (proceso de compilación) una alternativa para optener sus dependencias es la orden «ldd ruta_al_fichero_ejecutable/fichero_ejecutable».
    5- no está de más verificar que los script que acompañan el src tengan permiso de ejecución.

    Off Topic:
    Crear USB-Live sin necesidad de utilizar Unetbooting a partir de ISOS de GNU/Linux que utilicen «isolinux»:
    0- instalar el paquete syslinux.
    ej: «apt-get install syslinux»
    1- extraer el iso en la raíz del USB.
    2- copiar y renombrar el fichero isolinux.cfg a la raiz del USB.
    ej : «cp /media/USB/isolinux/isolinux.cfg /media/USB/syslinux.cfg»
    3- ejecutar desde un emulador de terminal la siguiente orden:
    syslinux –install /dev/dispositivo_usb
    4- reiniciar el pc y probar el USB-Live.

    Nota:
    Para Debian editar el fichero «syslinux.cfg» cambiar la linea «include menu.cfg» por «include /isolinux/menu.cfg»

    Saludos.

Los comentarios están cerrados.