GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux-Patch-Management:Zurücksetzen eines fehlgeschlagenen Patches

Server auf dem neuesten Stand zu halten, ist eine der Hauptaufgaben eines Systemadministrators. Updates funktionieren jedoch nicht immer so, wie Sie es erwarten, daher ist es ebenso wichtig, dass Sie wissen, wie man a) einen Patch zurücksetzt, um den Server auf den vorherigen Zustand zurückzusetzen, und b) Patches in Teilmengen anwendet, um mehr Flexibilität zu erhalten.

Dieser Artikel konzentriert sich auf das Patchen auf Betriebssystemebene, das mit Hilfe der Paketverwaltungstools YUM/DNF unter Red Hat Enterprise Linux (RHEL) durchgeführt wird. Für diese Demonstration wird ein laufender RHEL 7.7-Server mit yum auf RHEL 7.9 aktualisiert , und kehrte dann zur Version RHEL 7.7 zurück. Es wird immer empfohlen, regelmäßig Backups Ihrer Server zu erstellen und die Demonstrationen in diesem Artikel dienen nur zu Bildungszwecken.

Überprüfen Sie den Server auf ausstehende Patches/Updates

Sofern Sie kein Systemverwaltungstool wie Red Hat Satellite verwenden, müssen Sie die Server manuell auf Aktualisierungen testen.

Ziehen Sie für diesen Artikel einen RHEL 7.7-Server in Betracht:

[root@rhel77 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.7 (Maipo)

Verwenden Sie den check-update Befehl, um nicht interaktiv nach ausstehenden Updates auf Ihrem Server zu suchen:

[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     

[Das könnte Ihnen auch gefallen: Red Hat Insights:Vulnerability Management ]

Als dieser Artikel geschrieben wurde, war RHEL 7.9 die neueste Version von RHEL 7 und führte ein yum update durch würde diesen RHEL 7.7-Server zu RHEL 7.9 bringen:

[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!

Überprüfen Sie nach einem erfolgreichen Neustart die RHEL-Version, um zu bestätigen, dass der Server auf 7.9 aktualisiert wurde:

[root@rhel77 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.9 (Maipo)

Zurücksetzen der Aktualisierungen

Überprüfen Sie zuerst den Verlauf der Transaktion mit dem yum Befehl:

[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

Die Spalten Aktion(en) und Geändert geben Auskunft darüber, welche Änderungen bei dieser Transaktion aufgetreten sind.

Aktion(en):

  • I - Neues Paket installiert
  • O - Paket ist veraltet
  • U - Paket wurde aktualisiert

Geändert:

  • 157 Pakete wurden verändert
  • EE - Es gab einige Fehler/Warnungen in der Transaktion

Verwenden von yum history packages-list zeigt die Änderungen, die aus der Sicht dieses Pakets stattgefunden haben.

Als systemd ist der erste Prozess, der in RHEL-Versionen 7 und höher gestartet wird, dieses Paket ist mit /etc/yum/protected.d/systemd.conf geschützt :

[root@rhel77 ~]# cat /etc/yum/protected.d/systemd.conf
systemd

Machen Sie die letzte Transaktion mit yum history undo rückgängig :

[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

Achtung :Der folgende Prozess wird nicht unterstützt und ist nicht getestet. Beheben Sie alle Probleme, die sich aus dem Downgrade ergeben, indem Sie von einer Sicherung oder Neuinstallation wiederherstellen.

Verschieben Sie das yum Konfigurationsdatei, die systemd: schützt

[root@rhel77 ~]# mv /etc/yum/protected.d/systemd.conf /etc/yum/protected.d/systemd.conf.bak

Führen Sie den yum history undo last erneut aus Befehl:

[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!

Server neu starten

Überprüfen Sie die Version von RHEL und des Kernels:

[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

Der Server verwendet die neueste Kernel-Version von RHEL 7.9. Sie können den Standardkernel mit grub2-set-default ändern Befehl.

Wenden Sie den Patch in Teilmengen an, um mehr Flexibilität beim Rollback zu erhalten

Durch das Anheften von RHEL an eine bestimmte Version können Sie verhindern, dass das System auf die neueste Nebenversion aktualisiert wird. Subscription Manager kann verwendet werden, um die Version von RHEL festzulegen:

[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

Überprüfen Sie die verfügbaren Updates und den Repo-Status, bevor Sie die Version anheften:

[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

Heften Sie die Version an RHEL 7.8 an, löschen Sie den yum Cache und überprüfen Sie die aktivierten Repos:

[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

Dies ist aus der Repo-URL ersichtlich Ausgabe darüber, dass es jetzt 7.8 verwendet und nicht latest .

Führen Sie yum update aus und überprüfen Sie, ob es Änderungen an den verfügbaren Updates gibt:

[root@rhel77 ~]# yum update
....
Transaction Summary
=======================================================================================================================
Install    2 Packages (+1 Dependent package)
Upgrade  136 Packages

Patching in Teilmengen

Die Geschichte Option mit yum verwendet die Transaktion, um den Vorgang rückgängig zu machen/rückgängig zu machen. Das Aktualisieren der Pakete als Teilmengen bietet also die Flexibilität, sie rückgängig zu machen. Dies ist ein besserer Ansatz, als das System als Ganzes zu aktualisieren.

Aktualisieren Sie das Paket „device-mapper“ mit 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]:

Überprüfen Sie den Verlauf mit 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

Erhalten Sie genauere Details zu Transaktions-ID 2 mit 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

Machen Sie schließlich die letzte Transaktion mit yum history undo last rückgängig .

[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]:

[ Ein kostenloser Leitfaden von Red Hat:5 Schritte zur Automatisierung Ihres Unternehmens. ] 

Es ist nicht das Ende

Proaktiv zu sein ist der beste Weg, um ein Rollback eines fehlgeschlagenen Patches zu vermeiden. Regelmäßige Sicherungen auf Betriebssystem- und Anwendungsebene sind die empfohlene Methode, um die Änderungen sicher rückgängig zu machen. Lesen Sie meinen Artikel „Sysadmin aktivieren“ zur Verwendung von ReaR für Image-basierte Sicherung und Wiederherstellung.

Weitere Informationen zum Rollback von Updates in Red Hat Enterprise Linux finden Sie im Red Hat Kundenportal.


Linux
  1. So finden Sie die Liste aller offenen Ports in Linux heraus

  2. Linux – Wie finde ich den Namensraum eines bestimmten Prozesses heraus?

  3. So überprüfen Sie fehlgeschlagene oder fehlerhafte Anmeldeversuche unter Linux

  4. Wie finde ich heraus, welche Version von Linux ich verwende?

  5. Wie bestimme ich die Version der Intel Management Engine unter Linux?

So finden Sie die öffentliche IP-Adresse über die Befehlszeile unter Linux heraus

So ermitteln Sie den Verbindungsstatus eines Netzwerkkabels in Linux

So finden Sie heraus, zu welchen Gruppen ein Benutzer in Linux gehört

So konvertieren Sie PDF in PNG-Bilder und zurück unter Linux

So melden Sie einen Benutzer unter Linux von SSH ab

So listen Sie installierte Pakete in Linux mithilfe der Paketverwaltung auf