Instalación de Programas en Linux

Introducción



Uno de los principales desafíos que encuentran los nuevos usuarios de Linux a la hora de usar su sistema es aprender a instalar programas. Esto se debe a que la mayoría de los que hemos usado el “otro" sistema operativo nos acostumbramos a instalar programas mediante el sencillo procedimiento conocido como “doble clik, aceptar, aceptar, aceptar, terminar". De ahí el desconcierto de los usuarios nóveles de Linux al intentar instalar programas: simplemente no entienden qué significa todo eso de ./configure, make, RPM, DEB, apt y tantos otros términos desconocidos.

Este documento pretende dar un poco de luz a esos usuarios. Intentaré no usar términos muy técnicos, a fin de mantener el texto entendible para cualquier persona.


¿Qué es un programa?



NOTA: en esta sección no pretendo dar una cátedra sobre programación, sino simplemente aclarar algunos conceptos básicos. Por lo tanto, muchas explicaciones pueden contener algunas inexactitudes con el fin de mantener la simplicidad. Así que, programadores y hackers en general: ¡guarden sus lanzallamas! :-)

Un programa es simplemente una secuencia de instrucciones que el computador (u ordenador) puede interpretar y ejecutar, a fin de conseguir un resultado.

Para construir un programa, primero se deben escribir estas instrucciones en un lenguaje de programación, es decir, un grupo de instrucciones en lenguaje semi-humano que pueden ser traducidas al lenguaje del computador. Existen muchos lenguajes de programación (C, C++, Java, Perl, Python, PHP, Pascal, Lisp y un laaaaargo etcétera), cada uno con sus propias ventajas y desventajas. Pero todos tienen algo en común: las instrucciones escritas en ese lenguaje (llamadas en conjunto "código fuente" necesitan ser traducidos al lenguaje del computador (llamado código objeto, ejecutable o binario) para poder ejecutarse. Si esta traducción se hace una sola vez, se llama compilación; en cambio, si se realiza a medida que el programa está siendo ejecutado, se habla de interpretación.

Linux es un sistema de código abierto , lo que significa que cualquiera puede ver (y modificar) su código fuente. Así también, muchos de los programas disponibles hoy para Linux son de código abierto. Por lo tanto, no es raro que sean distribuidos mediante su código fuente, por lo que es necesario compilarlos antes de poder usarlos.



¿Dónde se instalan los programas en Linux?



Muchos nuevos usuarios de Linux están acostumbrados a la “manera Windows" para instalar programas, la que consiste en una serie muy conocida de pasos:

1. Conseguir el instalador del programa (mediante un CD, DVD, descargándolo de su página web o a través de algún programa de descargas).
2. Iniciar el instalador y presionar Siguiente, Siguiente, Siguiente, ..., Aceptar.
3. Al terminar, todos los archivos pertenecientes a ese programa se han almacenado en un directorio único (por ejemplo, C:/Archivos de programa/Mi programa) y se ha creado un acceso directo en el menú principal de programas o en el escritorio.

Estos usuarios probablemente se sentirán muy desorientados al ver la estructura de directorios de un sistema Linux típico, con todos esas palabras raras (bin, usr, var, home, etc.).

Sin embargo, todo cobra sentido al entender la "filosofía Unix":

* Los programas no se instalan en un directorio único, sino que almacenan sus archivos en distintos directorios, según su función. Por ejemplo, los archivos ejecutables (o binarios) se almacenan en el directorio /bin, en /usr/bin o en /usr/local/bin; los archivos de configuración en /etc; la documentación en /usr/share/doc; los manuales en /usr/man o /usr/local/man; cada usuario tiene su propio directorio dentro de /home, etc.
* Al tener los archivos separados según si tipo (y no según el programa al que pertenezcan), es más fácil encontrar lo que se necesita. Por ejemplo, puedes simplemente ejecutar el comando reboot (que reinicia el sistema) sin necesidad de especificar su ruta, y el sistema automáticamente buscará ese ejecutable en /bin, en /usr/bin o en donde corresponda. De la misma manera, basta con escribir man reboot para que el sistema despliegue el manual de reboot, sin que tengas que especificar la ruta al manual.

Todo esto permite tener un sistema más limpio y ordenado. Como usuario, la mayoría de las veces no tendrás que preocuparte de la ubicación de los archivos, ya que el sistema se encargará de buscarlos donde haga falta.



Instalar, parte de la administración



En este punto quiero recordarte que en Linux existe algo denominado privilegios. En general, para instalar programas necesitarás privilegios de administrador, lo que significa que debes tener acceso a la contraseña del usuario root (administrador) del sistema. Si tú mismo instalaste Linux en tu computador, no deberías tener problemas en tener acceso a dicha contraseña (a menos que la hayas olvidado, pero ese ya es otro tema; sólo puedo recomendarte comer muchas uvas pasas para tener buena memoria).

Hay varios métodos para trabajar como usuario root dentro de Linux:

1. Lo más lógico: iniciar una sesión como usuario root, ya sea mediante el acceso en modo texto o a través del administrador de acceso en modo gráfico.
2. Si ya ingresaste como un usuario “normal" (sin privilegios de root), puedes convertirte en root mediante el comando “su". Lo puedes ejecutar en un emulador de terminal de tu escritorio (en el menú de aplicaciones de tu escritorio puede aparecer con el nombre de Konsole, Terminal, xterm, Emulador de terminal, etc.), o en una terminal virtual de texto. Obviamente, el sistema te solicitará la contraseña del usuario root.
3. Algunas distribuciones actuales (especialmente Ubuntu y derivados) no activan la cuenta de root, sino que usan el comando sudo para las tareas administrativas. Si este es tu caso, entonces recuerda anteponer la palabra sudo en cualquiera de los comandos que se mencionan más adelante en este documento.

Así que ya lo sabes: para instalar programas en Linux, necesitas tener privilegios de root. Supongo que entenderás tan bien como yo que ésta es una de las medidas de seguridad que hacen de Linux un sistema altamente confiable.

Ahora que ya estás listo, vamos a revisar los distintos métodos para instalar programas en Linux.



Código fuente



Supongamos que te has encontrado la web del programa SuperPoetaVirtual versión 8.0, que sirve para que cualquiera pueda escribir poesía a la altura de Pablo Neruda . Vas a la sección Downloads y te encuentras con que debes descargar un archivo llamado SuperPoetaVirtual-8.0-11.tar.gz. En las instrucciones de instalación lees que debes compilarlo para poder usarlo.

Eso, estimado linuxero, es un programa distribuido mediante su código fuente. Por lo general es un conjunto de archivos empaquetados y comprimidos. Sus nombres suelen terminar con las letras .tar.gz o también .tar.bz2. Para poder usarlos, tienes que compilarlos (traducirlos al lenguaje del computador).



Ventajas de la instalación desde código fuente



* Puede ser usado en cualquier sistema que cuente con el compilador adecuado.
* Todos los programas open source pueden ser obtenidos mediante código fuente. Esto es una exigencia de las principales licencias del código abierto (como la GPL).
* Pueden ser modificados. Si conoces el lenguaje de programación en el que está escrito el programa, puedes modificarlo a tu antojo.
* Pueden ser optimizados. Durante el proceso de compilaci´on, puedes optimizar el programa, a fin de que ocupe mejor los recursos de tu computador, lo que implica un aumento en la velocidad, rendimiento, etc .



Desventajas de la instalación desde código fuente



* Necesitas un compilador del lenguaje en que fue escrito el programa. Si bien la mayoría de las distribuciones de Linux incluyen una amplia variedad de compiladores, no siempre están instalados en el sistema particular que estás usando.
* El proceso de instalación es más lento. En programas muy grandes (por ejemplo, OpenOffice.org o Xorg), el proceso de compilación fácilmente puede durar varias horas, e incluso días.
* No hay un sistema de administración centralizado, lo que implica dificultad para actualizar, eliminar, etc. Si quieres desinstalar un programa, debes eliminar manualmente los archivos instalados por ese programa, uno por uno .



Procedimiento para instalar un programa desde el código fuente



* Descomprimir el archivo descargado (en caso de que venga comprimido, obviamente). Lo más común es usar el comando tar xvzf archivo.tar.gz para archivos .tar.gz, o el comando tar xvjf archivo.tar.bz2 para los .tar.bz2. También puedes usar herramientas gráficas, como ark (KDE) o file-roller (Gnome).
* Leer el archivo README y/o el archivo INSTALL. Aquí se encuentran las instrucciones para instalar y usar el programa. Por lo general, el archivo indica ejecutar las siguientes tres instrucciones:
o ./configure
o make
o make install
* Tras esto, ya deberías poder usar el programa, simplemente escribiendo el nombre del ejecutable o de la manera que indique la documentación.



Sistemas de paquetes



Siguiendo con nuestro ejemplo del programa SuperPoetaVirtual, supongamos que el proceso de compilación dura aproximadamente 30 minutos en un PC relativamente rápido. Por eso sus creadores quieren hacerle la vida fácil al usuario y entregarle el programa ya compilado y listo para instalar. Para eso pueden usar los sistemas de paquetes.

Un paquete es simplemente el programa ya compilado y empaquetado (muchas veces comprimido comprimido) en un sólo archivo, conteniendo las instrucciones necesarias para su instalación. Los sistemas de paquetes fueron un gran avance en la administración de sistemas Linux, ya que presentan varias ventajas:

* Permiten centralizar la administración de programas. Puedes tener una base de datos que guarde información acerca de los programas instalados, los archivos correspondientes a cada programa, la fecha en que fueron instalados, el espacio que ocupan en el disco duro, etc.
* Se pueden distribuir programascompilados y listos para su instalación. Esto implica un importante ahorro en tiempo y esfuerzo para el usuario.
* No necesitas tener un compilador para instalar un programa.
* Facilitan la administración del sistema. Tareas como la actualización, desinstalación y consultas acerca del programa ahora pueden ser realizadas con un simple comando.

A continuación se explica el funcionamiento de los sistemas de paquetes más usados dentro de Linux.


Debian Package (dpkg)



Este sistema de paquetes fue creado por Ian Jackson en 1993, y actualmente es usado por la distribucin Debian. Los archivos empaquetados con este sistema tienen la extensión .deb.

A continuación algunas instrucciones básicas:

dpkg help : Muestra las opciones del programa dpkg.
dpkg --contents paquete.deb : Muestra los archivos que contiene el paquete.
dpkg --info paquete.deb : Muestra algunos datos del paquete.
dpkg --install paquete.deb : Instala el paquete especificado.
dpkg --listfiles programa : Lista los archivos de un programa ya instalado.
dpkg --remove programa : Desinstala un programa sin los archivos de configuración.
dpkg --purge programa : Desinstala un programa y sus archivos de configuración.


Red Hat Package Manager (rpm)



Este sistema fue creado por Red Hat y actualmente es usado por muchas distribuciones (Red Hat, Fedora, Mandrake, SuSE, Conectiva, etc.). Sus archivos terminan con la extensión .rpm.

A continuación algunas instrucciones básicas:

rpm --help : Muestra una breve ayuda acerca del sistema rpm.
rpm -ivh paquete.rpm : Instala un paquete.
rpm -Uvh paquete.rpm : Actualiza un programa ya instalado. Si no estaba instalado antes, entonces lo instala. Es la forma recomendada de instalar un rpm.
rpm -Fvh paquete.rpm : Actualiza un programa ya instalado. Si no estaba instalado antes, entonces no hace nada.
rpm -e programa : Desinstala un programa. Nótese que no es necesario indicar la versión del programa.
rpm -qi programa : Muestra informaci´on sobre un programa instalado.
rpm -ql programa : Lista los archivos pertenecientes a un paquete.
rpm -ql programa | grep bin : Muestra los archivos ejecutables pertenecientes a un programa.
rpm -qf /ruta/a/un/archivo : Muestra el nombre del paquete dueño de un archivo.



El Infierno de las dependencias



Todo esto de los sistemas de paquetes suena muy bien, pero hay algunos inconvenientes. Supongamos, por ejemplo, que nuestro programa SuperPoetaVirtual utiliza para su funcionamiento una biblioteca llamada libversos. Supongamos también que hemos descargado la versión RPM de SuperPoetaVirtual, pero no hemos instalado libversos. Al intentar instalar SuperPoetaVirtual con el comando rpm -Uvh SuperPoetaVirtual-8.0-11.rpm, el sistema se negará a hacerlo, entregándonos un mensaje de error de “dependencias no resueltas".

Supongamos que después de mucho investigar, alguien nos dice que necesitamos instalar primero el paquete libversos-0.95-2.rpm, ya que SuperPoetaVirtual depende de esta biblioteca para funcionar. Lo descargamos, pero el sistema ahora alega que libversos necesita el paquete poetax-0.53 para funcionar, el cual no está instalado. Y así sucesivamente...

¿ Entiendes ahora por qué algunos hablan del "Infierno de las dependencias" ?

Puede ser muy tedioso satisfacer todas las dependencias manualmente. Es posible instalar a la fuerza (sin satisfacer las dependencias), pero los resultados pueden ser impredecibles. Tal vez simplemente no te funcione alguna de las características del programa, o tal vez tu sistema se niegue a arrancar la próxima vez que reinicies.

Para solucionar este problema se han creado algunas herramientas que se encargan de instalar un programa y todas sus dependencias. A continuación se describen las más famosas.


Advanced Package Manager (apt)



Este sistema, muy famoso entre los usuarios de Debian, funciona hoy también en RedHat, Fedora y otras distribuciones. Para instalar un paquete y sus dependencias, apt busca los paquetes necesarios en repositorios, que pueden ser desde un CD hasta un servidor en Internet. Los repositorios se indican en el archivo /etc/apt/sources.list . apt se encarga de descargar e instalar todo lo necesario, mediante simples instrucciones escritas por el usuario.

apt-get update : Actualiza la lista de paquetes que está en los repositorios. Es necesario ejecutar este comando periódicamente antes de hacer cualquier otra operación con apt.
apt-get install paquete : Instala un paquete y sus dependencias.
apt-get upgrade : Actualiza los programas instalados en tu PC a la última versión disponible en los repositorios.
apt-cache search palabra clave : Busca en la lista de paquetes (y en sus descripciones) los que correspondan a la palabra clave que le hemos indicado. Muy útil para buscar programas.
apt-get dist-upgrade : Actualiza la distribución completa.
apt-get remove paquete : Desinstala un paquete.
apt-get autoremove : Elimina cualquier paquete que no sea necesitado despues de una desinstalación.


Yellow dog Updater Modified (yum)



Este sistema fue creado por la distribución Yellow dog. Es actualmente el sistema oficial de Fedora. Al igual que apt, usa repositorios para buscar los paquetes a instalar. La lista de repositorios se indican en el archivo /etc/yum.conf.

yum install paquete : Instala un paquete y sus dependencias.
yum search paquete : Busca un paquete en la lista de paquetes disponibles.
yum update : Actualiza los programas instalados a la última versión disponible en los repositorios.
yum upgrade : Actualiza la distribución completa.
yum remove programa : Elimina un programa y todos los que dependen de él.


Red Hat Network urpmi



Este sistema fue creado para la distribución Mandriva (anteriormente Mandrake) y es el sistema de paquetes oficial de esta distribución. También usa el concepto de repositorios, e inclusive los CDs de instalación son tratados como un repositorio más (quedan configurados al concluir la instalación del sistema).

urpmi.update -a : Actualiza la información de los paquetes disponibles en los repositorios que tengamos configurados.
urpmi paquete : Instala un paquete y sus dependencias.
urmpq palabraclave : Busca en la lista de paquetes (y en sus descripciones) los que correspondan a la palabra clave que le hemos indicado. Muy útil para buscar programas.
urpmi --auto-select : Instala la última versión disponible de los paquetes que tengamos instalados en el sistema.
urpme paquete : Elimina el paquete seleccionado y todos los paquetes que dependan de él.
urpmi.addmedia : Se utiliza para agregar repositorios.
urpmi.removemedia : Se utilizan para quitar repositorios.


Herramientas gráficas



Muchas de las herramientas comentadas anteriormente poseen interfaces gráficas. Por ejemplo, synaptic es un excelente front-end para la herramienta apt. Sin embargo, como su funcionamiento es muy intuitivo, no las vamos a comentar aquí. Vas a tener que probarlas tú mismo.



Otros métodos de instalación



Hoy en día, muchos programas tienen sus propios sistemas de instalación (por ejemplo, Mozilla Firefox, aMSN, algunos paquetes de Quake 2 y 3, etc.). En ese caso sólo tienes que leer la documentación que acompaña al programa.




Recomendaciónes finales



Ya que has tenido la paciencia de llegar hasta aquí, permíteme premiarte con unos cuantos consejos finales.

* Usa siempre el sistema de paquetes que te ofrezca tu distribución de Linux. Así te evitarás muuuuchos problemas y podrás hacer uso de todas las ventajas que te ofrece tu distribución (actualizaciones automáticas, rápida corrección de errores y uso de los parches apropiados, etc.).
* Evita instalar desde código fuente. De lo contrario corres el riesgo de terminar con un sistema Linux desordenado, en el que no sepas ni siquiera qué programas has instalado.
* Si quieres usar un programa y no encuentras un paquete apropiado para tu distribución, puedes crear el tuyo. No es tan difícil como parece a primera vista. Busca información acerca de los programas alien y checkinstall, que te ayudarán en esta tarea.
* Si necesitas opciones especiales de compilación para algún programa, usa los paquetes de código fuente. Por ejemplo, los archivos .src.rpm contienen el código fuente de los programas empaquetados con RPM. Así puedes modificar lo que estimes necesario y luego reconstruir el paquete rpm con un simple comando.




Conclusiones



Hoy en día, la dificultad de instalar programas en Linux ha disminuido mucho. De hecho, muchos linuxeros encuentran que la forma de administrar programas del “otro" sistema operativo es obsoleta y tendiente a graves errores.

Los sistemas de paquetes sobre Linux son robustos y fáciles de usar. Por ello, Linux está logrando ser una plataforma al alcance de los usuarios “normales", pero sin dejar de ser un sistema sólido.

Así que ya no tienes la excusa de que no usas Linux porque “es muy difícil". Sólo tienes que dedicarle algo de tiempo a aprender su manejo... y te aseguro que no te arrepentirás.



Fuente

16 comentarios - Instalación de Programas en Linux

@Llave
10, yo prefiero adept y synaptic, dos clics y se instala el programa desde la página web o desde el dvd, en ubuntu están los restricted extras que son todos los codecs, java, flash, etc instalando unicamente ese paquete, muy fácil.

Aunque tambíen instalado los .deb, los .rpm, he compilado programas desde consola, etc.
@brutus
muy buen post loco, bien explicado. Te dejo 10
@Junkie
Muy bueno lo tuyo che, van puntines y un blobito
@tarbzip2
EEEEEe y el tgz? jaja ta bueno.
@PsicoDealer
muy bueno el post.
todo bien explicado.
@joakoej
Uh te pasaste, el mejor post que vi en todo Taringa!, al fin alguien explica a novatos como yo como funciona Linux, al menos la parte de instalaciòn.
Ayer me instalé Fedora 17 y estuve viendo páginas sobre como instalar los mejores programas y que hacer después de la instalación. Pero ninguna te explica que estás haciendo y hay que cosas que no pude instalar porque no sabìa como. La mayoría te dice que uses terminales, pero si bien pude instalar varios programas así, no entendía cómo es que lo hacía
+ 10!!!