Guía de Yum y Apt
Resumen
Los gestores de paquetes son una gran característica de todo sistema Linux. Nos permiten manejar fácilmente la instalación, eliminación e inspección de paquetes de software.
En este tutorial, aprenderemos a utilizar dos de los más famosos: YUM y APT.
Los gestores de paquetes en pocas palabras
Antes de empezar, vamos a repasar qué son efectivamente los gestores de paquetes.
En Windows, solemos instalar software descargando y ejecutando instaladores ejecutables.
En Linux, todavía podemos hacer lo mismo, descargando e instalando manualmente los paquetes en el formato esperado por nuestra distribución. El método mayoritario, sin embargo, consiste en confiar en los gestores de paquetes para explorar el software disponible (junto con el instalado), así como para instalarlo, actualizarlo y desinstalarlo.
Las versiones de software proporcionadas por los gestores de paquetes pueden no ser siempre las más recientes, pero todo el proceso es más ágil, más rápido y más seguro.
Veamos ahora qué son YUM y APT y cómo funcionan.
YUM – Yellowdog Updater, Modificado
YUM es una utilidad de gestión de paquetes para distribuciones basadas en RPM. RPM (Red Hat Package Manager) es el gestor de paquetes en el que se basan sistemas como RHEL y CentOS.
YUM utiliza RPM bajo el capó, ocultando su complejidad a través de una abstracción de alto nivel.
Fedora 22 y RHEL 8 introdujeron una reescritura de YUM, llamada DNF, que probablemente se convertirá en el nuevo estándar para los sistemas basados en RPM.
APT – Advanced Packaging Tool
APT, por otro lado, es una colección de diferentes herramientas utilizadas para gestionar el software en las distribuciones basadas en DPKG.
DPKG significa Debian PacKaGe y es el gestor de paquetes en el núcleo de sistemas como Debian y Ubuntu.
APT envuelve las llamadas de bajo nivel a DPKG para proporcionar a los usuarios una interfaz fácil de usar.
Es digno de mención que APT es un acrónimo utilizado en varios contextos diferentes. Es el sistema de empaquetado (APT), el paquete de Linux bajo el que se distribuye (apt), y también una de las herramientas que forman la biblioteca (apt, apt-get, apt-cache, y otras).
4.1. apt
apt es la herramienta más nueva del gestor de paquetes APT.
A menudo es una fuente de confusión porque los usuarios no están seguros de si usar apt o apt-get para sus operaciones y cuáles son las diferencias.
Aclaremos aquí: apt es la herramienta adecuada cuando se maneja manualmente un sistema basado en Debian. Deberíamos preferirla siempre sobre apt-get y apt-cache, ya que unifica y simplifica las operaciones principales de las otras dos.
También proporciona una útil barra de progreso junto con algunas otras pequeñas ventajas, como salida en color e información adicional.
4.2. apt-get
apt-get, por otro lado, es la opción correcta si vamos a guionizar nuestras operaciones de gestión. Ofrece una interfaz más estable, más funcionalidades, y además permite una personalización más profunda.
Fue la herramienta por defecto para todo tipo de operaciones hasta Ubuntu 16.04. En Ubuntu 16.04, apt se convirtió en la opción preferida para el uso humano.
4.3. apt-cache
apt-cache, finalmente, es una herramienta que complementa a apt-get, proporcionando información sobre el software instalado y también sobre el disponible.
4.4. Snappy
Canonical, la empresa que está detrás de Ubuntu, ha lanzado recientemente un nuevo sistema de empaquetado agnóstico a la distribución llamado Snappy.
Los paquetes Snappy son autocontenidos y se pueden instalar tanto en Ubuntu como en Fedora, CentOS, Arch, Gentoo, etc.
Aunque las últimas versiones de Ubuntu distribuyen algunos paquetes principalmente a través de Snappy, APT sigue siendo la forma oficial de gestionar los paquetes de software, al menos por ahora.
Consultas
Veamos ahora cómo podemos utilizar estas herramientas para consultar nuestros gestores de paquetes.
5.1. Listar paquetes
Podemos pedirle a YUM que liste nuestros paquetes con los siguientes comandos:
# List installed and available packages from repositories:yum list all# List only installed packages:yum list installed# List only available packages:yum list available# List installed and available kernel packages:yum list kernel
Con APT, en cambio, podemos listar nuestros paquetes:
# List installed and available packages from repositories:apt list# List only installed packages:apt list --installed
En caso de que queramos ver sólo los paquetes disponibles, podemos recurrir a algo de grep ya que no hay ningún comando de APT que lo haga de forma automática:
# List only available packages:apt list | grep -v installed
Para el scripting, también podríamos considerar recurrir a la solución más cercana a apt list disponible en apt-cache:
apt-cache search .
Tenga cuidado que el resultado diferirá tanto en el número de ocurrencias como en su orden de retorno, sin embargo.
5.2. Buscar paquetes
Con YUM, podemos buscar un paquete que contenga un término específico en su nombre o descripción:
yum search SOMETHING
Esta vez, en APT es idéntico:
apt search SOMETHINGapt-cache search SOMETHING
5.3. Obtener los detalles del paquete
Una vez que sabemos qué paquete nos interesa, podemos querer comprobar sus detalles.
En YUM:
yum info MY_PACKAGE
Y de forma similar, en APT:
apt show MY_PACKAGEapt-cache show MY_PACKAGE
Gestión de paquetes
Ahora que hemos visto cómo buscar e inspeccionar paquetes de software, vamos a ver cómo gestionarlos:
6.1. Actualización de la información de los paquetes
En primer lugar, necesitamos actualizar nuestro índice de paquetes.
Estos comandos no actualizan ningún paquete instalado, sólo descargan la última información sobre los paquetes que se pueden instalar o actualizar.
En YUM es:
yum check-update
En APT, en cambio, es simplemente:
apt updateapt-get update
Siempre debemos ejecutar apt update antes de cualquier otra operación.
6.2. Instalación de un paquete
Para instalar un paquete en YUM:
yum install MY_PACKAGE
De nuevo, en los sistemas Debian no difiere en absoluto:
apt install MY_PACKAGEapt-get install MY_PACKAGE
6.3. Actualización de un paquete
La actualización de un paquete puede hacerse de diferentes maneras.
En YUM, el comando yum update ejecuta internamente el yum check-update, lo que significa que no necesitamos ejecutar este último a no ser que queramos evitar instalar nada después de actualizar el índice de paquetes. Podemos actualizar todos o algunos paquetes de la siguiente manera:
# Update the package index and every package:yum update# Update only the package MY_PACKAGE:yum update MY_PACKAGE# Apply security-related package updates:yum update --security
O:
# Update every package:apt upgradeapt-get upgrade # Update every package along with their dependencies:apt full-upgradeapt-get dist-upgrade# Update only the package MY_PACKAGE:apt-get install --only-upgrade MY_PACKAGE# Apply security-related package updates:unattended-upgrade --dry-run -d
Es importante saber que la actualización de los paquetes junto con sus dependencias implica potencialmente la desinstalación del software existente y la instalación de un nuevo software también si así lo requiere el proceso de actualización.
Los comandos de actualización estándar, por otro lado, nunca desinstalarán nada. Sin embargo, a diferencia de apt-get upgrade (que tampoco instala nada), apt upgrade podría instalar nuevo software si es necesario.
6.4. Eliminación de un paquete
A veces necesitamos eliminar un paquete de software. Exploremos entonces las diferentes formas de hacerlo, desde las más superficiales y suaves hasta las más profundas y definitivas.
Para deshacerse de un paquete instalado y posiblemente de sus dependencias en YUM podemos hacer uno de los dos comandos equivalentes:
yum erase MY_PACKAGEyum remove MY_PACKAGE
En RHEL7 y superiores, es posible borrar también paquetes adicionales innecesarios con autoremove:
yum autoremove MY_PACKAGE
Las formas de Debian de borrar un paquete en su lugar son:
apt remove MY_PACKAGEapt-get remove MY_PACKAGE
Sin embargo, si queremos eliminar también la configuración del paquete, purgando completamente el sistema de ella, entonces podemos explotar purge:
apt purge MY_PACKAGEapt-get purge MY_PACKAGE
6.5. Limpiar
A veces, nuestro sistema se verá contaminado por paquetes huérfanos, que ya no son necesarios pero siguen ocupando espacio.
Podemos eliminar estos paquetes no deseados en YUM a través de autoremove, sin ningún nombre de paquete:
yum autoremove
Esto también funciona de la misma manera en las distribuciones Debian:
apt autoremoveapt-get autoremove
Gestión de repositorios
Ambos sistemas de empaquetado comienzan con un conjunto de repositorios oficiales a los que consultar para obtener paquetes.
Sin embargo, la comunidad es próspera, y a menudo el paquete que necesitamos no está en los repositorios oficiales, o está ahí pero en una versión demasiado antigua para ajustarse a nuestras necesidades.
En estos casos, es posible que queramos añadir repositorios no oficiales a la lista del gestor de paquetes (siempre prestando atención al hecho de que podría representar un problema de seguridad).
7.1. Adición de un repositorio
Añadir un repositorio en YUM es una operación manual, que consiste en crear un fichero con la extensión .repo bajo la carpeta /etc/yum.repos.d.
El archivo debe contener toda la información sobre el repositorio personalizado al que nos estamos conectando.
Intentemos añadir el repositorio AdoptOpenJDK:
# /etc/yum.repos.d/adoptopenjdk.reponame=AdoptOpenJDKbaseurl=http://adoptopenjdk.jfrog.io/adoptopenjdk/rpm/centos/7/$(uname -m)enabled=1gpgcheck=1gpgkey=https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public
En APT, sin embargo, las cosas son muy diferentes. Hay que descargar la clave GPG del repositorio y añadirla al llavero de APT con apt-key add:
wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add -
Después, en este punto, se puede añadir el repositorio mediante add-apt-repository -yes seguido de la URL:
add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/
A diferencia de YUM, todos los repositorios se guardan en un único archivo, /etc/apt/sources.list.
7.2. Eliminación de un repositorio
La eliminación de un repositorio en YUM se realiza de forma diferente dependiendo de cómo se haya instalado.
Podemos ejecutar el siguiente comando y analizar su salida:
rpm -qa | grep -i CUSTOM_REPOSITORY
Si se encuentra el paquete RPM del repositorio, significa que ha sido instalado a través de RPM, y podemos eliminarlo usando -e:
rpm -e CUSTOM_REPOSITORY_RPM_PACKAGE
De lo contrario, podemos simplemente borrar el archivo del repositorio:
rm /etc/yum.repos.d/CUSTOM_REPOSITORY.repo
También podemos desactivarlo sin borrarlo, simplemente cambiando enabled=1 por enabled=0 en el archivo del repositorio.
En APT, en cambio, podemos hacer simplemente:
add-apt-repository --remove ppa:CUSTOM_REPOSITORY/ppa
Alternativamente, podemos comentar las filas relativas al repositorio en el fichero /etc/apt/sources.list.
Otras operaciones
Estos dos hacen muchas otras operaciones. Vamos a cubrir algunas de ellas.
8.1. Reinstalar un paquete
En caso de que un paquete esté corrupto, como que falten algunos archivos, podemos reinstalarlo con:
yum reinstall MY_PACKAGEapt reinstall MY_PACKAGEapt-get reinstall MY_PACKAGE
8.2. Instalar una versión específica de un paquete
A veces, en cambio, podemos necesitar instalar una versión específica de un paquete.
Podemos comprobar las versiones disponibles de un paquete con:
yum list MY_PACKAGE --showduplicatesapt-cache showpkg MY_PACKAGE
Entonces podemos apuntar a la versión deseada para una nueva instalación:
yum install MY_PACKAGE-WANTED_VERSIONapt install MY_PACKAGE=WANTED_VERSIONapt-get install MY_PACKAGE=WANTED_VERSION
YUM también nos permite hacer un downgrade de una versión existente a una de las instaladas anteriormente:
yum downgrade MY_PACKAGE-WANTED_VERSION
8.3. Instalar un grupo de paquetes
Algunos paquetes se combinan en un grupo con un propósito común y se pueden instalar todos a la vez.
Apuntemos a otro ejemplo del mundo real y pensemos en la instalación del entorno gráfico en un servidor Linux.
Instalar los grupos X Window System y GNOME nos ahorrará el engorro de instalar cientos de paquetes a mano:
yum groupinstall 'X Window System' 'GNOME'
El gestor de paquetes de Debian, sin embargo, los maneja como paquetes simples, por lo que basta con el clásico comando apt install:
apt-get install xorg
Conclusión
En este tutorial, hemos aprendido los conceptos relacionados con YUM y APT, así como el uso práctico de sus principales comandos.
A pesar de que sólo hemos arañado la superficie, ahora deberíamos ser capaces de manejar el software en nuestros sistemas basados en RedHat y Debian.