Introducción
La gestión de paquetería en Red Hat Enterprise Linux (RHEL) es un proceso esencial para administrar el software que asegura la estabilidad, seguridad y funcionalidad del sistema operativo. A través de herramientas como RPM y DNF, los administradores pueden instalar, actualizar y eliminar aplicaciones, gestionar dependencias y configurar repositorios de software. Además, el concepto de BaseOS y Application Stream complementa la gestión modular, permitiendo a los usuarios elegir versiones específicas de aplicaciones según sus necesidades.
Objetivos
Esta sección busca:
- Explicar cómo gestionar paquetes utilizando RPM y DNF, destacando sus capacidades y diferencias.
- Detallar la configuración y personalización de repositorios, incluyendo repositorios de terceros, BaseOS y AppStream.
- Presentar conceptos avanzados como módulos, flujos y la gestión de versiones alternativas de aplicaciones en RHEL.
- Proveer estrategias para garantizar la autenticidad e integridad del software mediante la verificación de firmas digitales y configuraciones seguras.
Gestión de Paquetería en RHEL
RPM
El RPM Package Manager (RPM), desarrollado originalmente por Red Hat, es el estándar para empaquetar y distribuir software en sistemas RHEL. Utilizando paquetes RPM, los administradores pueden gestionar software de manera eficiente, rastrear archivos instalados, garantizar la presencia de dependencias y verificar la integridad del software mediante firmas digitales GPG. Elementos de los Paquetes RPM Un paquete RPM es un archivo que incluye:
- Archivos de software: Son instalados en el sistema.
- Metadatos: Información como el nombre, versión, arquitectura, descripción, licencias y cambios.
- Scripts: Acciones ejecutadas durante la instalación, actualización o eliminación del paquete.
- Firmas digitales GPG: Garantizan la autenticidad y la integridad del paquete.
Formato de Nombres de Archivos RPM
Los paquetes RPM siguen una convención de nombre específica: name-version-release.architecture.rpm
Donde:
- NAME: Descripción del contenido del paquete (ejemplo: coreutils).
- VERSION: Número de la versión del software original (ejemplo: 8.32).
- RELEASE: Número de lanzamiento definido por el empaquetador (ejemplo: 31.el9).
- ARCHITECTURE: Arquitectura para la que fue compilado (ejemplo: x86_64 para 64 bits).
Gestión con el Comando RPM
El comando rpm proporciona herramientas para consultar e inspeccionar los paquetes RPM en el sistema:
- Consultar paquetes instalados:
-
Lista todos los paquetes instalados:
rpm -qa -
Identifica el paquete que proporciona un archivo específico:
rpm -qf /etc/yum.repos.d -
Enumera los archivos instalados con un paquete:
rpm -ql nombre_paquete -
Consultar paquetes descargados pero no instalados:
-
Lista el contenido de un paquete descargado localmente:
rpm -qlp archivo.rpm
Instalación y Actualización de Paquetes RPM
- Instalación: Usa el comando rpm -ivh para instalar paquetes descargados localmente.
rpm -ivh nombre_paquete.rpm - Precaución: Los paquetes de terceros pueden ejecutar scripts arbitrarios como root, lo que representa riesgos potenciales.
- Actualización: Para actualizar un paquete instalado, usa:
rpm -Uvh nombre_paquete.rpm
Durante las actualizaciones, los archivos de configuración generalmente se conservan, a menos que el empaquetador defina lo contrario.
Extracción de Contenido de Paquetes RPM
Cuando no se desea instalar un paquete RPM, es posible extraer archivos utilizando rpm2cpio. Este comando convierte el paquete a un archivo cpio, permitiendo extraer su contenido:
rpm2cpio archivo.rpm | cpio -idv
Esto permite inspeccionar archivos individuales o listar el contenido del paquete sin instalarlo.
Gestión de Paquetería con DNF
Introducción a DNF
DNF (Dandified YUM) es el administrador de paquetes predeterminado en RHEL 9, diseñado para gestionar software basado en RPM y resolver automáticamente dependencias desde múltiples fuentes. Aunque el comando de bajo nivel rpm sigue siendo útil para ciertas tareas, DNF es la herramienta preferida para instalar, actualizar y eliminar paquetes en sistemas operativos Red Hat. Además, DNF también permite trabajar con grupos de paquetes, repositorios, y módulos de contenido, simplificando la administración del software. Funcionalmente, los comandos DNF son los mismos que los comandos YUM. Por razones de compatibilidad, los comandos YUM aún existen como enlaces simbólicos a DNF:
```bash
ls -l /bin/ | grep yum | awk '{print $9 " " $10 " " $11}'
yum -> dnf-3
yum-builddep -> /usr/libexec/dnf-utils
yum-config-manager -> /usr/libexec/dnf-utils
yum-debug-dump -> /usr/libexec/dnf-utils
yum-debug-restore -> /usr/libexec/dnf-utils
yumdownloader -> /usr/libexec/dnf-utils
yum-groups-manager -> /usr/libexec/dnf-utils
```
Búsqueda de Software con DNF
Listar paquetes instalados y disponibles: Usa el comando dnf list para ver los paquetes disponibles en los repositorios y los instalados en el sistema. También puedes usar patrones para filtrar resultados.
dnf list 'http*'
Buscar paquetes por palabras clave: Usa el comando dnf search para encontrar paquetes relacionados con palabras clave en los campos de nombre y resumen.
dnf search KEYWORD
Para buscar en el nombre, resumen y descripción, usa:
dnf search all 'web server'
Obtener información detallada sobre un paquete: Usa dnf info para obtener detalles del paquete como tamaño, arquitectura y descripción.
dnf info httpd
Identificar qué paquete proporciona un archivo específico: Usa dnf provides para encontrar paquetes que contienen un archivo o ruta específica, útil para dependencias.
dnf provides /var/www/html
Instalación y Eliminación de Paquetes
Instalar un paquete: El comando dnf install instala un paquete junto con sus dependencias.
dnf install httpd
Esto asegura que el software y las librerías requeridas estén correctamente configurados. Eliminar un paquete: Usa dnf remove para desinstalar un paquete, eliminando también cualquier dependencia asociada.
dnf remove httpd
Precaución: Este comando puede eliminar paquetes que dependen del software, revisa cuidadosamente la lista generada.
Actualización de Software
Actualizar un paquete específico: Usa dnf update para instalar la versión más reciente de un paquete.
dnf update PACKAGENAME
Si no se especifica un nombre, actualiza todos los paquetes relevantes en el sistema. Actualizar el kernel: Actualiza el kernel para instalar nuevas versiones mientras mantienes múltiples versiones disponibles para evaluación:
dnf update kernel
Consulta los kernels instalados con:
dnf list kernel
Obtén la versión actual del kernel usando uname:
uname -r
Gestión de Grupos y Módulos de Paquetes
Red Hat Enterprise Linux 9 distribuye el contenido a través de dos repositorios de software principales: BaseOS y Application Stream (AppStream).
El repositorio de BaseOS proporciona el contenido del sistema operativo central para Red Hat Enterprise Linux como paquetes RPM. Los componentes de BaseOS tienen el mismo ciclo de vida que el contenido de versiones anteriores de Red Hat Enterprise Linux.
El repositorio de Application Stream proporciona contenido con distintos ciclos de vida como módulos y paquetes tradicionales. Application Stream contiene las partes necesarias del sistema, así como una amplia gama de aplicaciones previamente disponibles como parte de Red Hat Software Collections y otros productos y programas. Cada Application Stream tiene un ciclo de vida que es el mismo que Red Hat Enterprise Linux 9 o inferior.
Tanto BaseOS como AppStream son partes necesarias de un sistema Red Hat Enterprise Linux 9. El repositorio de Application Stream, contiene dos tipos de contenido: módulos y paquetes RPM tradicionales. Un módulo describe un conjunto de paquetes RPM que están relacionados. Los módulos pueden contener varios flujos para que haya varias versiones de aplicaciones disponibles para la instalación.
Al habilitar un flujo de módulos, el sistema tiene acceso a los paquetes RPM dentro de ese flujo de módulos. Normalmente, los módulos se organizan en torno a una versión específica de una aplicación de software o lenguaje de programación. Un módulo típico contiene paquetes con una aplicación, paquetes con las librerías de dependencia específica de la aplicación, paquetes con documentación para la aplicación y paquetes con utilidades auxiliares.
Grupos de paquetes
Los grupos son colecciones de paquetes relacionados que se instalan conjuntamente. Lista los grupos disponibles:
dnf group list
Instala un grupo de paquetes:
dnf group install "RPM Development Tools"
Los módulos permiten gestionar versiones alternativas de aplicaciones desde un solo repositorio, y es posible listar e instalar los módulos disponibles en los repositorios principales de RHEL9. Lista los módulos disponibles:
dnf module list
Instala un módulo específico:
dnf module install module-name:stream
Por ejemplo:
dnf module install nodejs:14
Historial de Transacciones y Registro
Todas las transacciones de instalación y eliminación se registran en el archivo /var/log/dnf.rpm.log. El comando dnf history muestra un resumen de transacciones de instalación y eliminación. Visualizar el historial de transacciones: Usa el comando dnf history para revisar acciones previas como instalaciones y eliminaciones.
dnf history
Revertir una transacción: Para deshacer cambios realizados en una transacción específica, usa:
dnf history undo TRANSACTION_ID
Gestión de Repositorios de Software en RHEL
Repositorios en RHEL
Los repositorios son fuentes de paquetes de software utilizados por DNF para instalar, actualizar y gestionar aplicaciones y servicios en RHEL. RHEL incluye repositorios esenciales como BaseOS y AppStream, habilitados por defecto en sistemas registrados. Además, los usuarios pueden habilitar repositorios adicionales proporcionados por Red Hat o de terceros.
Comando dnf repolist para Verificar Repositorios
Lista los repositorios habilitados en el sistema:
dnf repolist
Incluye todos los repositorios disponibles (habilitados y deshabilitados):
dnf repolist all
Ejemplo:
repo id repo name status rhel-9-for-x86_64-appstream-rpms RHEL 9 AppStream enabled rhel-9-for-x86_64-baseos-rpms RHEL 9 BaseOS enabled
Habilitación y Deshabilitación de Repositorios con dnf config-manager
El comando dnf config-manager permite habilitar o deshabilitar repositorios según sea necesario. Habilitar un repositorio:
dnf config-manager --enable <repo-id>
Ejemplo:
dnf config-manager --enable rhel-9-server-debug-rpms
Deshabilitar un repositorio:
dnf config-manager --disable <repo-id>
Configuración de Repositorios de Terceros
Los repositorios de terceros proporcionan software adicional no incluido en los repositorios de Red Hat. Métodos de configuración: Archivos .repo: Red Hat recomienda crear un archivo .repo en /etc/yum.repos.d/ para cada repositorio. Un archivo típico incluye:
[example-repo] name=Example Repository baseurl=https://example.com/repo/path enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-example
Usar dnf config-manager para agregar un repositorio: Este comando genera automáticamente un archivo .repo en /etc/yum.repos.d/:
dnf config-manager --add-repo="https://example.com/repo/path"
Gestión de Firmas GPG
Las claves GPG son esenciales para verificar la autenticidad e integridad de los paquetes en repositorios. Importar manualmente una clave GPG:
rpm --import <gpg-key-url>
Configura la clave en el archivo .repo usando el parámetro gpgkey. Ejemplo:
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9
Precaución: Evita usar la opción --nogpgcheck en dnf, ya que podría instalar paquetes no confiables.
Habilitación Temporal de Repositorios
El comando DNF permite habilitar o deshabilitar repositorios de manera temporal mientras se ejecuta un comando específico. Esto evita cambios persistentes en el sistema. Habilitar repositorio temporalmente:
dnf install <paquete> --enablerepo=<repo-id>
Deshabilitar repositorio temporalmente:
dnf update --disablerepo=<repo-id>
Conclusión
Dominar la gestión de paquetería en RHEL es clave para mantener un sistema operativo eficiente y seguro. RPM y DNF ofrecen herramientas robustas para satisfacer las necesidades tanto básicas como avanzadas de los administradores, mientras que la modularidad de AppStream amplía las opciones disponibles para personalizar el entorno. Con este conocimiento, los usuarios de RHEL pueden garantizar la integración de aplicaciones fiables y adaptadas a sus casos de uso específicos.