Como explique en alguna de las guías anteriores, cualquier distribución de Linux mas o menos moderna trae su Administrador de Paquetes. Cada distribución maneja los paquetes a su manera y con un Administrador propio, asi que no voy a profundizar mucho en como se usa un Administrador especifico ya que no tiene sentido practico (convengamos que es buscar, tildar si se quiere instalar o des-tildar si se quiere des-instalar y apretar “aceptar”).
Estos paquetes es la forma que tienen las distribuciones de instalar o des-instalar programas, librerías, etc. Es bastante útil ya que se reutiliza mucho código. Por ejemplo, si mi programa requiere manipular imágenes jpeg, en vez de escribir el código puedo usar una librería del sistema, esto crea una dependencia (mas adelante), lo que significa que mi programa no puede funcionar si no esta esa librería. Pero, a su vez significa que cualquier programa que necesite manipular imágenes jpeg puede utilizar esa misma librería y no hace falta que este el mismo código dos veces en el rígido.
Los dos tipos de paquetes mas importantes o mas usados son RPM y DEB. Como se imaginaran los RPM fueron originalmente diseñados por RedHat y eventualmente termino convirtiéndose en RPM Package Manager (sisi, un acronismo recursivo) y usados por varias distribuciones de Linux, entre ellas (aparte de RedHat) estan, Mandriva, Fedora, openSUSE.
Los DEB fueron desarrollados por Debian (duh!) y si bien la idea es la misma, hay ciertas diferencias en aspectos técnicos sobre que puede hacer cada tipo de paquete y como se arman, que para una guía básica están totalmente de mas. Las distribuciones mas importantes que usan DEB son, obviamente Debian y Ubuntu.
Lo que precisan saber es como funciona el tema de las dependencias, ya que muchas veces van a toparse con esto. Como explique antes, un paquete X puede generar una o mas dependencias sobre que cosas precisa para poder instalarse. Generalmente los Administradores de Paquetes resuelven las dependencias y se limitan a informar que aparte del paquete que seleccionamos tienen que instalar X otros paquetes y listo, se le da aceptar y ya esta, se baja lo que hace falta, se instala y se usa, tan simple como eso.
Hay veces que no sucede así, sobre todo con repositorios que no son los oficiales (un repositorio es un sitio que contiene paquetes, información sobre esos paquetes y de que dependen)
También puede darse el caso de paquetes que dependan de una versión especifica de otro, y por mas que este instalado, si no es la versión que espera el paquete que queremos instalar, vamos a tener algún problema.
Bueno, aca les dejo lo basico sobre como se instala un paquete RPM y un paquete DEB
RPM: rpm -Uvh [nombre_del_paquete].rpm
DEB: dpkg -i [nombre_del_paquete].deb
Ahora a lo interesante. Muchas veces (sobre todo con algunos proyectos medio turbios o muy experimentales) nos va a suceder que no hay paquetes, ni repositorios, ni nada excepto el código fuente. Esto es generalmente muy interesante por tres motivos, el primero es que se puede toquetear todo con respecto a un programa (aunque se requieren conocimientos importantes), el segundo es que podemos tener la ultima versión con alguna corrección o algún feature nuevo mucho antes de que aparezca en los repositorios y el tercero es que va a compilarse con todas las optimizaciones posibles para la pc en la que se va a ejecutar, así que va a funcionar mas rápido que usando un ejecutable genérico.
Como dije antes, esto no va a ser una guía sobre programación, sino algo básico sobre como compilar un código fuente “estandar“. Generalmente el codigo va a venir en un archivo .tar.gz o .tar.bz2, este se descomprime asi:
tar xzf [nombre_de_archivo].tar.gz
tar xjf [nombre_de_archivo].tar.bz2
Eso suele alcanzar, algunas distribuciones no requieren la z (indica que es un archivo GZ) o la j (indica que es un archivo BZ2) ya que lo detectan automáticamente. Si todo va bien no van a ver ningún mensaje, ni de error ni otros. Normalmente esta operacion va a crear un directorio con los archivos del programa adentro, así que hay que entrar a ese directorio.
cd [nombre_de_directorio]
Una vez adentro, tendría que existir un archivo ejecutable con el nombre “configure“, esto es lo primero que hay que ejecutar, ya que va a analizar el sistema y generar las reglas para la compilación. Uno de los archivos que se van a generar se llama “Makefile” y es el que es necesario que exista para poder compilar el programa.
./configure
Nota: Linux no tiene como PATH por defecto el directorio actual, así que hay que especificar el ./ antes del nombre del archivo que se quiere ejecutar.
Puede suceder que si el programa en cuestión requiere alguna dependencia, va a pedir el nombre y versión necesaria de la librería para poder compilar. Si vamos al Administrador de Paquetes lo tendríamos que encontrar (si es algo mas o menos común) pero acá es donde vine el truco para que funcione. Supongamos que durante la etapa de configuración se nos pide la libreria “libxml2″, entonces vamos al Administrador de Paquetes y buscamos “libxml2″, si todo va bien, vamos a ver al menos dos paquetes disponibles, “libxml2″ y “libxml2-dev” (o similar) el que realmente precisamos es “libxml2-dev” (el dev es por development, o desarrollo) que de todas formas tiene como dependencia al otro paquete, así que se van a instalar los dos. Esta es una de las cosas mas importantes para recordar cuando compilamos un programa!
En algunos casos el archivo “configure” no existe, pero ya viene el “Makefile” armado para compilar. En ese caso el paso anterior no se aplica.
Luego viene la compilacion, lo cual es bastante mas sencillo ya que si la configuración funciono bien, la compilación tiene muchas probabilidades de ser exitosa.
make
Y después la instalación del programa, en este momento se requieren privilegios de root, recuerden que es el único usuario que puede instalar un programa a nivel sistema. Se puede usar cualquiera de las dos opciones que mencione en la guias anteriores tanto su como sudo.
make install
o
sudo make install
Nota: cualquiera sea la opción que utilicen, el sistema va a pedirles la clave de root. Si ejecutan “make install” sin privilegios de root, van a ver un montón de errores con respecto a falta de privilegios para copiar o modificar archivos del sistema.
Una vez instalado tendrían que poder ejecutarlo sin problemas, y si el programa esta preparado tendrían que encontrar el icono en el menú principal del sistema.
Hasta acá se cubre todo lo necesario sobre como instalar un programa. Para des-instalar un paquete el procedimiento es el siguiente.
Con RPM:
rpm -e [nombre_del_paquete]
Para ver los paquetes instalados: rpm -qa
Esto puede mostrar una lista muy larga, pero sirve porque es necesario especificar el nombre del paquete completo.
Para buscar en esa lista un nombre pueden usar: rpm -qa | grep -i [nombre]
Con DEB:
dpkg -r [nombre_del_paqute]
Nota: tiene el mismo tema que el rpm, asi que si precian ver los paquetes instalado y buscar el nombre completo usen: dpkg -l | grep -i [nombre]
Para des-instalar un programa instalado desde el código fuente, es necesario el “Makefile” que se genero con el “./configure“, así que antes de borrar el código fuente, prueben el programa y una vez convencidos de que va a quedar instalado, recien ahi borren el código fuente.
Para des-instalar utilicen este comando
make uninstall
Nota: requiere privilegios de root
Si por algún motivo se mandaron algun macanazo y quieren empezar con la configuracion e instalacion de cero:
make clean
Esto va a borrar todo lo compilado y configurado hasta el momento, es decir, va a ser como si recién hubiesen descomprimido el programa.
Creo que esto cubre bastante bien todo el tema de instalación/des-instalación de programas, si me olvide de algo, por favor déjenlo en los comentarios.

