Mantenere aggiornati i server è una delle principali responsabilità dell'amministratore di sistema. Tuttavia, gli aggiornamenti non funzionano sempre nel modo previsto, quindi è altrettanto importante sapere come a) ripristinare una patch per riportare il server allo stato precedente e b) applicare patch in sottoinsiemi per ottenere maggiore flessibilità.
Questo articolo si concentra sull'applicazione di patch a livello di sistema operativo eseguita con l'aiuto degli strumenti di gestione dei pacchetti YUM/DNF su Red Hat Enterprise Linux (RHEL). Per questa dimostrazione, un server RHEL 7.7 in esecuzione viene aggiornato a RHEL 7.9 utilizzando yum
, quindi è tornato alla versione RHEL 7.7. Ti consigliamo sempre di eseguire backup periodici dei tuoi server e le dimostrazioni fornite in questo articolo sono solo a scopo didattico.
Controlla sul server la presenza di patch/aggiornamenti in sospeso
A meno che tu non stia utilizzando uno strumento di gestione dei sistemi come Red Hat Satellite, devi testare manualmente i server per eventuali aggiornamenti.
Per questo articolo, considera un server RHEL 7.7:
[root@rhel77 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.7 (Maipo)
Usa il check-update
comando per verificare in modo non interattivo gli aggiornamenti in sospeso sul tuo server:
[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
[ Potrebbe piacerti anche: Red Hat Insights:gestione delle vulnerabilità ]
Quando è stato scritto questo articolo, RHEL 7.9 era la versione più recente di RHEL 7 e stava facendo un yum update
porterebbe questo server RHEL 7.7 su 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!
Dopo un riavvio riuscito, controlla la versione di RHEL per confermare che il server sia aggiornato a 7.9:
[root@rhel77 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)
Ripristinare gli aggiornamenti
Per prima cosa, controlla la cronologia della transazione con yum
comando:
[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
Le colonne Azione/i e Modificato forniscono informazioni sulle modifiche avvenute con questa transazione.
Azione/i:
- I - Nuovo pacchetto installato
- O - Il pacchetto è obsoleto
- U - Il pacchetto è aggiornato
Modificato:
- 157 pacchetti sono stati modificati
- EE - Si sono verificati alcuni errori/avvisi nella transazione
Usando yum history packages-list
mostra le modifiche avvenute dal punto di vista di quel pacchetto.
Come systemd
è il primo processo avviato nelle versioni RHEL 7 e successive, quel pacchetto è protetto con /etc/yum/protected.d/systemd.conf
:
[root@rhel77 ~]# cat /etc/yum/protected.d/systemd.conf
systemd
Ripristina l'ultima transazione con 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
Attenzione :il processo seguente non è supportato e non è stato testato. Risolvi eventuali problemi derivanti dal downgrade eseguendo il ripristino da un backup o una reinstallazione.
Sposta il yum
file di configurazione, che protegge systemd:
[root@rhel77 ~]# mv /etc/yum/protected.d/systemd.conf /etc/yum/protected.d/systemd.conf.bak
Riesegui yum history undo last
comando:
[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!
Riavvia il server
Controlla la versione di RHEL e il kernel:
[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
Il server utilizza l'ultima versione del kernel di RHEL 7.9. Puoi cambiare il kernel predefinito usando grub2-set-default
comando.
Applica la patch in sottoinsiemi per ottenere una maggiore flessibilità di rollback
Il blocco di RHEL a una versione specifica è un modo per impedire l'aggiornamento del sistema all'ultima versione secondaria. Subscription Manager può essere utilizzato per impostare la versione di 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
Controlla gli aggiornamenti disponibili e lo stato del repository prima di aggiungere la versione:
[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
Aggiungi la versione a RHEL 7.8, cancella il yum
cache e controlla i repository abilitati:
[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
È evidente dall'URL repository output superiore a quello ora utilizza 7.8 e non latest
.
Esegui yum update
e controlla se ci sono modifiche agli aggiornamenti disponibili:
[root@rhel77 ~]# yum update
....
Transaction Summary
=======================================================================================================================
Install 2 Packages (+1 Dependent package)
Upgrade 136 Packages
Patch in sottoinsiemi
La storia opzione con yum
utilizza la transazione per eseguire il rollback/annullamento dell'operazione. Pertanto, l'aggiornamento dei pacchetti come sottoinsiemi offre la flessibilità di ripristinarli. Questo è un approccio migliore rispetto all'aggiornamento del sistema nel suo insieme.
Aggiorna il pacchetto 'device-mapper' con 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]:
Controlla la cronologia con 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
Ottieni dettagli più specifici sull'ID transazione 2 utilizzando 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
Infine, annulla l'ultima transazione utilizzando 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]:
[ Una guida gratuita di Red Hat:5 passaggi per automatizzare il tuo business. ]
Non è la fine
Essere proattivi è il modo migliore per evitare il rollback di una patch non riuscita. L'esecuzione di backup periodici a livello di sistema operativo e di applicazione è il modo consigliato per ripristinare le modifiche con sicurezza. Leggi il mio articolo Enable Sysadmin su come utilizzare ReaR
per il backup e il ripristino basati su immagini.
Per ulteriori informazioni sul rollback degli aggiornamenti in Red Hat Enterprise Linux, assicurati di controllare il Red Hat Customer Portal.