Compilar un programa para instalarlo en Ubuntu es una tarea para usuarios con un poco de experiencia, dado que cada programa tiene sus particularidades. Si tenemos la opción de instalar un paquete binario (.deb), es mejor optar por usarlo.
Casos en que optaremos por compilar desde las fuentes:
En este artículo daremos una visión general de cómo compilar en Ubuntu y sus derivados por medio de una fórmula básica consistente en 6 pasos.
Contenido |
Podemos encontrar el paquete build-essential por medio del Gestor de Paquetes Synaptic con el siguiente comando desde terminal:
sudo aptitude install build-essential
Build-essential es en realidad un metapaquete, o lo que es lo mismo: un paquete que contiene otros paquetes:
Por lo que instalamos las librerías y paquetes que necesitaremos para poder generar archivos binarios.
En este punto presumimos que tendremos el archivo comprimido descargado en el escritorio. Normalmente los códigos fuente vienen comprimidos en un fichero .tar.gz. Para descomprimirlos podemos hacerlo con el Gestor de archivadores de Ubuntu o abrir un terminal y hacerlo desde ahí:
cd Desktop (vamos a la carpeta de nuestro escritorio) tar -xzf nombre_de_archivo (descomprimimos el archivo)
Con lo que quedarían todos los archivos de las fuentes en otra carpeta.
Entraremos en la carpeta donde hayamos descomprimido el archivo .tar.gz . Podemos ayudarnos a buscar las dependencias del programa a instalar tecleando desde la terminal el siguiente comando:
sudo apt-get build-dep nombre_del_programa
Donde sustituiremos nombre_del_programa por el nombre del programa que estemos instalando. Con esto haremos que el comando apt-get nos busque automáticamente las dependencias y nos pregunte si las queremos instalar.
Seguidamente, ejecutaremos el fichero ejecutable configure que viene dentro de la carpeta nuestro programa a compilar. Bastará con teclear la siguiente orden desde la consola de comandos:
./configure
o
./configure --prefix=/usr
| El uso del parámetro --prefix=/usr es estrictamente opcional, ya que no es indispensable. A pesar de ello, algunos programas (pocos, pero por poner un ejemplo: Guichan, una librería empleada para juegos) pueden no funcionar correctamente si no son instalados en la carpeta /usr.
Básicamente, /usr y /usr/local son empleados para mantener separados los archivos propios de la distribución (/usr) de los instalados por el usuario (/usr/local). A efectos de invocación/llamada del programa será lo mismo, ya que ambas rutas están en el PATH (que quiere decir que al ejecutarlas, Ubuntu las va a encontrar sin problemas). El único riesgo de instalar en /usr en lugar de en /usr/local es que se sobreescriba alguna librería (o programa) instalada por la distribución con una del programa que estemos compilando, por lo que la estabilidad de nuestro sistema se podría ver comprometida. |
El fichero configure genera la configuración idónea para nuestro PC y le dice a GCC cómo debe compilar las fuentes para que funcionen en nuestra máquina.
| |
Si obtenemos errores en este paso seguramente sea porque nos faltará un paquete (cuanto más raro el programa, más raras son las dependencias y paquetes que necesita). Para solucionarlo, sólo tendremos que instalarlo (mediante Synaptic o con Apt) antes de volver a intentarlo. Si aún así nos sigue mostrando el mismo error, tendremos que instalar el mismo paquete, pero la versión con “-dev” en el nombre del paquete (versión para desarrollo). |
Para generar el paquete binario tendremos que usar el comando make:
make
A estas alturas ya tenemos el paquete binario creado. Para instalarlo usaremos el comando make install:
sudo make install
Si todo ha ido bien podremos ir a buscar el programa recién instalado en nuestro Ubuntu y ejecutarlo. Si por alguna de aquellas queremos desinstalar el programa que acabamos de compilar, lo podremos hacer siempre y cuando no hayamos borrado el directorio en el que hemos hecho la instalación. Bastará hacerlo con la instrucción:
sudo make uninstall
Borraremos la carpeta, puesto que a estas alturas ya tenemos el programa instalado y ya no necesitaremos nada de esa carpeta. De este modo contribuimos a mantener limpio nuestro sistema.