Hace unos días publicamos en Genbeta "el primer post de la serie especial sobre Ubuntu":https://www.genbeta.com/2008/04/22-especial-ubuntu-historia-y-filosofia-linux-para-los-seres-humanos, en el que hablábamos de los orígenes del sistema operativo, de las versiones que han salido hasta hoy y la filosofía que hay detrás del concepto "Ubuntu". En esta ocasión vamos a centrarnos en la gestión de software y en las herramientas disponibles para la instalación/desinstalación de programas.
Paquetes y programas
Los paquetes son los distintos componentes software, y los programas son, normalmente, un conjunto de paquetes. Habitualmente los proyectos software suelen tener algún sitio en internet donde alojar los diferentes ficheros para que cualquier usuario pueda obtenerlos fácilmente. Estos ficheros pueden ser, por ejemplo, el código fuente del programa o un paquete con extensión .deb
para Ubuntu.

Si se descarga el código fuente de un programa, para instalarlo en el sistema hay que compilarlo primero. Compilar, visto de forma muy sencilla, es el proceso de convertir un fichero de texto que contiene órdenes en algún lenguaje de programación en un archivo ejecutable por la máquina. Estos ficheros suelen venir organizados y empaquetados en un archivo comprimido con extensión .tar.gz
, aunque no tiene por qué ser necesariamente ese tipo de compresión.
Los paquetes de código fuente generados con las herramientas estándar se construyen e instalan siempre de la misma forma. Primero se configuran los detalles de compilación para esa máquina, después se compila para generar el ejecutable y por último se instala en el sistema. Estas acciones se realizan en orden, teniendo instalado el compilador apropiado para ese programa, con los tres comandos:
* ./configure
* make
* sudo make install
Normalmente todos los paquetes tienen un fichero de texto llamado README
o INSTALL
en el que se detallan las instrucciones para instalar el programa y las dependencias que hay que cumplir. También se puede ejecutar el comando ./configure --help
para obtener más información sobre la configuración de la compilación.

Otra forma en la que podemos encontrar un paquete es con extensión .deb
, lo cual significa que es un paquete específicamente preparado para ser instalado en una distribución basada en Debian. Con este tipo de paquetes y mediante los gestores del propio sistema, se hace mucho más rápida y fácil la instalación y desinstalación de software.
Del mismo modo, otras distribuciones de GNU/Linux también tienen paquetes con una estructura específica preparados para ser instalados fácilmente, como los RPM
de Fedora. Son lo mismo que los DEB
para Debian/Ubuntu y también tienen sus instaladores automáticos. Incluso existen algunas herramientas como "alien":http://kitenet.net/~joey/code/alien/ para convertir paquetes de un tipo a otro, por ejemplo para pasar un paquete RPM
a un DEB
.
Las dependencias
Las dependencias de un programa son aquellos paquetes de librerías o de otros programas que se necesita tener previamente instalados en el sistema para su correcto funcionamiento.
Una parte importante de la utilidad de las herramientas actuales de gestión de paquetes en sistemas GNU/Linux es su capacidad para resolver las dependencias. Lógicamente, en este sentido puede suponer un problema para el usuario el querer instalar un programa a partir del código fuente, compilándolo uno mismo. En caso de no tener instaladas previamente todas las dependencias necesarias, al intentar construirlo dará fallos por esa razón y el usuario deberá instalar primero cada una de ellas por separado para proceder con el programa principal.
El sistema de repositorios
Principalmente la instalación de programas en Ubuntu, al igual que muchas distribuciones de GNU/Linux, se basa en un sistema de repositorios. Los paquetes correspondientes a los diferentes programas y librerías se encuentran en un servidor. A su vez, los usuarios tienen alguna aplicación en el sistema que les permite conectarse a ese servidor para elegir el programa que quieren descargar e instalar, así como realizar actualizaciones a nuevas versiones.
El fichero de configuración /etc/apt/sources.list
contiene una lista con todos los repositorios de software a los que se accede. Se pueden añadir y quitar editando directamente el fichero o usando alguna herramienta de configuración como la de Sistema -> Administración -> Orígenes del software, en la que vienen preconfiguradas algunas fuentes para activar y desactivar fácilmente, además de poder añadir más líneas de repositorios a nuestro gusto.

