Manejo básico de paquetes en Debian

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

