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
man apt
- APT (Package Manager)
- PackageManagement - Debian Wiki
- AptCLI - Debian Wiki
- Aptitude - Debian Wiki
man apt-get
man apt-cache
man dpkg
man sources.list
- DebianRepository - Debian Wiki
- SourcesList - Debian Wiki
- Aptitude - Debian Wiki