Este artículo está orientado a usuarios que se están iniciando en la gestión de servidores basados en Debian/Devuan y explica los comandos básicos para administrar (buscar, instalar, actualizar, desinstalar) paquetes de software utilizando el gestor de paquetes APT.



En Debian/Devuan y derivados (Ubuntu, Mint, etc.), APT (Advanced Package Tool) maneja la instalación, actualización y desinstalación de software. Esta herramienta simplifica el proceso de gestión de software automatizando el proceso de descarga, extracción, configuración e instalación de paquetes de software, ya sea desde archivos precompilados o a través de la compilación del código fuente.

En Debian, toda pieza de software es compactada en un archivo llamado "paquete", el cual utiliza una extensión .deb.

APT está conformado por un conjunto de herramientas organizadas en diferentes niveles. Por un lado está el gestor de paquetes de bajo nivel dkpg. Este se encarga de las tareas básicas como extraer, configurar, compilar e instalar paquetes, entre otras. dpkg rara vez será utilizado directamente por el usuario, sino que es invocado por los gestores de alto nivel como aptitude y apt-get.

apt-get es uno de los gestores de alto nivel que se basa en dpkg para mantener el conjunto de software en el sistema. apt-get se encarga de actualizar la información de los repositorios de paquetes, resolver dependencias, descargar paquetes e instalarlos utilizando dpkg.

aptitude es una interfaz a librerías de APT desarrollado en Ncurses y constituye una alternativa (menos utilizada y popular) a las herramientas apt-*, aunque con funcionalidad limitada ya que, por ejemplo, no tiene la capacidad de compilar paquetes desde su código fuente.

Finalmente existe la herramienta apt, la cual es una interfaz de alto nivel a las herramientas de nivel intermedio como apt-get y apt-cache y está optimizada para su uso interactivo (es decir, por el usuario).

En general, el usuario de alto nivel trabajará con las herramientas apt-* o directamente apt. El gestor dpkg es utilizado poco frecuentemente por el usuario y sólo para casos muy específicos, como por ejemplo instalar un paquete .deb descargado manualmente.

Veamos ahora las tareas básicas de manejo de paquetes en Debian/Devuan y derivados.

Buscar actualizaciones

Lo que se conoce como buscar actualizaciones en otros sistemas operativos o software en general, en Debian consiste en actualizar la información de repositorios (descargar una base de datos fresca de paquetes disponibles junto con sus versiones). Se puede realizar tanto con apt como con apt-get:

# apt update
# apt-get update

Un sistema puede tener configurados varios repositorios (conjuntos de paquetes de software disponibles desde un medio o servidor) mediante diferentes URLs en el archivo de configuración sources.list.

Ambos comandos se encargan de obtener las listas de paquetes disponibles actualizadas, junto con sus versiones.

Actualizar el sistema

Luego de actualizar los repositorios, es posible instalar las actualizaciones disponibles. El comando upgrade se encarga de instalar las actualizaciones disponibles (reinstalar paquetes de los cuales se dispone de una versión actualizada):

# apt upgrade

O con apt-get:

# apt-get upgrade

Ambos comandos se encargan de instalar nuevos paquetes que puedan ser necesarios para satisfacer dependencias. Sin embargo nunca eliminan o remueven paquetes existentes.

Si se desea ejecutar una actualización completa, es decir instalar dependencias que requieren remover paquetes actualmente instalados para ser reemplazados por otros (y así actualizar el sistema como un todo), es necesario recurrir a full-upgrade o dist-upgrade, dependiendo de la herramienta utilizada.

Con apt:

# apt full-upgrade

Con apt-get:

# apt-get dist-upgrade

Buscar paquetes

Es posible buscar paquetes por su nombre o palabra clave en la descripción corta utilizando el comando "search":

# apt search
# apt-cache search

Por ejemplo, veamos cómo buscar paquetes asociados al servidor Web Nginx utilizando apt-cache:

root@hal9000:/home/emi# apt-cache search nginx | grep server
libnginx-mod-nchan - Fast, flexible pub/sub server for Nginx
nginx - small, powerful, scalable web/proxy server
nginx-common - small, powerful, scalable web/proxy server - common files
nginx-doc - small, powerful, scalable web/proxy server - documentation
nginx-extras - nginx web/proxy server (extended version)
nginx-full - nginx web/proxy server (standard version)
nginx-light - nginx web/proxy server (basic version)

