Maintenir les serveurs à jour est l'une des principales responsabilités d'un administrateur système. Cependant, les mises à jour ne fonctionnent pas toujours comme prévu, il est donc tout aussi important que vous sachiez a) rétablir un correctif pour ramener le serveur à l'état précédent et b) appliquer des correctifs dans des sous-ensembles pour obtenir plus de flexibilité.
Cet article se concentre sur les correctifs au niveau du système d'exploitation effectués à l'aide des outils de gestion de packages YUM/DNF sur Red Hat Enterprise Linux (RHEL). Pour cette démonstration, un serveur RHEL 7.7 en cours d'exécution est mis à jour vers RHEL 7.9 à l'aide de yum
, puis est revenu à la version RHEL 7.7. Il est toujours recommandé d'effectuer des sauvegardes périodiques de vos serveurs et les démonstrations fournies dans cet article sont uniquement à des fins éducatives.
Vérifiez le serveur pour les correctifs/mises à jour en attente
À moins que vous n'utilisiez un outil de gestion de systèmes tel que Red Hat Satellite, vous devez tester manuellement les serveurs pour toute mise à jour.
Pour cet article, considérez un serveur RHEL 7.7 :
[root@rhel77 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.7 (Maipo)
Utilisez le check-update
commande pour vérifier de manière non interactive les mises à jour en attente sur votre serveur :
[root@rhel77 ~]# yum check-update
Loaded plugins: product-id, search-disabled-repos, subscription-manager
NetworkManager.x86_64 1:1.18.4-3.el7 rhel-7-server-rpms
NetworkManager-config-server.noarch 1:1.18.4-3.el7 rhel-7-server-rpms
NetworkManager-libnm.x86_64 1:1.18.4-3.el7 rhel-7-server-rpms
NetworkManager-team.x86_64 1:1.18.4-3.el7 rhel-7-server-rpms
kernel-tools-libs.x86_64 3.10.0-1127.19.1.el7 rhel-7-server-rpms
kexec-tools.x86_64 2.0.15-43.el7 rhel-7-server-rpms
kmod.x86_64 20-28.el7 rhel-7-server-rpms
kmod-libs.x86_64 20-28.el7 rhel-7-server-rpms
kpartx.x86_64 0.4.9-131.el7 rhel-7-server-rpms
krb5-libs.x86_64 1.15.1-46.el7 rhel-7-server-rpms
….
….
….
systemd.x86_64 219-73.el7_8.9 rhel-7-server-rpms
systemd-libs.x86_64 219-73.el7_8.9 rhel-7-server-rpms
systemd-sysv.x86_64 219-73.el7_8.9 rhel-7-server-rpms
tcpdump.x86_64 14:4.9.2-4.el7_7.1 rhel-7-server-rpms
teamd.x86_64 1.29-1.el7 rhel-7-server-rpms
tuned.noarch 2.11.0-8.el7 rhel-7-server-rpms
tzdata.noarch 2020a-1.el7 rhel-7-server-rpms
util-linux.x86_64 2.23.2-63.el7 rhel-7-server-rpms
yum.noarch 3.4.3-167.el7 rhel-7-server-rpms
yum-utils.noarch 1.1.31-54.el7_8 rhel-7-server-rpms
Obsoleting Packages
iwl7260-firmware.noarch 25.30.13.0-76.el7 rhel-7-server-rpms
iwl7265-firmware.noarch 22.0.7.0-72.el7 installed
[ Vous pourriez également aimer : Red Hat Insights :Gestion des vulnérabilités ]
Lorsque cet article a été écrit, RHEL 7.9 était la version la plus récente de RHEL 7 et effectuait une yum update
prendrait ce serveur RHEL 7.7 vers RHEL 7.9 :
[root@rhel77 ~]# yum -y update
Loaded plugins: product-id, search-disabled-repos, subscription-manager
Resolving Dependencies
--> Running transaction check
---> Package NetworkManager.x86_64 1:1.18.0-5.el7 will be updated
---> Package NetworkManager.x86_64 1:1.18.8-1.el7 will be an update
---
Complete!
Après un redémarrage réussi, vérifiez la version de RHEL pour confirmer que le serveur est mis à jour vers la version 7.9 :
[root@rhel77 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
Annuler les mises à jour
Tout d'abord, vérifiez l'historique de la transaction avec le yum
commande :
[root@rhel77 ~]# yum history
Loaded plugins: product-id, search-disabled-repos, subscription-manager
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
8 | root <root> | 2020-11-01 23:10 | I, O, U | 157 EE
Les colonnes Action(s) et Altered donnent des informations sur les changements qui se sont produits avec cette transaction.
Action(s) :
- I - Nouveau package installé
- O - Le package est obsolète
- U - Le package est mis à jour
Modifié :
- 157 paquets ont été modifiés
- EE - Il y a eu des erreurs/avertissements dans la transaction
Utilisation de yum history packages-list
montre les changements qui se sont produits du point de vue de ce paquet.
Comme systemd
est le premier processus lancé dans les versions 7 et supérieures de RHEL, ce package est protégé par /etc/yum/protected.d/systemd.conf
:
[root@rhel77 ~]# cat /etc/yum/protected.d/systemd.conf
systemd
Annulez la dernière transaction avec yum history undo
:
[root@rhel77 ~]# yum history undo last
Loaded plugins: product-id, search-disabled-repos, subscription-manager
Undoing transaction 8, from Sun Nov 1 23:10:56 2020
Updated NetworkManager-1:1.18.0-5.el7.x86_64 @?rhel-7-server-rpms
Update 1:1.18.8-1.el7.x86_64 @rhel-7-server-rpms
Updated NetworkManager-config-server-1:1.18.0-5.el7.noarch @?rhel-7-server-rpms
Update 1:1.18.8-1.el7.noarch @rhel-7-server-rpms
Updated NetworkManager-libnm-1:1.18.0-5.el7.x86_64 @?rhel-7-server-rpms
....
Resolving Dependencies
--> Running transaction check
…
--> Finished Dependency Resolution
Error: Trying to remove "systemd", which is protected
Attention :Le processus suivant n'est ni pris en charge ni testé. Résolvez tous les problèmes résultant de la rétrogradation en récupérant à partir d'une sauvegarde ou d'une réinstallation.
Déplacez le yum
fichier de configuration, qui protège systemd:
[root@rhel77 ~]# mv /etc/yum/protected.d/systemd.conf /etc/yum/protected.d/systemd.conf.bak
Réexécutez le yum history undo last
commande :
[root@rhel77 ~]# yum history undo last
Loaded plugins: product-id, search-disabled-repos, subscription-manager
Undoing transaction 8, from Sun Nov 1 23:10:56 2020
....
Skipping the running kernel: kernel-3.10.0-1160.2.2.el7.x86_64
....
Dependencies Resolved
=======================================================================================================================
Package Arch Version Repository Size
=======================================================================================================================
Installing:
iwl7265-firmware noarch 22.0.7.0-72.el7 rhel-7-server-rpms 7.3 M
Removing:
bc x86_64 1.06.95-13.el7 @rhel-7-server-rpms 215 k
iwl7260-firmware noarch 25.30.13.0-79.el7 @rhel-7-server-rpms 87 M
linux-firmware noarch 20200421-79.git78c0348.el7 @rhel-7-server-rpms 394 M
Downgrading:
NetworkManager x86_64 1:1.18.0-5.el7 rhel-7-server-rpms 1.9 M
NetworkManager-config-server noarch 1:1.18.0-5.el7 rhel-7-server-rpms 149 k
NetworkManager-libnm
…
Transaction Summary
=======================================================================================================================
Install 1 Package
Remove 3 Packages
Downgrade 152 Packages
…
Running transaction
Installing : libgcc-4.8.5-39.el7.x86_64 1/308
Installing : 1:grub2-common-2.02-0.80.el7.noarch 2/308
Installing : redhat-release-server-7.7-10.el7.x86_64 3/308
warning: /etc/os-release saved as /etc/os-release.rpmsave
Installing : setup-2.8.71-10.el7.noarch 4/308
warning: /etc/shadow created as /etc/shadow.rpmnew
Installing : 1:grub2-pc-modules-2.02-0.80.el7.noarch
....
yum-utils.noarch 0:1.1.31-52.el7
Complete!
Redémarrer le serveur
Vérifiez la version de RHEL et du noyau :
[root@rhel77 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.7 (Maipo)
[root@rhel77 ~]# rpm -q kernel
kernel-3.10.0-1062.el7.x86_64
kernel-3.10.0-1160.2.2.el7.x86_64
[root@rhel77 ~]# uname -r
3.10.0-1160.2.2.el7.x86_64
Le serveur utilise la dernière version du noyau de RHEL 7.9. Vous pouvez changer le noyau par défaut en utilisant grub2-set-default
commande.
Appliquez le correctif par sous-ensembles pour obtenir une plus grande flexibilité de restauration
Épingler RHEL à une version spécifique est un moyen d'empêcher la mise à jour du système vers la dernière version mineure. Le gestionnaire d'abonnement peut être utilisé pour définir la version de RHEL :
[root@rhel77 ~]# subscription-manager release --list
+-------------------------------------------+
Available Releases
+-------------------------------------------+
7.0
7.1
7.2
7.3
7.4
7.5
7.6
7.7
7.8
7.9
7Server
Vérifiez les mises à jour disponibles et l'état du référentiel avant d'épingler la version :
[root@rhel77 ~]# yum update
...
Transaction Summary
=======================================================================================================================
Install 2 Packages (+2 Dependent packages)
Upgrade 152 Packages
[root@rhel77 ~]# subscription-manager repos --list-enabled
Repo ID: rhel-7-server-rpms
Repo Name: Red Hat Enterprise Linux 7 Server (RPMs)
Repo URL: https://cdn.redhat.com/content/dist/rhel/server/7/latest/$basearch/os
Enabled: 1
Épinglez la version à RHEL 7.8, effacez le yum
cache et vérifiez les dépôts activés :
[root@rhel77 ~]# subscription-manager release --set=7.8
[root@rhel77 ~]# yum clean all
[root@rhel77 ~]# subscription-manager repos --list-enabled
Repo ID: rhel-7-server-rpms
Repo Name: Red Hat Enterprise Linux 7 Server (RPMs)
Repo URL: https://cdn.redhat.com/content/dist/rhel/server/7/7.8/$basearch/os
Enabled: 1
C'est évident à partir de l'URL du référentiel sortie ci-dessus qu'il utilise maintenant 7.8 et pas latest
.
Exécutez yum update
et vérifiez s'il y a des changements dans les mises à jour disponibles :
[root@rhel77 ~]# yum update
....
Transaction Summary
=======================================================================================================================
Install 2 Packages (+1 Dependent package)
Upgrade 136 Packages
Correction dans des sous-ensembles
L'historique option avec yum
utilise la transaction pour annuler/annuler l'opération. Ainsi, la mise à jour des packages en tant que sous-ensembles donne la possibilité de les restaurer. Il s'agit d'une meilleure approche que de mettre à jour le système dans son ensemble.
Mettez à jour le package 'device-mapper' avec update device-mapper
.
[root@rhel77 ~]# yum update device-mapper
Loaded plugins: product-id, search-disabled-repos, subscription-manager
Resolving Dependencies
--> Running transaction check
---> Package device-mapper.x86_64 7:1.02.158-2.el7 will be updated
--> Processing Dependency: device-mapper = 7:1.02.158-2.el7 for package: 7:device-mapper-libs-1.02.158-2.el7.x86_64
---> Package device-mapper.x86_64 7:1.02.170-6.el7 will be an update
--> Running transaction check
---> Package device-mapper-libs.x86_64 7:1.02.158-2.el7 will be updated
---> Package device-mapper-libs.x86_64 7:1.02.170-6.el7 will be an update
--> Finished Dependency Resolution
Dependencies Resolved
=======================================================================================================================
Package Arch Version Repository Size
=======================================================================================================================
Updating:
device-mapper x86_64 7:1.02.170-6.el7 rhel-7-server-rpms 297 k
Updating for dependencies:
device-mapper-libs x86_64 7:1.02.170-6.el7 rhel-7-server-rpms 325 k
Transaction Summary
=======================================================================================================================
Upgrade 1 Package (+1 Dependent package)
Total download size: 621 k
Is this ok [y/d/N]:
Vérifiez l'historique avec yum history
.
[root@rhel77 ~]# yum history
Loaded plugins: product-id, search-disabled-repos, subscription-manager
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
2 | root <root> | 2020-11-02 15:25 | Update | 2
1 | System <unset> | 2020-09-14 04:25 | Erase | 1 EE
history list
Obtenez des détails plus spécifiques sur l'ID de transaction 2 à l'aide de yum history info 2
.
[root@rhel77 ~]# yum history info 2
Loaded plugins: product-id, search-disabled-repos, subscription-manager
Transaction ID : 2
Begin time : Mon Nov 2 15:25:12 2020
Begin rpmdb : 345:fc299a705f95203fda639ed1153803ad6771d7fb
End time : 15:25:14 2020 (2 seconds)
End rpmdb : 345:f8faef254573c0653a624c30ee393b08bb365ab2
User : root <root>
Return-Code : Success
Command Line : update device-mapper
Transaction performed with:
Installed rpm-4.11.3-40.el7.x86_64 installed
Installed subscription-manager-1.24.13-1.el7.x86_64 installed
Installed yum-3.4.3-163.el7.noarch installed
Packages Altered:
Updated device-mapper-7:1.02.158-2.el7.x86_64 @?rhel-7-server-rpms
Update 7:1.02.170-6.el7.x86_64 @rhel-7-server-rpms
Updated device-mapper-libs-7:1.02.158-2.el7.x86_64 @?rhel-7-server-rpms
Update 7:1.02.170-6.el7.x86_64 @rhel-7-server-rpms
history info
Enfin, annulez la dernière transaction en utilisant yum history undo last
.
[root@rhel77 ~]# yum history undo last
Loaded plugins: product-id, search-disabled-repos, subscription-manager
Undoing transaction 2, from Mon Nov 2 15:25:12 2020
Updated device-mapper-7:1.02.158-2.el7.x86_64 @?rhel-7-server-rpms
Update 7:1.02.170-6.el7.x86_64 @rhel-7-server-rpms
Updated device-mapper-libs-7:1.02.158-2.el7.x86_64 @?rhel-7-server-rpms
Update 7:1.02.170-6.el7.x86_64 @rhel-7-server-rpms
Resolving Dependencies
--> Running transaction check
---> Package device-mapper.x86_64 7:1.02.158-2.el7 will be a downgrade
---> Package device-mapper.x86_64 7:1.02.170-6.el7 will be erased
---> Package device-mapper-libs.x86_64 7:1.02.158-2.el7 will be a downgrade
---> Package device-mapper-libs.x86_64 7:1.02.170-6.el7 will be erased
--> Finished Dependency Resolution
Dependencies Resolved
=======================================================================================================================
Package Arch Version Repository Size
=======================================================================================================================
Downgrading:
device-mapper x86_64 7:1.02.158-2.el7 rhel-7-server-rpms 294 k
device-mapper-libs x86_64 7:1.02.158-2.el7 rhel-7-server-rpms 322 k
Transaction Summary
=======================================================================================================================
Downgrade 2 Packages
Total download size: 616 k
Is this ok [y/d/N]:
[ Un guide gratuit de Red Hat :5 étapes pour automatiser votre entreprise. ]
Ce n'est pas la fin
Être proactif est le meilleur moyen d'éviter de revenir en arrière sur un correctif défaillant. Il est recommandé d'effectuer des sauvegardes périodiques au niveau du système d'exploitation et au niveau de l'application pour annuler les modifications en toute confiance. Lisez mon article Activer Sysadmin sur l'utilisation de ReaR
pour la sauvegarde et la restauration basées sur des images.
Pour plus d'informations sur l'annulation des mises à jour dans Red Hat Enterprise Linux, assurez-vous de consulter le portail client Red Hat.