DEB: Instalación de aplicaciones en Debian y derivados
En este post veremos cómo instalar aplicaciones en Debian GNU/Linux, y derivadas, incluyendo distros Ubuntu, o cualquier distribución que maneje paquetes DEB.
Introducción
Las aplicaciones de software libre u open source se distribuyen de dos maneras. Una es mediante el código fuente, es decir, el código escrito por el programador, que nosotros podremos descargar, desempaquetar y compilar para obtener los binarios ejecutables y correr la aplicación.
La otra manera es mediante los paquetes pre-compilados de una distribución.
Por una cuestión de consistencia, se recomienda utilizar paquetes precompilados descargados desde los repositorios de la distribución y solo en el caso de que no dispongamos de los paquetes precompilados para nuestras aplicaciones, o quisiésemos tener una versión más actualizada de la aplicación respecto de la que está publicada en el repositorio, podremos compilar la aplicación provista directamente por su desarrollador o grupo de desarrolladores.
La gestión de paquetes en Debian.
Debian cuenta con su propio repositorio de aplicaciones pre-compiladas en formato empaquetado .deb.
Para instalar dichas aplicaciones podremos utilizar algún gestor de paquetes y actualizaciones, ya sea en formato gráfico, o en modo consola, y mediante el mismo conectarse al repositorio de software y descargar los paquetes .deb necesarios.
El repositorio de software.
El repositorio, también conocido como repo, es un servidor de archivos al que nuestro sistema operativo se conectará para descargar los paquetes. El repositorio cuenta con una lista de paquetes, y los paquetes .deb, con su meta-información sobre dependencias y relaciones entre paquetes, así como también los conflictos entre ellos.
Instalando paquetes .deb
Si necesitamos instalar un paquete .deb determinado, suponiendo que hemos descargado la aplicación pre-compilada y queremos instalarla, podremos utilizar el gestor de paquetes por default de Debian: dpkg.
Algunos de los comandos útiles de este gestor son los siguientes:
Para instalar un paquete .deb descargado, podremos utilizar la opción «-i» de esta forma:
dpkg -i /ruta/al/paquete.deb
Para eliminar una aplicación instalada podremos usar:
dpkg -r nombre_aplicacion
Cabe notar que aquí no se especifica el nombre del paquete, sino el nombre con el que fue instalada la aplicación.
Para listar los paquetes instalados en nuestro sistema podremos usar la opción «-l» de esta forma:
die@tuta2:~$ dpkg -l|head [...] ii 4pane 0.8.0-1.squeeze i386 A four-pane ... ii accountsservice 0.6.34-1 i386 query and ... ii acl 2.2.52-1 i386 Access control ... ii acpi 1.6-1 i386 displays ... ii acpi-support-base 0.141-2 all scripts for ... [...]
Si quisiéramos filtrar la lista y buscar algun paquete en particular, podremos usar el pipe y un comando grep. Por ejemplo, para determinar si tcpdump está instalado en nuestro sistema:
die@tuta2:~$ dpkg -l|grep tcpdump ii tcpdump 4.4.0-1 i386 command-line network traffic analyzer
Como se puede ver en la salida, el paquete está instalado, en la versión 4.4.0 para arquitectura de 32b i386.
Las dependencias
Cuando hablamos de dependencias de software estamos haciendo referencia a los paquetes o aplicaciones y librerías necesarios para instalar y ejecutar una aplicación en cuestión. Por ejemplo, un software de sniffing de tráfico de red por lo general requiere de las bibliotecas PCAP para captura de paquetes. Es entonces esta biblioteca una de las dependencias de nuestro software de sniffing.
Así es que si necesitamos instalar, por ejemplo, tcpdump (un sniffer de trafico de red), deberemos instalar previamente las dependencias de dicho paquete, entre ellas, las librerías PCAP.
Los gestores de dependencias
Afortunadamente casi todas las distribuciones que hacen uso de repositorios cuentan con aplicaciones que se encargan de la resolución de las dependencias en forma automática, tal es el caso de las distribuciones basadas en paquetes .deb, como Debian, Ubuntu o Mint, o las distribuciones basadas en .rpm como RedHat, Fedora, Suse o Mandriva.
Por supuesto, existen otras distribuciones que hacen uso de sus propios gestores de paquetes, incluso aquellas que cuentan con repositorios de paquetes no compilados que serán compilados en el equipo cliente al descargarse.
Apt-get y aptitude en Debian
En Debian disponemos de apt-get por defecto, y de aptitude opcionalmente, por línea de comandos, para poder instalar nuestras aplicaciones .deb.
En modo gráfico también existen gestores de dependencias como Synaptics, Gdebi o Ubuntu Software Center, que vienen instalados por defecto con algunos entornos gráficos.
Veremos en este post algunos de los comandos de aptitude interesantes para poder instalar nuestras aplicaciones .deb sin morir en el intento.
Algunos comandos de gestión de paquetes
- Buscar un paquete por palabra clave:
aptitude search patron
- Ver la información de un paquete:
aptitude show nombre_paquete
- Instalar un paquete:
aptitude install nombre_paquete
- Desinstalar un paquete:
aptitude remove nombre_paquete
- Eliminar un paquete y su configuración:
aptitude purge nombre_paquete
- Descargar un paquete sin instalarlo (solo descarga el .deb):
aptitude download nombre_paquete
Actualizando la lista de paquetes del repositorio
Los comandos aptitude no acceden directamente al repositorio para búsquedas e instalaciones, sino que acceden a una base de datos local, la lista de paquetes conocidos del repositorio.
Ahora bien, esa lista va a quedar desactualizada en cuando a paquetes y versiones, ni bien el repositorio se actualice con paquetes nuevos.
Esto va a ocasionar que los comandos de búsqueda e instalación fallen al no encontrar los paquetes de la lista en el repositorio.
Para solucionar ésto, periódicamente podremos actualizar la lista de paquetes utilizando el siguiente comando:
aptitude update
El «aptitude update» solo actualiza la lista de paquetes del repositorio, pero NO actualiza los paquetes instalados en el sistema.
ara actualizar los paquetes, luego de haber actualizado la lista de paquetes, podremos ejecutar una actualización «segura» con:
aptitude safe-upgrade
Este comando tratará de actualizar todas las aplicaciones del sistema operativo, incluido el propio sistema, pero al ser «segura», en el caso de que requiera eliminar algún paquete en pro de actualizar otro, no lo hará.
Para una actualización completa podemos usar:
aptitude full-upgrade
Aquí sí se actualizarán todos los paquetes del sistema, incluso si para ello es necesario eliminar dependencias, o cambiarlas de versión. Esto puede ocasionar que en un sistema en producción algunos servicios dejen de funcionar por requerir dichos paquetes.
Combinando aptitude y dpkg
Si alguna aplicación requiere ser instalada, pero no se encuentra en el repositorio, puede ocurrir que el desarrollador la distribuya como un paquete .deb para distribuciones Debian-based.
Si es este el caso, podremos instalar dicho paquete usando, como vimos:
dpkg -i nombre_paquete_aplicacion.deb
Pero, ¿qué ocurre si dicha aplicación requiere dependencias? Simplemente no se instalará.
Afortunadamente en la mayor parte de los casos, las dependencias (librerías y utilidades) sí se encuentran en los repositorios, por lo que podremos completar la instalación de la aplicación ejecutando un:
aptitude -f install
Y este comando descargará e instalará todas las dependencias no resueltas de nuestra aplicación .deb descargada.
Espero les sirva!!
Hasta la próxima!