Tutoriales

Cómo utilizar dnf para degradar el paquete de software en el sistema RHEL

te escapaste dnf updatealgo ha dejado de funcionar ahora. No desea pasar horas solucionando problemas y solo desea volver a la versión del paquete que estaba ejecutando antes.

Esto sucede con más frecuencia de lo que a la mayoría de los administradores de Linux les gustaría admitir. Quizás una nueva versión de Nginx introdujo cambios de configuración preestablecidos que dañaron su host virtual. Las actualizaciones de la biblioteca Python cambian las API en las que dependen sus scripts internos. O es posible que las actualizaciones principales ya no funcionen para controladores de terceros.

Desde una perspectiva DNF, todo se instaló correctamente, pero eso no siempre significa que su aplicación seguirá funcionando como se esperaba.

Cuando un paquete en una distribución basada en RHEL es un paquete independiente, es fácil degradarlo, pero cuando otros paquetes dependen de versiones más nuevas, las cosas se vuelven más desafiantes porque Mazmorras y luchadores También puede ser necesario degradar las dependencias relacionadas para mantener la coherencia del sistema.

En esta guía, aprenderá cómo verificar las versiones de paquetes disponibles, degradar un paquete de manera segura, evitar más actualizaciones, restaurar paquetes antiguos desde el caché RPM local e incluso revertir una transacción DNF completa si una actualización causa problemas.

Boletín semanal de TechMint

Conseguir Aprenda el curso intensivo de 7 días de Linux Únase a más de 34.000 profesionales de Linux que leen gratis todos los jueves.

Revise su correo electrónico para ver el enlace mágico para comenzar.

Algo salió mal. Por favor inténtalo de nuevo.

Cómo maneja DNF las rebajas

Antes de comenzar a degradar un paquete, comprenda qué es útil DNF Hecho detrás de escena.

Cada vez que se instala, actualiza, elimina o degrada un paquete, DNF registra la operación como transaction en su base de datos histórica. Este historial le permite ver cambios anteriores y, en muchos casos, revertir toda la transacción en lugar de corregir manualmente un solo conjunto.

Cuando ejecuta una degradación de paquete, Mazmorras y luchadores No se trata sólo de sustituir el paquete antiguo por el nuevo. Primero comprueba si la versión anterior es compatible con el resto de los paquetes de software actualmente instalados en el sistema.

Si otro paquete depende de una versión más reciente, Mazmorras y luchadores Los conflictos se detectan dependiendo de la situación, puede:

  • También degrade las dependencias requeridas.
  • Rechace la degradación porque dañará otros paquetes instalados.
  • Solicite confirmación antes de realizar otros cambios.

Por eso es necesario responder dos preguntas antes de realizar una degradación:

  • ¿La versión que desea es compatible con los paquetes actualmente instalados en su sistema?
  • ¿La versión anterior todavía está disponible en uno de los repositorios o cachés de paquetes nativos que habilitó?

Tomarse un momento para verificarlos primero puede evitarle más problemas de dependencia más adelante.

Consulta qué versiones están disponibles

Antes de degradar un paquete, verifique la versión instalada actualmente y si todavía hay versiones anteriores disponibles en los repositorios habilitados.

Para enumerar todas las versiones disponibles de un paquete, ejecute:

dnf list --showduplicates nginx

Ejemplo de salida:

Installed Packages
nginx.x86_64              1:1.26.2-2.el10             @appstream

Available Packages
nginx.x86_64              1:1.24.0-4.el10             appstream
nginx.x86_64              1:1.26.2-2.el10             appstream

este Installed Packages La sección muestra las versiones actualmente instaladas en su sistema.

este Available Packages La sección enumera todas las versiones actualmente disponibles en el repositorio que habilita. Si la versión que desea aparece aquí, puede degradarla.

De lo contrario, el repositorio ya no contendrá esa versión del paquete. No se preocupe, veremos cómo restaurar paquetes antiguos desde la caché RPM local más adelante en esta guía.

Si desea obtener más información sobre un paquete instalado, incluido el repositorio del que proviene, utilice:

dnf info nginx

Ejemplo de salida:

Installed Packages
Name         : nginx
Epoch        : 1
Version      : 1.26.2
Release      : 2.el10
Architecture : x86_64
Size         : 1.7 M
Source       : nginx-1.26.2-2.el10.src.rpm
Repository   : @System
From repo    : appstream
Summary      : A high performance web server and reverse proxy server
License      : BSD
Description  : Nginx is a web server and a reverse proxy server for HTTP, SMTP,
             : POP3 and IMAP protocols, with a strong focus on high concurrency,
             : efficiency and low memory footprint.

Aviso Version, Releasey Epoch campo. Juntos identifican de forma única la versión del paquete. Si necesita degradar a una versión específica, utilizará esta información de versión en el comando de degradación.

Si quieres saber más profundamente dnf gestión de paquetes y configuración del repositorio, Más de 100 comandos básicos de Linux El curso sobre Pro TecMint lo cubre de principio a fin.

