Skip to content

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 alt text 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.