Como ya comentamos en el post de "puesta a punto de un Ubuntu Hardy recién instalado":https://www.genbeta.com/2008/04/27-consejos-de-puesta-a-punto-del-recien-instalado-ubuntu-804-hardy-heron, la mayoría de los usuarios prefieren activar todas las opciones de Orígenes del software para poder acceder a más aplicaciones y a sus últimas versiones.
La estructura de repositorio de Ubuntu se divide en 4 componentes: * Main: software libre, con actualizaciones de seguridad y soporte técnico oficial de Ubuntu. * Universe: sin soporte oficial pero con actualizaciones cuando son ofrecidas a la comunidad, aplicaciones de todo tipo y con más variedad de licencias. Muchos programas de la comunidad libre preparados para el sistema concreto. Algunos proyectos son movidos a Main si consiguen el soporte de desarrolladores que estén dispuestos a garantizar los requisitos de este repositorio. * Multiverse: licencias que no tienen por qué ser libres, es responsabilidad del usuario el cumplirlas y no es posible que estén soportadas o corregidas oficialmente. * Restricted: software importante y muy usado, que no es libre pero es "soportado" por Ubuntu, en la medida de lo posible y de lo que permita la licencia. Algunos drivers de tarjetas gráficas están en este componente.
También hay muchos proyectos y páginas web que mantienen sus propios repositorios, que pueden añadirse fácilmente como "repositorios de terceros" en los Orígenes de software del sistema.
Añadir y quitar programas gráficamente
El gestor de software más sencillo e intuitivo de Ubuntu está en la opción del menú principal Añadir/Eliminar... Muestra una ventana con las diferentes categorías de software y permite buscar al vuelo entre los programas del tipo que tú escojas para que muestre: todas las aplicaciones, sólo las libres o sólo las soportadas oficialmente... Si haces doble click sobre un paquete DEB desde el navegador de archivos se abrirá una ventana de "GDebi":https://launchpad.net/gdebi para resolver las dependencias, guiar al usuario e instalar el paquete automáticamente a golpe de ratón.

Synaptic y Adept son dos opciones más avanzadas para instalar y desinstalar programas gráficamente, ya que no sólo muestran los programas completos sino todos los paquetes disponibles en los repositorios. Siguen teniendo una interfaz visual bastante agradable y son muy intuitivos. El primero de ellos utiliza las librerías gráficas GTK y el segundo usa QT, diseñados para funcionar en los entornos Gnome y KDE, respectivamente.

Los dos programas que vienen de serie en Ubuntu. En cualquier caso, se pueden instalar ejecutando:
* sudo apt-get install synaptic
* sudo apt-get install adept
Añadir y quitar programas en línea de comandos
APT son las siglas de Advanced Packaging Tool. Es una librería de funciones usadas de forma poderosísima: el usuario elige un programa y la herramienta se conecta a los repositorios, descarga todos los paquetes necesarios (incluyendo todas sus dependencias) y los instala en el orden correcto. Incluso se puede actualizar de una versión a otra del sistema operativo con un solo comando. Hay varias herramientas que usan dichas librerías, las más conocidas son probablemente apt-get
y apt-cache
.

Algunos ejemplos de uso básico:
* apt-cache search music applet
* apt-cache show nombre_paquete
* sudo apt-get install nombre_paquete
* sudo apt-get remove --purge nombre_paquete
* sudo apt-get update
* sudo apt-get upgrade
El primer comando busca en los reporitorios y muestra una lista con los nombres exactos de los paquetes relacionados con las palabras "music" y "applet". El segundo muestra toda la información de un paquete, el tercero lo instala, el siguiente lo elimina y los dos últimos son, respectivamente, para actualizar la lista de paquetes de los repositorios y para actualizar todos aquellos que tengan una versión posterior a la que hay instalada en el sistema.
Aptitude es una interfaz para APT, sigue ejecutándose en el terminal pero consigue mucha más interactividad y ser una herramienta mucho más flexible. Tiene muchas diferencias con APT, aunque las más visibles de cara al usuario son la interfaz mediante ncurses, la mejora de búsqueda y muestra de los resultados y la desinstalación automática de programas.

Al ejecutar el comando aptitude
el programa muestra un menú principal por el que el usuario puede navegar "casi" del mismo modo que con los gestores con interfaz gráfica, pero desde dentro del terminal.
Algunos ejemplos de uso básico de Aptitude, análogos a los de arriba de APT:
aptitude search music applet
aptitude search nombre_paquete
sudo aptitude install nombre_paquete
sudo aptitude remove nombre_paquete
sudo aptitude update
sudo aptitude upgrade
Aptitude viene de serie en el sistema, pero si por lo que sea no lo tienes puedes instalarlo ejecutando el comando:
* sudo apt-get install aptitude
.
Hay fans tanto de APT como de Aptitude, cada uno defiende y valora aspectos en los que uno es mejor que el otro, pero al final se trata de usar el que cada uno prefiera o considere más cómodo.
Dpkg es la madre del cordero en cuanto a la gestión de paquetes software en sistemas basados en Debian, como es el caso de Ubuntu. Instala, desinstala y muestra información sobre los paquetes que se especifican, pero no es capaz de acceder a los repositorios ni de resolver dependencias. Es la herramienta de bajo nivel que usan los gestores de más alto nivel, como los descritos anteriormente.

