Comprensión de APT, APT-Cache y sus comandos de uso frecuente


Si alguna vez ha utilizado Debian o una distribución basada en Debian como Ubuntu o Linux Mint, es probable que haya utilizado el sistema de paquetes APT para instalar o eliminar software. Incluso si nunca ha incursionado en la línea de comandos, el sistema subyacente que alimenta la GUI de su administrador de paquetes es el sistema APT.

Hoy, vamos a echar un vistazo a algunos comandos familiares y a sumergirnos en algunos comandos APT que se usan con menos o más frecuencia, y arrojar algo de luz sobre este sistema brillantemente diseñado.

¿Qué es APT?

APT son las siglas de Advanced Package Tool. Se vio por primera vez en Debian 2.1 en 1999. Básicamente, APT es un sistema de gestión para paquetes dpkg, como se ve con la extensión * .deb. Fue diseñado no solo para administrar paquetes y actualizaciones, sino también para resolver los muchos problemas de dependencia al instalar ciertos paquetes.

Como cualquiera que estuviera usando Linux en aquellos días de los pioneros, estábamos muy familiarizados con el término "infierno de dependencia" cuando intentábamos compilar algo desde la fuente, o incluso cuando se trataba de varios archivos RPM individuales de Red Hat.

APT resolvió todos estos problemas de dependencia automáticamente, haciendo que la instalación de cualquier paquete, independientemente del tamaño o la cantidad de dependencias, sea un comando de una línea. Para aquellos de nosotros que trabajamos durante horas en estas tareas, ¡este fue uno de esos momentos en los que “el sol separa las nubes” en nuestras vidas con Linux!

Comprensión de la configuración de APT

Este primer archivo que veremos es uno de los archivos de configuración de APT.

$ sudo cat /etc/apt/sources.list
deb http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ precise main
deb-src http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ precise main

deb http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ precise-updates main
deb-src http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ precise-updates main

deb http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ precise universe
deb-src http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ precise universe
deb http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ precise-updates universe
deb-src http://us-west-2.ec2.archive.ubuntu.com/ubuntu/ precise-updates universe

deb http://security.ubuntu.com/ubuntu precise-security main
deb-src http://security.ubuntu.com/ubuntu precise-security main
deb http://security.ubuntu.com/ubuntu precise-security universe
deb-src http://security.ubuntu.com/ubuntu precise-security universe

Como probablemente pueda deducir de mi archivo sources.list, estoy usando Ubuntu 12.04 (Precise Pangolin). También estoy usando tres repositorios:

  1. Main Repository
  2. Universe Repository
  3. Ubuntu Security Repository

La sintaxis de este archivo es relativamente simple:

deb (url) release repository

La línea adjunta es el repositorio de archivos de origen. Sigue un formato similar:

deb-src (url) release repository

Este archivo es prácticamente lo único que tendrá que editar utilizando APT, y es probable que los valores predeterminados se adapten bastante bien a usted y nunca necesite editarlo en absoluto.

Sin embargo, hay ocasiones en las que es posible que desee agregar repositorios de terceros. Simplemente debe ingresarlos usando el mismo formato y luego ejecutar el comando de actualización:

$ sudo apt-get update

NOTA: ¡¡¡Sea muy consciente de agregar repositorios de terceros !!! Solo agregue de fuentes confiables y acreditadas. ¡Agregar repositorios poco fiables o mezclar versiones puede estropear seriamente su sistema!

Hemos echado un vistazo a nuestro archivo sources.list y ahora sabemos cómo actualizarlo, entonces, ¿qué sigue? Instalemos algunos paquetes. Digamos que estamos ejecutando un servidor y queremos instalar WordPress. Primero busquemos el paquete:

$ sudo apt-cache search wordpress
blogilo - graphical blogging client
drivel - Blogging client for the GNOME desktop
drupal6-mod-views - views modules for Drupal 6
drupal6-thm-arthemia - arthemia theme for Drupal 6
gnome-blog - GNOME application to post to weblog entries
lekhonee-gnome - desktop client for wordpress blogs
libmarkdown-php - PHP library for rendering Markdown data
qtm - Web-log interface program
tomboy-blogposter - Tomboy add-in for posting notes to a blog
wordpress - weblog manager
wordpress-l10n - weblog manager - language files
wordpress-openid - OpenID plugin for WordPress
wordpress-shibboleth - Shibboleth plugin for WordPress
wordpress-xrds-simple - XRDS-Simple plugin for WordPress
zine - Python powered blog engine