Bajar a la versión anterior

Si solo desea volver a una versión anterior del paquete, use dnf downgrade Orden:

sudo dnf downgrade nginx

Ejemplo de salida:

Dependencies resolved.
================================================================================
 Package      Arch    Version             Repository                      Size
================================================================================
Downgrading:
 nginx        x86_64  1:1.24.0-4.el10     appstream                      42 k

Transaction Summary
================================================================================
Downgrade  1 Package

Total download size: 42 k
Is this ok [y/N]: y

este sudo ejecución de comando Mazmorras y luchadores Tener privilegios de administrador, necesarios para instalar, eliminar o degradar paquetes del sistema.

este dnf downgrade El comando selecciona automáticamente la versión más alta disponible que sea anterior a la versión instalada actualmente. Revise el resumen de la transacción y si todo parece correcto, presione y para continuar.

Una vez que se complete la degradación, verifique que la versión requerida esté instalada:

nginx -v

Ejemplo de salida:

nginx version: nginx/1.24.0

Si la versión mostrada coincide con la versión que esperaba, la degradación se realizó correctamente.

importante: Antes de confirmar la transacción, verifique cuidadosamente la lista de paquetes que DNF planea degradar o eliminar de los estantes. Esto es normal para paquetes dependientes, p. nginx-core o nginx-filesystem fueron degradados juntos nginx. Sin embargo, si DNF desea eliminar un paquete del que dependen otras aplicaciones o servicios, cancele la operación e investigue los cambios de dependencia antes de continuar.

Si esto te salva de un incidente nocturno, Es posible que su equipo también lo necesite.

Bajar a una versión específica

Si necesita degradar a una versión que tiene más de una versión anterior, especifique el nombre del paquete seguido de la versión de destino:

sudo dnf downgrade nginx-1.24.0-4.el10

Ejemplo de salida:

Dependencies resolved.
================================================================================
 Package      Arch    Version             Repository                      Size
================================================================================
Downgrading:
 nginx        x86_64  1:1.24.0-4.el10     appstream                      42 k

Transaction Summary
================================================================================
Downgrade  1 Package

Total download size: 42 k
Is this ok [y/N]: y
Downloading Packages:
nginx-1.24.0-4.el10.x86_64.rpm        42 kB/s |  42 kB     00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Downgrading  : nginx-1:1.24.0-4.el10.x86_64                             1/2
  Cleanup      : nginx-1:1.26.2-2.el10.x86_64                             2/2
  Verifying    : nginx-1:1.24.0-4.el10.x86_64                             1/2
  Verifying    : nginx-1:1.26.2-2.el10.x86_64                             2/2

Downgraded:
  nginx-1:1.24.0-4.el10.x86_64

Complete!

El resultado de la transacción es fácil de entender:

  • Degradar Muestra la versión anterior del paquete que está instalando DNF.
  • limpiar Muestra versiones más recientes que se han eliminado del sistema.
  • Verificando Verifique que la degradación se haya completado correctamente y que la base de datos RPM sea coherente.

Una vez completada la transacción, verifique la versión instalada:

nginx -v

Si el resultado muestra la versión que solicitó, la degradación se realizó correctamente.

Bloquear versiones de paquetes de software mediante el bloqueo de versiones

Después de degradar un paquete, el siguiente dnf update Intentaremos instalar la última versión disponible nuevamente. Si desea mantener el paquete en su versión actual, utilice versionlock complemento.

sudo dnf install python3-dnf-plugins-core

Una vez que el complemento esté disponible, bloquee la versión actual del paquete:

sudo dnf versionlock add nginx

Para ver todos los paquetes bloqueados, ejecute:

sudo dnf versionlock list

Ejemplo de salida:

Last metadata expiration check: 0:02:31 ago on Mon Jun 29 11:14:08 2026.
nginx-1:1.24.0-4.el10.*

este .* El último es un comodín que coincide con todas las arquitecturas para esa versión del paquete. Una vez fijado en su lugar, el futuro dnf update el comando se saltará nginxdejándola como tu versión fijada.

Cuando estés listo para recibir actualizaciones nuevamente, desbloquéala:

sudo dnf versionlock delete nginx

pista:Otra forma de evitar actualizaciones es agregar exclude=nginx llegar /etc/dnf/dnf.conf. Sin embargo, la exclusión bloquea todas las actualizaciones futuras del paquete hasta que elimine la configuración.

Bajar de categoría desde el archivo RPM local

A veces, la versión que necesita ya no está disponible en el repositorio que habilitó. Es posible que haya sido reemplazada por una versión más nueva, eliminada del repositorio o que esté utilizando un sistema que no tiene acceso a Internet.

Si todavía tienes el archivo RPM antiguo, puedes instalarlo directamente.

Primero, verifique si el paquete todavía está en la caché local de DNF:

find /var/cache/dnf -name "nginx*.rpm"

Ejemplo de salida:

