![]() |
Supongamos que acabás de bajar el código fuente de tu juego o programa favorito y querés compilarlo para poder disfrutar de él. ¿Cómo realizar tan titánica tarea? No te preocupes, compilar e instalar ese juego/programa en Linux no es tan difícil como parece. |
Procedimiento de compilación e instalación
Siempre que descargues el código fuente de un programa, éste vendrá comprimido dentro de un archivo que, en Linux, generalmente es de tipo tar.gz o tar.bz2. Claro, puede venir en cualquier otro formato (zip, por ejemplo), pero aquella suele ser la regla.
Así que, el primer paso es descomprimir ese archivo. El método más sencillo es abriendo Nautilus, haciendo clic derecho sobre el archivo en cuestión y seleccionando Descomprimir. El método que veremos aquí, no obstante, es aquél que utiliza el terminal.
Una vez descomprimido el archivo se creará un directorio, al que deberemos acceder y desde el cuál iniciaremos la configuración y compilación del programa.
Cuando hagas todo esto desde el terminal, los comandos a utilizar son:
tar xvzf paquete.tar.gz (o tar xvjf paquete.tar.bz2) cd package ./configure make make install
Estos son los comandos que generalmente uno debe seguir, pero sería recomendable analizar en mayor profundidad cada uno de estos pasos, para entender bien qué implican.
Paso 1: descompresión
La extensión tar.gz o tar.bz2 significa que el código fuente que descargaste está comprimido dentro de un archivo tar, conocido también como tarball. Esto simplifica enormemente la difusión del código fuente ya que todos los archivos y carpetas que lo conforman se encuentran empaquetados dentro de un solo archivo. Una vez empaquetados, dentro del archivo tar, ese archivo es comprimido utilizando el algoritmo gz o bz2, dependiendo del gusto del desarrollador.
Para descomprimir un archivo tar.gz, escribí:
tar xvzf paquete.tar.gz
En caso de tratarse de un archivo tar.bz2:
tar xvjf paquete.tar.bz2
En la mayor parte de los casos esto creará una carpeta dentro del directorio donde se encuentre el archivo comprimido. El nombre de la carpeta será igual al del archivo comprimido.
Paso 2: configuración
Una vez que ingresaste a la carpeta creada al descomprimir el archivo tar.gz o tar.bz2…
cd carpeta
… es hora de configurar el paquete. Usualmente, aunque no siempre (por eso es importante leer los archivos README e INSTALL), esto se logra corriendo el script de configuración:
./configure
Cuando ejecutes este script, todavía no se va a instalar nada, sólo se verificará el sistema y se asigna valores a algunas variables dependientes del sistema. Estos valores son utilizados para crear un Makefile. El Makefile, a su vez, es utilizado para crear el archivo binario que, al final del cuento, permitirá ejecutar el programa.
Cuando ejecutes este comando vas a ver que la pantalla se llena de un montón de mensajes un tanto crípticos. En caso de error, aparecerá un mensaje; y si todo va bien, podemos saltar al siguiente paso.
Paso 3: construcción del binario
Llegó la hora de construir el archivo binario, que no es más que el ejecutable del programa. En otras palabras, este procedimiento implica la transformación de los archivos escritos en un lenguaje de programación de alto nivel a puros ceros y unos, o sea, el único idioma que nuestra compu entiende.
make
Para que este comando tenga éxito, el paso anterior debe haber salido bien. Sin el archivo Makefile, make dará error. Por eso es tan importante que el script de configuración se ejecute exitosamente.
Sí, la pantalla se llenará de mensajes extraños nuevamente y es probable que se demore un buen rato en terminar. Eso dependerá del tamaño del programa y de la velocidad de tu compu.
Paso 4: instalación
Claro, ya tenemos el ejecutable pero falta su instalación. Este paso es preciso hacerlo con privilegios de administrador.
sudo make install
Como en este caso hipotético no hemos realizado ningún cambio al archivo de configuración, el programa se instalará en la carpeta predeterminada. En general, esto suele ser /usr/local/bin ya que ello permite que desde cualquier lado al escribir el nombre del programa éste se ejecute (sin tener que ingresar la ruta completa del programa).
Paso 5: Ejecución
No, no matamos a nadie. Se trata simplemente del paso cúlmine de todo proceso de compilación e instalación. Para ejecutar el programa que con tanto esfuerzo convertimos en un binario, escribí:
./nombreprograma
Si el programa fue instalado en otra carpeta, diferente a /usr/local/bin deberás ingresar la ruta completa del programa.
Limpiando el rancho
En caso de que estés muy pero muy corto de espacio en disco, es posible que quieras borrar todos los archivos creados durante el proceso de construcción del binario. En ese caso, accedé a la carpeta creada al descomprimir el archivo y escribí:
make clean
Nota: asegurate de conservar tu Makefile. Ese archivo será necesario a la hora de desinstalar el programa en el futuro.
Desinstalación
El programa no era lo que esperábamos y queremos borrarlo de la faz de nuestro sistema. ¿Cómo? ¿El programa que acabo de instalar no aparece en el Centro de Software ni en Synaptic? ¿Y ahora?
En caso de que no hayas borrado tu Makefile, es posible desinstalar el programa fácilmente. Escribí el siguiente comando dentro de la carpeta creada al descomprimir el archivo:
make uninstall
Si tuviste mala suerte y la desinstalación no tuvo éxito, no quedará otra más que borrar los archivos a mano. Un verdadero dolor de cabeza. Para descubrir dónde se encuentran estos archivos, podés pegarle una mirada a tu Makefile.
En caso de haber borrado el Makefile, lo más recomendable es volver a instalar el programa, y luego hacer make uninstall, ya que así se regenerará el Makefile. No olvides instalarlo usando las mismas configuraciones (en este caso ninguna) en el ./configure.
Buen tuto muchas gracias, siempre cuando empezamos en linux uno de lo sprincipales problemas es como compilar, bien explicado, aunque si es recomendable leer los readme o install…
Buen tuto muchas gracias, siempre cuando empezamos en linux uno de lo sprincipales problemas es como compilar, bien explicado, aunque si es recomendable leer los readme o install…
«Si tuviste mala suerte y la desinstalación no tuvo éxito, no quedará otra más que borrar los archivos a mano. Un verdadero dolor de cabeza»
Es más recomendable volver a instalarlo, y luego hacer «make uninstall» ya que tendremos el Makefile re-generado. Importante instalarlo usando las mismas configuraciones (en este caso ninguna) en el configure.
ahora si no queres ejecutarlo poniendo el nombre del programa sino crear un acceso directo al escritorio o que te aparezca en el menu de aplicaciones, como haces?
saludos!
Buena tutorial. Ahora hasta yo puedo compilar.
creo que el segundo paso seria leer el readme (RTFR xD) y es el mas fundamental de todos, ya que muchos programas tienen dependencias que debes cumplir en la instalacion, o se necesita algun paso extra o tambien esta bueno que lo leas porque brinda buenas opciones para el make que nos puede llegar a interesar.
saludos!
Completamente! Por eso recomiendo leer siempre los README e INSTALL.
Tenés razón. Eso, en caso de que no tenga el Makefile. Yo hablaba del caso en que aún teniendo el Makefile no pudiera desinstalarse por alguna otra razón.
De todos modos, voy a agregar al post tu comentario, que me parece muy pertinente y acertado.
Un abrazo y gracias x comentar! Pablo.
Tudo bem Krafty! Nadie se ofende. Escribí este post porque nunca había tratado el tema en el blog. De todos modos, tomo noto de los temas que recomendás (algunos muy buenos). Seguramente, voy a escribir sobre ellos en un futuro no muy lejano.
Un gran abrazo y gracias x dejar tus comentarios! Pablo.
No quiero ser mala onda, pero este tema ya lo trataron varias veces en lo que va del año.
Propongo unos temas para que vean que no dejo comentario solo para hacer bardo.
– Telefonía sobre IP
– Distintos Clientes Torrent (cual elegir).
– Creación de scripts de aquellas cosas que lo hemos en forma repetida en la consola.
– Quitar módulos al kernel para que inicialice mas rápidamente Linux al bootear.
Espero no haber ofendido/molestado a nadie
genial, estupendo para los que nos empezamos a soltar con linux
Sí. Generalmente, estas vienen detalladas en el README. Caso contrario, al compilar saldrá error y en base al error (que dirá qué biblioteca falta) tendremos que instalar la dependencia apropiada.
Un abrazo! Pablo.
krafty,sos mala onda sin dudas. ¿dónde habías visto un tutorial como este, tan claro y explicativo? para mi es excelente, salu2,
¡Muchas gracias por la guía!, me ha servido para aclarar algunas cosas 🙂
Por cierto, un tip que me ha funcionado bastante bien para resolver el tema de las dependencias es hacer antes que nada ‘sudo apt-get build-dep nombre_del_programa’; no sé si funciona en todas las distros, yo lo he usado en Debian (Squeeze, donde hace poco me compilé el MuseScore 1.2 para paliar un poco los repos arcaizantes del branch stable… 😉
Imagino que alguien más informado podrá dar detalles más finos 🙂
Saludos!
¿no habría que tener en cuenta las dependencias que necesita el programa antes de compilar?
Tengo poco tiempo usando linux, y esto es una de mis mas grandes dudas, esto me sevira mucho ya que no habia encontrado algun post con este tema en particular 😀
o ustedes conocen alguno?
saludos..
genial, no habia visto este post, pero aque se debe eso de error tipo 1 o error tipo 2
¿No hay otro metodo ?
Este metodo ya lo he utilizado con exito. El problema es que hay muchos pero que muchisimos programas en codigo fuente que no usan ese sistema, vamos no tienen el script configure. Me gustaria como compilarlos.