En este breve tutorial voy a intentar explicar como funcionan los Sistemas de Gestión de Paquetes en Linux, así como las diferencias y formas de uso de APT, dpkg y Aptitude en Sistemas Linux basados en Debian.
Sistemas de Gestión de Paquetes
Los Sistemas de Gestión de Paquetes (Package Managers), son los encargados de automatizar todos los procesos de instalación, desinstalación y configuración de programas. Entre los Sistemas de Gestión de Paquetes más conocidos podemos destacar:
- dpkg (Debian Package Manager), utilizado por APT en Sistemas basados en Debian.
- APT (Advanced Package Tool), creado por Debian y utiliza dpkg para funcionar.
- rpm (Red Hat Package Manager)
- yum (Yellow Dog Updated Modified), utilizado por Centos.
- Aptitude, basado en Ncurses.
Habitualmente utilizamos los Sistemas de Gestión de Paquetes a través de un terminal, pero hoy en día han ido implementado una GUI (Graphical User Interface), que gracias a su interfaz sencilla y fácil de utilizar nos ayudan con la instalación y desinstalación de Software.
Los Sistemas de Gestión de Paquetes utilizan fuentes de descarga de Software o Paquetes, llamadas Repositorios. De esta forma proceden a con la descarga, configuración e instalación de forma automática. Si dicho software es actualizado en el repositorio de donde proviene, el Sistema de Gestión de Paquetes procede a actualizarlo automáticamente, siempre que el usuario de su aprobación.
En este tutorial nos centraremos en los Sistemas de Gestión de Paquetes basados en Debian (dpkg, APT y Aptitude)
Que es un Paquete (Package)
Un Paquete (Package) es un programa o software comprimido o empaquetado en un solo fichero, que contiene todos los ficheros de una aplicación. Dicho paquete puede contener un binario, un fichero de configuración y otras dependencias de software. Entre las extensiones de paquetes más conocidas podemos destacar:
- .deb (debian package)
- .rpm (Red Hat Package)
- .tgz (Tar and Gzip)
Como los paquetes no siempre contienen todas las dependencias necesarias a la hora de instalarlos, el Sistemas de Gestión de Paquetes se encarga de automatizar esta tarea, comprobando y descargando las dependencias antes de proceder con su instalación.
APT (Advanced Package Tool)
APT
está desarrollado por Debian y provee una interfaz de alto nivel para configurar, instalar y desinstalar programas en Linux. Cuando realizamos cualquier operación relacionada con la configuración, instalación o desinstalación de paquetes vía apt, en realidad estamos utilizando dpkg. APT ha sido creado para poder gestionar de una forma más cómoda y eficaz los paquetes de programas.
Antes de realizar cualquier instalación, siempre necesitamos proceder con la descarga y actualización de la lista de paquetes mediante el uso de apt update, que lo que hace es descargar un archivo llamado Packages. Update, se encarga de descargar la información de todas las fuentes o repositorios que tengamos configuradas.
1 |
$ sudo apt update |
Upgrade se encarga de consultar la información obtenida por update para así comprobar que paquetes necesitan ser actualizados.
1 |
$ sudo apt upgrade -y |
Si queremos lanzar el proceso de comprobación y actualización al mismo tiempo podemos ejecutar ambos comandos en una sola línea:
1 |
$ sudo apt update -y && sudo apt upgrade -y |
Para comprobar todos los paquetes instalados en el sistema utilizamos list. Este nos debe mostrar tanto los paquetes locales como aquellos instalados desde repositorios.
1 |
$ apt list --installed |
Si necesitamos buscar un paquete en concreto podemos utilizar el parámetro search. Veamos como buscar el paquete de la herramienta ncftp.
1 2 3 4 5 |
# sudo apt search ncftp Sorting... Done Full Text Search... Done ncftp/kali-rolling 2:3.2.5-2.2 amd64 User-friendly and well-featured FTP client |
Parar proceder con la instalación de un paquete utilizamos el parámetro install y APT se encargará de instalar automáticamente todas sus dependencias necesarias. Si lo que necesitamos es reinstalar un paquete podemos utilizar el parámetro reinstall.
1 |
$ sudo apt install ncftp -y |
Parar proceder con la desinstalación de un paquete utilizamos el parámetro remove, que también eliminará automáticamente todas las dependencias que dependan del paquete instalado.
1 |
$ sudo apt remove ncftp -y |
En el caso de que necesitemos eliminar también todos sus ficheros de configuración y dependencias utilizamos la opción –purge.
1 |
$ sudo apt remove ncftp --purge |
Si lo que necesitamos es consultar todas las dependencias que necesita un programa para poder funcionar correctamente utilizamos el parámetro depends.
1 2 3 4 5 |
$ sudo apt depends ncftp ncftp Depends: libc6 (>= 2.15) Depends: libncurses6 (>= 6) Depends: libtinfo6 (>= 6) |
Para ver información detallada de un paquete utilizamos el parámetro show, que nos muestra su versión, dependencias, tamaño de descarga, etc …
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
$ sudo apt show ncftp Package: ncftp Version: 2:3.2.5-2.2 Priority: optional Section: net Maintainer: Noël Köthe <noel@debian.org> Installed-Size: 1,371 kB Depends: libc6 (>= 2.15), libncurses6 (>= 6), libtinfo6 (>= 6) Homepage: http://www.ncftpd.com/ncftp/ Tag: interface::text-mode, network::client, protocol::ftp, role::program, scope::utility, uitoolkit::ncurses, use::downloading, works-with::file Download-Size: 293 kB APT-Sources: http://http.kali.org/kali kali-rolling/main amd64 Packages Description: User-friendly and well-featured FTP client Ncftp allows a user to transfer files to and from a remote network site, and offers additional features that are not found in the standard interface, ftp. This version has Readline support enabled. |
Cuando instalamos, actualizamos y eliminamos paquetes, es probable que algunas dependencias ya no sean necesarias. Para proceder con su eliminación después de desinstalar o actualizar paquetes, podemos proceder a realizar una eliminación automática de todas ellas, utilizando la opción autoremove.
1 |
$ sudo apt autoremove |
dpkg (Debian Package Manager)
El Sistema de Gestión de Paquetes dpkg
(Debian Package Manager), ha sido creado por Ian W. Jackson para Debian y permite instalar paquetes previamente descargados. A diferencia de APT es una herramienta de bajo nivel y no cuenta con muchas de las características que ofrece APT.
Veamos con detalle cuales son las principales diferencias:
- Dpkg no puede extraer ni descargar paquetes de Repositorios Remotos.
- No instala dependencias de los paquetes previamente descargados.
- Sólo indexa paquetes locales del sistema, por lo que cualquier paquete instalado desde un repositorio no será indexado.
Por lo que debemos recordar que si utilizamos dpkg para descargar e instalar paquetes, si estos disponen de dependencias para funcionar, tendremos que instalarlas a parte.
En estos casos podemos utilizar apt con el fin de instalar las dependencias necesarias. Existe un comando que nos facilita esta tarea:
1 |
$ sudo apt install -f |
Para realizar una comprobación de los paquetes instalados, la opción –list será la que necesitemos:
1 |
$ dpkg --list |
Diferencias entre APT y dpkg y cual utilizar
Una de las dudas que tienen la mayor parte de usuarios es saber cual de ellos tiene que utilizar. Veamos cuales son sus diferencias:
- Tanto dpkg como APT coexisten conjuntamente, haciendo que APT sea un Sistema de Gestión de Paquetes dependiente de dpkg.
- Tanto dpkg como APT se pueden utilizar en cualquier Sistema Linux basado en Debian.
- Ambos pueden listar e instalar paquetes .deb (debian package).
- Apt nos permite recuperar y descargar paquetes de Repositorios Remotos haciendo uso de un solo comando, ahorrando trabajo, mientras que dpkg sólo permite realizar instalaciones de archivos locales previamente descargados.
- dpkg no permite buscar ni realizar instalaciones desde repositorios remotos.
Podremos utilizar cualquiera de ellos, pero es recomendable utilizar apt ya que proporcionan una manera eficiente y correcta de gestionar los paquetes.
Aptitude
Aptitude
es otro Sistema de Gestión de Paquetes para Sistemas basados en Debian. Al igual que APT nos permite listar, instalar, actualizar o eliminar paquetes. La diferencia es que podemos realizar todas estas acciones desde una GUI (Graphical User Interface) o desde línea comandos gracias a que utiliza Ncurses.
Aptitude proporciona alguna característica adicional a APT.
- Coloreado de acciones a realizar.
- Sistema de selección de dependencias basada en puntos, que sugiere al usuario las acciones a realizar al instalar dependencias.
Para proceder con la instalación de Aptitude podemos hacerlo vía APT.
1 |
$ sudo apt install aptitude |
Su desinstalación también puede realizarse vía APT.
1 |
$ sudo apt remove aptitude |
Para lanzar la interfaz gráfica basaría con escribir aptitude.
Bibliografía