Obtener información de paquetes

Si se desea obtener mayor información sobre un paquete, como su versión, dependencias, etc. recurrir al subcomando "show":

# apt show
# apt-cache show
# apt-cache showpkg

Ejemplos:

root@hal9000:/home/emi# apt show nginx
Package: nginx
Version: 1.10.3-1+deb9u3
Priority: optional
Section: httpd
Maintainer: Debian Nginx Maintainers <pkg-nginx-maintainers@lists.alioth.debian.org>
Installed-Size: 94.2 kB
Depends: nginx-full (<< 1.10.3-1+deb9u3.1~) | nginx-light (<< 1.10.3-1+deb9u3.1~) | nginx-extras (<< 1.10.3-1+deb9u3.1~), nginx-full >= 1.10.3-1+deb9u3) | nginx-light >= 1.10.3-1+deb9u3) | nginx-extras (>= 1.10.3-1+deb9u3)
Homepage: http://nginx.net
Tag: implemented-in::c, interface::daemon, network::server, network::service,
 protocol::http, role::program, use::proxying
Download-Size: 81.8 kB
APT-Sources: http://auto.mirror.devuan.org/merged ascii/main amd64 Packages
Description: small, powerful, scalable web/proxy server

N: There is 1 additional record. Please use the '-a' switch to see it

El comando apt-cache show muestra aproximadamente la misma información que apt show. Sin embargo, el subcomando "showpkg" muestra información mucho más detallada, como dependencias directas y reversas:

root@hal9000:/home/emi# apt-cache showpkg nginx
Package: nginx
Versions: 
1.14.1-1~bpo9+1 (/var/lib/apt/lists/auto.mirror.devuan.org_merged_dists_ascii-backports_main_binary-amd64_Packages)
 Description Language: 
                 File: /var/lib/apt/lists/auto.mirror.devuan.org_merged_dists_ascii_main_binary-amd64_Packages
                  MD5: 04f6acc7fe672a4d62f4345c9addf4a7
 Description Language: 
                 File: /var/lib/apt/lists/auto.mirror.devuan.org_merged_dists_ascii-backports_main_binary-amd64_Packages
                  MD5: 04f6acc7fe672a4d62f4345c9addf4a7

1.10.3-1+deb9u3 (/var/lib/apt/lists/auto.mirror.devuan.org_merged_dists_ascii_main_binary-amd64_Packages) (/var/lib/apt/lists/auto.mirror.devuan.org_merged_dists_ascii-security_main_binary-amd64_Packages)
 Description Language: 
                 File: /var/lib/apt/lists/auto.mirror.devuan.org_merged_dists_ascii_main_binary-amd64_Packages
                  MD5: 04f6acc7fe672a4d62f4345c9addf4a7
 Description Language: 
                 File: /var/lib/apt/lists/auto.mirror.devuan.org_merged_dists_ascii-backports_main_binary-amd64_Packages
                  MD5: 04f6acc7fe672a4d62f4345c9addf4a7


Reverse Depends: 
  nginx-extras,nginx 1.4.5-1
  gitlab,nginx
  zoneminder,nginx
  zabbix-frontend-php,nginx
  python3-certbot-nginx,nginx
  nginx-light,nginx 1.4.5-1
  nginx-full,nginx 1.4.5-1
  nginx-extras,nginx 1.4.5-1
  mailman3-web,nginx
  lemonldap-ng-uwsgi-app,nginx
  lemonldap-ng-fastcgi-server,nginx
  fusiondirectory,nginx
  diaspora-common,nginx
  liblemonldap-ng-portal-perl,nginx
  lemonldap-ng-fastcgi-server,nginx
  zabbix-frontend-php,nginx
  sx,nginx
  sugarplum,nginx
  samizdat,nginx
  python3-certbot-nginx,nginx
  pyblosxom,nginx
  nginx-light,nginx 1.4.5-1
  nginx-full,nginx 1.4.5-1
  cacti,nginx
  liblemonldap-ng-portal-perl,nginx
  lemonldap-ng-fastcgi-server,nginx
  fusiondirectory,nginx
  fcgiwrap,nginx
  coquelicot,nginx
  colplot,nginx
  collectd-core,nginx
