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.