¿Qué es APT-Cache?

Apt-cache es un comando que simplemente consulta la caché APT. Le pasamos el parámetro de búsqueda, indicando que, obviamente, queremos buscarlo en APT. Como podemos ver arriba, la búsqueda de "wordpress" devolvió una serie de paquetes relacionados con la cadena de búsqueda con una breve descripción de cada paquete.

A partir de esto, vemos el paquete principal de “wordpress - weblog manager” y queremos instalarlo. Pero, ¿no sería bueno ver exactamente qué dependencias se instalarán junto con él? APT también puede decirnos eso:

$ sudo apt-cache showpkg wordpress
Versions:
3.3.1+dfsg-1 (/var/lib/apt/lists/us-west-2.ec2.archive.ubuntu.com_ubuntu_dists_precise_universe_binary-amd64_Packages)
 Description Language:
                 File: /var/lib/apt/lists/us-west-2.ec2.archive.ubuntu.com_ubuntu_dists_precise_universe_binary-amd64_Packages
                  MD5: 3558d680fa97c6a3f32c5c5e9f4a182a
 Description Language: en
                 File: /var/lib/apt/lists/us-west-2.ec2.archive.ubuntu.com_ubuntu_dists_precise_universe_i18n_Translation-en
                  MD5: 3558d680fa97c6a3f32c5c5e9f4a182a

Reverse Depends:
  wordpress-xrds-simple,wordpress
  wordpress-shibboleth,wordpress 2.8
  wordpress-openid,wordpress
  wordpress-l10n,wordpress 2.8.4-2
Dependencies:
3.3.1+dfsg-1 - libjs-cropper (2 1.2.1) libjs-prototype (2 1.7.0) libjs-scriptaculous (2 1.9.0) libphp-phpmailer (2 5.1) libphp-simplepie (2 1.2) libphp-snoopy (2 1.2.4) tinymce (2 3.4.3.2+dfsg0) apache2 (16 (null)) httpd (0 (null)) mysql-client (0 (null)) libapache2-mod-php5 (16 (null)) php5 (0 (null)) php5-mysql (0 (null)) php5-gd (0 (null)) mysql-server (2 5.0.15) wordpress-l10n (0 (null))
Provides:
3.3.1+dfsg-1 -
Reverse Provides:

Esto nos muestra que wordpress 3.3.1 es la versión a instalar, el repositorio desde el que se instalará, las dependencias inversas y otros paquetes de los que depende, más sus números de versión.

NOTA: (nulo significa que la versión no está definida y se instalará la última versión en el repositorio).

Ahora, el comando de instalación real:

$ sudo apt-get install wordpress

Ese comando instalará WordPress-3.3.1 y todas las dependencias que no están instaladas actualmente.

Por supuesto, eso no es todo lo que puede hacer con APT. Algunos otros comandos útiles son los siguientes:

NOTA: Es una buena práctica ejecutar apt-get update antes de ejecutar cualquier serie de comandos APT. Recuerde, apt-get update analiza su archivo /etc/apt/sources.list y actualiza su base de datos.

Desinstalar un paquete es tan fácil como instalarlo:

$ sudo apt-get remove wordpress

Desafortunadamente, el comando apt-get remove deja intactos todos los archivos de configuración. Para eliminarlos también, querrá usar apt-get purge:

$ sudo apt-get purge wordpress

De vez en cuando, puede encontrarse con una situación en la que hay dependencias rotas. Esto suele suceder cuando no ejecuta apt-get update correctamente, alterando la base de datos. Afortunadamente, APT tiene una solución:

$ sudo apt-get –f install

Dado que APT descarga todos los archivos * .deb del repositorio directamente a su máquina (los almacena en/var/cache/apt/archives), es posible que desee eliminarlos periódicamente para liberar espacio en el disco:

$ sudo apt-get clean

Esto es solo una pequeña fracción de APT, APT-Cache y algunos de sus comandos útiles. Todavía hay mucho que aprender y explorar algunos comandos más avanzados en el siguiente artículo.

  1. 25 Useful and Advanced Commands of APT-GET and APT-CACHE

Como siempre, eche un vistazo a las páginas de manual para ver aún más opciones. Una vez que uno se familiariza con APT, es posible escribir asombrosos scripts de Cron para mantener el sistema actualizado.