GNU/Linux >> Linux Esercitazione >  >> Linux

Gestione delle patch di Linux:come eseguire il backup di una patch non riuscita

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.


Linux
  1. Come scoprire cosa fa un comando Linux

  2. Linux:come scoprire lo spazio dei nomi di un particolare processo?

  3. Come ingrandire e rimpicciolire la console del terminale in Linux

  4. Come faccio a sapere quale versione di Linux sto utilizzando?

  5. Come determinare la versione di Intel Management Engine su Linux?

Come scoprire l'indirizzo IP pubblico dalla riga di comando su Linux

Come scoprire lo stato connesso di un cavo di rete in Linux

Come scoprire a quali gruppi appartiene un utente in Linux

Come convertire PDF in immagini PNG e viceversa in Linux

Come disconnettere un utente da SSH in Linux

Come elencare i pacchetti installati in Linux utilizzando la gestione dei pacchetti