Algunos ejemplos de uso de Dpkg para instalar, desinstalar y mostrar la lista de paquetes instalados en el sistema:
* sudo dpkg -i paquete.deb
* sudo dpkg -r nombre_paquete
* sudo dpkg -l
Busca y descarga de aplicaciones para Ubuntu
Hemos comentado cuáles son las herramientas principales de gestión de software en Ubuntu, con ellas se puede directamente buscar en los repositorios e instalar cualquier programa que encuentre.
También viene bien saber que Ubuntu mantiene una "página web de búsqueda de paquetes":http://packages.ubuntu.com/ en la que se pueden realizar búsquedas avanzadas según nombre, descripción, versión de Ubuntu o repositorio.
Además, están empezando a funcionar los primeros portales de descarga de software con una sección especial dedicada a Ubuntu, como son "UpToDown.com":http://www.uptodown.com/ubuntu/ y "GetDeb.net":http://getdeb.net/. En ellos puedes encontrar programas empaquetados en formato DEB que quizá no estén en los sitios oficiales.
Más información | "Ubuntu Documentation: Software Management":https://help.ubuntu.com/community/SoftwareManagement
Ver 17 comentarios
17 comentarios
Guillermo Latorre
Gilithunic: cierto, aunque también quería poner explícitamente que puede instalarse usando "apt-get". He modificado la frase aclarándolo, gracias.
Guillermo Latorre
Bueno, es cierto que es más laborioso instalar desde el código fuente, pero con cierta experiencia en el sistema acaba por no ser tan tedioso, y también tiene sus ventajas. Y es fundamental aprender a echar un vistazo a los ficheros README que nos dan los programadores, :)
En este artículo se trata de hacer un recorrido por las diferentes formas de gestionar el software, para que cualquier usuario no muy avanzado pueda conocer mejor este tema.
miguelito y Nafrayu: ¡muchas gracias! :)
Guillermo Latorre
aries: sin duda, yo también creo que es muy interesante al menos compilar alguna vez algún programa, para ver cómo funciona "la movida", :)
Guillermo Latorre
Es algo que tiene mucho sentido, jose: si quieres instalar un programa que requiere que una librería esté instalada previamente para funcionar bien, deberás instalar la librería primero y después el programa. Y es precioso, reutilizar código es una de las mejores cosas del software libre.
Por supuesto, si no existieran programas que hacen todo eso automáticamente (apt, aptitude…) sería un tostón, :)
nk82
El mayor problema de compilar, muchas veces es no prestar atención a lo que los propios programadores nos indican. Normalmente siempre te explican que dependencias necesitas para compilar (casi siempre disponibles via repositorios) y con tres líneas de comandos, tienes tu programita compilado e instalado.
De todas maneras, buscando un poco, a veces nos encontramos con que alguien ya compiló dicha aplicación y pone a nuestro alcance el paquete .deb.
Aun así, muy pocas veces me fue necesario compilar, la mayoría por puro capricho al querer tener esa última funcionalidad por la que no podemos esperar una semana en tener el paquete disponible.
Gilithunic
De todas maneras, eso de instalar aptitude…¿es que no viene instalado ya?
jose
Buenas, estupendo el post…
Yo añadiría que lo de compilar es siempre la última opción, la menos recomendable y la más difícil… o sea, empecé en linux con suse 6.0 y NUNCA JAMÁS he conseguido instalar un programa desde los fuentes así sin más con las tres órdenes… siempre he tenido que conseguir paquetes extra (que si nasm, que si tcl-tk, libxft, esto, lo otro…), leer documentación, preguntar, a veces incluso arreglar el makefile, y, en definitiva, romperme los huevos…
Es algo reservado… tienes la posibilidad de hacerlo, pero en el 99% de los casos, si no tienes el programa en la ventana de añadir y quitar ni puedes bajarte un instalador .deb, yo de tí buscaría un programa alternativo.
En resumen, el orden de alternativas para mí sería…
1 - mirar en la ventana de añadir y quitar
2 - buscar un instalador .deb en la web del programa (no hace falta poner dpkg -i, basta un doble clic)
3 - buscar otro programa que haga lo mismo
4 - pensárselo MUCHO
5 - intentar compilar desde los fuentes…
miguelito
jose entoy contigo XD. aunque llevo poco con ubuntu 7.10 me he dado cuenta que es un toston y algo poco rentable ponerse a instalar porgramas que necesitan estar compilados. ya puede ser por mi poca experiencia o por que simplemente es algo complicado prefiero hacer uso del añadir/quitar programas o en su defeto de un .deb. no obstante me ha parecido uno de los mejores post y eso hay k agradecerlo.
davalvrod
muy buen post ^^…muchos como este harán a la gente abrir miras más allá de las ventanas del Gates…jejeje!! ¡¡a seguir así!!
¡UBUNTU RULES!
aries
Yo empecé también hace unos dos añitos con Ubuntu y ahora mismo estoy con Fedora 9.
Es MUY cierto que sin conocimientos o símplemente por comodidad, lo mejor es utilizar el sistema de paquetes que nos proporciona el sistema. Es más, si compilamos una librería y no notificamos a la aplicación que gestiona los paquetes, es posible que ésta lo instale por su cuenta y haya conflictos.
Lo que pasa es que no siempre tenemos un paquete con el contenido que nos interesa; a veces hay que arremangarse y ponerse a compilar (que no es tan difícil, conste que no soy ningún experto) para conseguir la aplicación más puntera o la última versión de algún programita que incorpora justo la funcionalidad que necesitamos y que la actual no lleva.
Mi opinión es que ni tanto ni tan calvo; el gestor de paquetes es todo un invento y un auténtico adelanto en velocidad, sencillez y eficiencia, pero a nadie le hace daño compilar un programa de vez en cuando ^.^
Un saludo.
vladimirprieto
muy buen post!
felicito al autor.
Carlos el hormigo
Gracias, Guillermo, buen trabajo, un gran artículo. Soy ubuntero desde hace años, pero siempre viene bien un repasito.
Lo de compilar programas es cuestión de práctica. A mí al principio me parecía una tarea imposible, siempre me daba errores. Luego aprendes a interpretar esos errores y descubres que suelen deberse a que te faltan librerías; basta con buscar los paquetes que las contengan e instalarlos.
jose
Veo que no soy un caso aislado… a ninguno de los comentaristas les ha servido dar las tres órdenes y se acabó, todos han tenido que buscar librerías y dependencias primero…
jose
Es precioso rebuscar librerías en foros y leer instrucciones en otro idioma sobre cómo compilarlas? pues hijo…
Y no podrían los desarrolladores incluir lo que haga falta en el tar.gz y diseñar el makefile de forma que, si ya tienes las librerías instaladas, no se instalen de nuevo o algo así? Si en ubuntu ya todo se instala con doble clic, joer, fácil, rápido y limpio…
Mi última experiencia, intentar hacer un pincho USB arrancable de clonezilla. Para windows han hecho un programa con 3 botones: formatear pendrive, instalar imagen de clonezilla, hacerlo autoarrancable. Punto final. Para linux necesitaba syslinux 3.60 o superior, en los repositorios de ubuntu sólo está la 3.53, voy a la página y no hay instalador ni repositorio, sólo los fuentes; joer, si para windows han hecho un instalador cojonudo, ¿por qué no hacen lo mismo para linux? Pues nada, me bajo los fuentes, me leo la documentación en inglés, un rato más tarde me dispongo a compilar (aún pensando que estaba haciendo trabajo de ellos) y… diez mil errores ilegibles en la consola, un monton de números y de barras por todos lados… qué quieres que te diga, mira…
DDRFreaker
Excelente post. Con escritos como éste, Linux comenzará a tomar vuelo!!!.
No soy experto en Linux (de hecho, mis conocimientos sobre el SO se comparan con las matemáticas de un crío de tercer grado elemental :D) pero puedo jactarme de que, hasta ahora, no he tenido que vadear en foros para resolver un problema. VIVA LINUX! VIVA UBUNTU
xisquet
Buenas, ante todo felicidades por este blog, resulta una herramienta importantisima para la utilización del software libre.
Os he seguido hace un tiempo aquí, en planet ubuntu y en el de Guillermo (hachemuda) y por fin me he decidido a instalarme el ubuntu Hardy Heron que me ha llegado de forma maravillosa por correo (no me lo creía).
Estoy siguiendo los pasos que indicáis y por ahora todo va bien, salvo en el mozilla que de repente (después de aplicar actualizaciones) me ha pasado a inglés y no se como cambiarlo.
Aparte creo que es la versión beta 3.0 y me gustaría seguir con la 2.0 para poder integrar el marcador que utilizo (Mr Wong).
Me he bajado el archivo comprimido .gz pero no se como ejecutarlo. si podéis darme alguna indicación o decirme algún foro adecuado para resolver esta duda os lo agradecería.
RaulRoc
yo tb me lo instalaré, nunca viene mal, no? os paso una cosita para q le echeis un vistazo. decídme por favor q os parece. un amigo mio es protagonista y me ha pedido q le aconseje sobre las posibles mejoras, pero cuantas más opiniones… pues aún mejor claro! gracias
http://www.quierounamotocicleta.com/