Dependencies: 
1.14.1-1~bpo9+1 - nginx-full (19 1.14.1-1~bpo9+1.1~) nginx-light (19 1.14.1-1~bpo9+1.1~) nginx-extras (3 1.14.1-1~bpo9+1.1~) nginx-full (18 1.14.1-1~bpo9+1) nginx-light (18 1.14.1-1~bpo9+1) nginx-extras (2 1.14.1-1~bpo9+1) 
1.10.3-1+deb9u3 - nginx-full (19 1.10.3-1+deb9u3.1~) nginx-light (19 1.10.3-1+deb9u3.1~) nginx-extras (3 1.10.3-1+deb9u3.1~) nginx-full (18 1.10.3-1+deb9u3) nginx-light (18 1.10.3-1+deb9u3) nginx-extras (2 1.10.3-1+deb9u3) 
Provides: 
1.14.1-1~bpo9+1 - 
1.10.3-1+deb9u3 - 
Reverse Provides: 
nginx-light 1.14.1-1~bpo9+1 (= )
nginx-full 1.14.1-1~bpo9+1 (= )
nginx-extras 1.14.1-1~bpo9+1 (= )
nginx-light 1.10.3-1+deb9u3 (= )
nginx-full 1.10.3-1+deb9u3 (= )
nginx-extras 1.10.3-1+deb9u3 (= )

Instalar paquetes

Para instalar un paquete simplemente basta con saber su nombre exacto, el cual coincide con el primer campo en la salida de apt search o apt-cache search:

root@hal9000:/home/emi# apt-cache search "atop"
atop - Monitor for system resources and process activity
hatop - interactive ncurses client for haproxy
numatop - NUMA runtime observation tool
root@hal9000:/home/emi# apt search "atop"
Sorting... Done
Full Text Search... Done
atop/stable 2.2.6-4 amd64
  Monitor for system resources and process activity

hatop/stable 0.7.7-1 all
  interactive ncurses client for haproxy

numatop/stable 1.0.4-3 amd64
  NUMA runtime observation tool

Luego simplemente utilizar el subcomando "install". Por ejemplo, para instalar el paquete "atop" con apt:

# apt install atop

O con apt-get:

# apt-get install atop

Desinstalar paquetes

Existen alternativas para eliminar un paquete. El subcomando "remove" elimina los archivos instalados por un paquete, pero mantiene cualquier archivo de configuración que haya sido modificado por el usuario. Esto se provee para mantener la configuración de un paquete en caso de que haya sido eliminado por error:

# apt remove atop
# apt-get remove atop

Si en cambio se desean eliminar TODOS los archivos intalados por un paquete, recurrir a "purge":

# apt purge atop
# apt-get purge atop

Es posible ejecutar "purge" sobre un paquete previamente eliminado con "remove" para deshacerse de cualquier archivo que haya quedado sin eliminar.

Limpieza de archivos y paquetes

Finalmente, el gestor APT dispone de ciertos comandos para hacer una "limpieza" del sistema.

En principio, el subcomando "autoremove" permite eliminar (desinstalar) aquellos paquetes que fueron instalados automáticamente por el gestor (es decir como dependencias de otros paquetes instalados) pero que ya no son necesarios:

# apt autoremove
# apt-get autoremove

Luego existen comandos avanzados (sólo disponibles a través de apt-get) para eliminar los archivos de paquetes descargados previamente pero que ya no están disponibles en los repositorios (versiones obsoletas):

# apt-get autoclean

O directamente eliminar TODOS los archivos de paquetes descargados:

# apt-get clean

Cabe destacar que una vez instalado un paquete, no es necesario contar con el .deb (podría pensarse como una especie de "instalador" en un sistema Windows), pues sus archivos ya fueron extraídos e instalados en el sistema. Por otro lado, siempre es posible volver a descargarlos desde los repositorios (siempre que se cuente con acceso a Internet y la versión del paquete no haya cambiado).

Referencias


Tal vez pueda interesarte


Compartí este artículo