/var/cache/dnf/appstream-3f8c21a9d4b72e01/packages/nginx-1.24.0-4.el10.x86_64.rpm

Si encuentra la versión requerida, instálela especificando la ruta completa al archivo RPM:

sudo dnf install /var/cache/dnf/appstream-3f8c21a9d4b72e01/packages/nginx-1.24.0-4.el10.x86_64.rpm

Ejemplo de salida:

Examining /var/cache/dnf/appstream-3f8c21a9d4b72e01/packages/nginx-1.24.0-4.el10.x86_64.rpm: 1:nginx-1.24.0-4.el10.x86_64
Marking nginx-1.24.0-4.el10.x86_64.rpm as an update to 1:nginx-1.26.2-2.el10.x86_64
Dependencies resolved.
================================================================================
 Package  Arch    Version           Repository                          Size
================================================================================
Downgrading:
 nginx    x86_64  1:1.24.0-4.el10   @commandline                       42 k

Transaction Summary
================================================================================
Downgrade  1 Package
Is this ok [y/N]: y
...
Complete!

Incluso si instala el archivo RPM manualmente, Mazmorras y luchadores Reconoce que el paquete es anterior a la versión instalada y realiza una degradación en lugar de una instalación normal. También verifica las dependencias como cuando se instala desde un repositorio.

Si descargó el RPM de otro sistema o fuente externa, verifique su firma antes de instalar:

rpm --checksig nginx-1.24.0-4.el10.x86_64.rpm

Revertir una transacción completa usando el historial de DNF

Si una actualización del sistema daña varios paquetes, no es necesario degradar cada paquete individualmente. DNF conserva un historial de cada transacción, lo que permite deshacer actualizaciones completas con un solo comando.

Primero, revise sus transacciones DNF recientes:

sudo dnf history list

Ejemplo de salida:

ID     | Command line              | Date and time    | Action(s) | Altered
-------------------------------------------------------------------------------
    12 | update nginx              | 2026-06-29 09:14 | Update    |       1
    11 | install httpd             | 2026-06-28 14:22 | Install   |       3
    10 | update                    | 2026-06-27 08:00 | Update    |      47
     9 | install python3-flask     | 2026-06-26 16:44 | Install   |       5

Cada transacción tiene una identificación única. Utilizaría este ID si quisiera marcar o deshacer una acción específica.

Para ver exactamente qué cambió durante una transacción, ejecute:

sudo dnf history info 12

Ejemplo de salida:

Transaction ID : 12
Begin time     : Sun Jun 29 09:14:22 2026
Begin rpmdb    : 847:f3a2c...
End time       : Sun Jun 29 09:14:38 2026 (16 seconds)
End rpmdb      : 847:9b14d...
User           : root 
Return-Code    : Success
Command Line   : update nginx
Transaction performed with:
    Installed     rpm-4.19.1-1.el10.x86_64
    Installed     dnf-4.18.0-1.el10.noarch
Packages Altered:
    Upgrade  nginx-1:1.26.2-2.el10.x86_64  @appstream
             nginx-1:1.24.0-4.el10.x86_64  @System

Este resultado muestra la transacción 12 Actualización de nginx de la versión 1.24.0 a 1.26.2.

Para deshacer la transacción, ejecute:

sudo dnf history undo 12

Después de confirmar la transacción, DNF revertirá el paquete a la versión anterior a la Transacción 12 de la aplicación.

Si solo desea deshacer la transacción DNF más reciente, no necesita buscar su ID:

sudo dnf history undo last

Manejar dependencias rotas después de la degradación

Si terminas en esta situación dnf Para negarse a instalar o actualizar algo debido a dependencias rotas, primero realice una verificación de coherencia:

sudo dnf check

Ejemplo de salida:

nginx-1:1.24.0-4.el10.x86_64 requires nginx-filesystem = 1:1.24.0-4.el10
nginx-filesystem-1:1.26.2-2.el10.x86_64 is a newer version

Este resultado le indica exactamente qué salió mal y por qué. en este caso, nginx fue degradado pero nginx-filesystem No, entonces no se cumple el requisito de versión.

También puedes solucionarlo degradando las dependencias:

sudo dnf downgrade nginx-filesystem

correr dnf check Verifique nuevamente que no haya otros daños:

sudo dnf check

Ningún resultado significa que el repositorio RPM es coherente y se satisfacen todas las dependencias.

¿Alguna vez utilizó la función de deshacer el historial de DNF para recuperarse de una actualización incorrecta o encontró una forma más rápida de localizar la versión correcta cuando el repositorio ya no la contiene? Compártelo en los comentarios a continuación..

Si este artículo fue útil, Con alguien de tu equipo.

Boletín semanal de TechMint

Conseguir Aprenda el curso intensivo de 7 días de Linux Únase a más de 34.000 profesionales de Linux que leen gratis todos los jueves.

Revise su correo electrónico para ver el enlace mágico para comenzar.

Algo salió mal. Por favor inténtalo de nuevo.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba