

Cada día, cientos de usuarios noveles de GNU/Linux acuden al código fuente de los programas sin ser conscientes de que es completamente innecesario. Veremos paso a paso cómo podemos evitar llegar hasta tal situación. Para ello, a modo de ejemplo, intentaremos instalar Neverball.
Podréis decir: «Un momento, ¡el título del artículo es engañoso, no nos va a enseñar a compilar nada!». Tranquilos, al final daré unas directrices muy básicas sobre cómo podéis llegar a compilar exitosamente un programa, pero primero creo que debo transmitir la idea de que este paso suele ser innecesario y puede ser evitado la mayoría de las veces.
Volvamos al Neverball. Imaginad que acabamos de encontrar su página web. Si accedemos a su sección de descargas encontramos únicamente la versión para Windows, para Mac Os X y el código fuente. Está bien, si todo lo demás falla todavía podemos recurrir a compilarlo utilizando este código fuente, pero primero probemos las alternativas más humanas.
El primer paso es buscar en el instalador de nuestra distribución. Por ejemplo, en el caso de la última versión de Ubuntu, en el Centro de software de Ubuntu, o en Fedora en la opción de Añadir/Quitar software. Como vemos, lo encontramos sin mayor problema y con un par de clics podemos instalarlo y ponernos a jugar.

Imaginad que hemos fracasado. ¿Debemos recurrir ya a la ardua tarea de compilación? No. Las distribuciones y su comunidad suelen proveer también otros canales de distribución. En Ubuntu por ejemplo tenéis los Personal Package Archives (PPA). Una búsqueda rápida nos devuelve resultados, por lo que solo debemos elegir uno de ellos, añadirlo a nuestros orígenes de software y proceder a la instalación de la misma forma de antes.

Volved a imaginar que el paso anterior no ha servido de nada, y que seguimos sin encontrar resultados. Entonces todavía podemos acudir a sitios de terceros, como por ejemplo GetDEB. Es bastante menos seguro, pero si no queda otra alternativa y el sitio parece confiable seguramente no haya problemas.
Si todo esto fallase, puede que el momento de compilar haya llegado. A mí no se me ocurren más alternativas, desde luego. Así que volvamos a la página de descargas a por el código fuente.
Lo primero que debemos hacer tras descomprimirlo es buscar los archivos README e INSTALL. Seguramente en uno o en otro estarán las instrucciones específicas para la compilación e instalación.

Como vemos, tiene muchísimos requisitos. Lo que debemos hacer es instalar todos los paquetes de desarrollo que satisfagan esos requisitos. Algunos autores nos lo ponen fácil apuntando directamente al nombre de los paquetes que debemos instalar, pero no es el caso. Para este juego en concreto, en Ubuntu bastará con poner en una terminal:
sudo apt-get install libsdl1.2-dev libsdl-ttf1.2-dev libvorbis-dev libpng12-dev libjpeg-dev build-essential libphysfs-dev
Cuando termine se supone que ya hemos satisfecho lo requisitos (o al menos eso creemos). Ahora deberíamos ejecutar un script que configure la compilación. Este script nos avisará si nos falta algún requisito.
./configure
En el caso de Neverball, no se incluye ningún script de este tipo, por desgracia. Siguiendo las instrucciones, vemos que debemos ejecutar make para comenzar la compilación.
make
Entonces comenzará el proceso, algo que puede llevar desde unos segundos a varias horas, dependiendo de muchísimos factores. Una vez haya terminado, todavía queda instalarlo. Esto se hace, habitualmente, escribiendo:
sudo make install
El problema de este proceso es que no está pensado para usuarios finales. No es tan sencillo explicar en la brevedad que pretende este artículo todas las posibles causas que pueden hacer que una compilación falle. En ese casi, lo más probable es que os falte alguna biblioteca, pero seguramente acabaríamos antes examinando cada caso particular antes que dando instrucciones detalladas sobre cada posible error.
Todos los que os habéis enfrentado a la compilación de un paquete sabéis más o menos a lo que os exponéis. ¿Tenéis algún consejo para los usuarios noveles de GNU/Linux que se encuentran por primera vez ante una compilación? Si tenéis dudas sobre el proceso también podéis utilizar los comentarios para completar el artículo.

¡Gracias por dejarnos tus comentarios! — por favor intenta mantener tu opinión relacionada con la anotación, no usar insultos, agresiones, o faltas de respeto al autor y otros participantes de la discusión, en caso de no hacerlo tu comentario podría ser borrado.
Existe mucha más información en nuestra política de comentarios.
wget *.tar.gz
./configure
make
# make install
Mil veces mejor.
Bitelia es un sitio que me gusta, tiene buenos contenidos pero aquí les va una crítica constructiva: Dejen de enfocarse tanto a Ubuntu.
Aclaro que no tengo nada en contra de la distribución pero más de la mitad de los post con aplicaciones para Linux solo tiene una explicación y método de instalación para Ubuntu lo cual se me hace un poco tendendioso. Podrían dar a conocer una aplicación y en lugar del clásico sudo apt-get o sudo dpkg -i sería genial que explicaran los pasos de la instalación desde el código fuente.
Saludos.
Es culpa mía. Intento centrarme también en Fedora y Suse cuando tengo ocasión, pero las tenía un poco olvidadas. Ahora intento recuperar el tiempo perdido.
No considero una buena idea enseñar solamente métodos de instalación genéricos, cuando cada distribución tiene uno preferido mucho más sencillo. Aún así, en ocasiones como cuando presento alguna aplicación con su PPA, reconozco que sí que sería bueno poner un método genérico. Tomo nota para el futuro, gracias.
Estoy totalmente deacuerdo, es verdad que cada distribución tiene una aplicación destinada a ese tipo de cuestiones y también sería bueno que en cada post se mostrara como hacerlo en unas cuantas otras y no nada más en Synaptic, solo por dar un ejemplo.
También tengo que decir que tu forma de redactar es bastante amigable a la lectura y ayuda a la fácil comprensión de las cosas. Gracias por tomar en cuenta el comentario Jorge y saludos de nuevo :)
Los métodos de instalación genéricos van a ser funcionales en la mayor cantidad de distribuciones porque los elementos necesarios para aplicarlos van a estar en la mayor cantidad de distribuciones.
Vaya, yo suponía que hablaban más de Ubuntu porque era la distribución más usada. En fin, si pueden equilibrar las cosas para que los usuarios de otras distribuciones no se sientan “relegados” me parece razonable.
HE probado Mandriva, ubuntu, suse, fedora y ahora estoy en Archlinux y he llegado a la conclusion de que todas las distros deben usar un solo sistemas de paquetes ‘generico’. Algunos programas son faciles de compilar pero hay otros que si son un lio. Lo ideal es que se entre a un sitio web y al descargar un programa este funcione en fedora o en debian. Ese es uno de los problemas q GNU/LINUX debe resolver.
La instalación desde el código fuente es uno de los métodos genéricos.
Yo a lo que me referia era a un tipo de paquete precompilado como los .rpm o .deb, pero para todas las distribuciones (Por lo menos las user-friendly como Mandriva, suse y Ubuntu). La compilación es la forma genérica de instalar cualquier programa en GNU/Linux pero hasta la forma de compilar es diferente dependiendo del programa.
Jesus Ricardo Ballesteros: La forma de compilar es diferente porque el código fuente está dirigido a una plataforma, si el código fuente fuese genérico, la forma de compilar también podría serlo, o la forma de compilar podría cambiarse de acuerdo al entorno de trabajo utilizado independientemente del código fuente.
Bien, basandome en lo que dices, pienso entonces que todas las distros user-freindly deben aplicar un estandar para instalar programas. Que todas usen .deb o .rpm o que se inventen uno nuevo, es muy fastidioso buscar software y que este no se encuentre disponible para tu distribucion, ejemplo: Skype, si usas Mandriva te toca descargar el ejecutable aparte (No se si ya subieron el paquete para Mandriva), eso es lo malo. Lo ideal es que hubiera un paquete para GNU/Linux en general sin necesidad de compilar porque compilar muchas veces es complicado.
usar “make install” debe evitarse completamente si vas a instalar directamente en “/”, por que? Muchos Makefiles no traen la opción de “uninstall” o pueden sobreescriben ficheros importantes del sistema con otros diferentes, mas viejos o mas nuevos con lo cual el sistema se puede volver inestable. Lo mejor y MUCHO mas recomendable (aunque un poco mas dificil) es crear un paquete para tu distribución (deb, rpm, tgz, PKGBUILD, etc) y luego instalarlo desde alli, asi tendrás la seguridad de que no sobreescribirá nada importante (y si lo intenta el gestor de paquetes te avisará y abortará la instalación) y además lo podrás desistalar sin dejar basura en “/”. El la documentación oficial de cada distribución se muestran instrucciones genericas para generar los paquetes a partir del codigo fuente de un programa.
Muy buen artículo. Es difícil que un neo-Linux compile algo. El programa ha de ser sumamente importante e ireemplasable. Tarde o temprano se encontrarán una compilada, pero para eso pasará un tiempo, que sin duda este documento ayudará. Buena aclaración de code, no tenía ese detalle del archivo “uninstall” Recomiendo crear un post para crear archivos .deb del programa compilado.
Si, una recomendacion mas. Que no se les ocurra compilar nada “grande”. Yo lo intente una vez con las X, ya acabe dimitendo e instalandolas desde repos. La cantidad de dependencias necesarias para este tipo de programas, y las dependencias de las dependencias, hacen que no sea saludable siquiera pensar en compilar ciertas cosas.
Ah, y que busquen donde sea. Muchas veces hay algun paquete no oficial. Vale, puede que no sea muy seguro. Pero…. antes que pelearse con las dependencias…
PD: aun no se como hay gente que usa cosas como slack sin repos (se que slack se puede manejar con repos, pero hy gente que no lo hace). con lo facil que es tirar de aptitude (o el gestor de turno).
PSSSSSSSSSSSSSSSSSS……….
UNO COMPILA PARA GANAR MAYOR VELOVIDAD..PSSSSSS..
@kenneth : si, pero hay mejores formas de ganar elocidad, y que ademas, funcionan mejor. Por ejemplo, mi debina funciona mejor si hago una instalacion mas limpia (con menos trasto inutil), que si la hago a la gentoo (con apt-build). La acntidad de paquetes necesarios para compilar, hacen que hacerlo para ganar velocidad no resulte muy productivo, ya que la velocidad que ganas al compilar, la pierdes en tener un monton de paquetes instalados.
y ya, lo se, esto no es windows, pero aun asi, cuanto mas limpio este el sistema, mejor va.