GNU/Linux >> Linux の 問題 >  >> Linux

Linuxパッチ管理:失敗したパッチを取り消す方法

サーバーを最新の状態に保つことは、システム管理者の主要な責任の1つです。ただし、更新は常に期待どおりに機能するとは限らないため、a)パッチを元に戻してサーバーを以前の状態に戻し、b)パッチをサブセットに適用して柔軟性を高める方法を知っていることも同様に重要です。

>

この記事では、Red Hat Enterprise Linux(RHEL)上のパッケージ管理ツールYUM/DNFを使用して行われるオペレーティングシステムレベルのパッチ適用に焦点を当てています。このデモでは、実行中のRHEL7.7サーバーがyumを使用してRHEL7.9に更新されます。 、その後、RHEL7.7バージョンに戻りました。サーバーの定期的なバックアップを行うことを常にお勧めします。この記事で提供されるデモンストレーションは、教育目的のみです。

サーバーで保留中のパッチ/更新を確認します

Red Hat Satelliteなどのシステム管理ツールを使用している場合を除き、サーバーの更新を手動でテストする必要があります。

この記事では、RHEL7.7サーバーについて検討してください。

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

check-updateを使用します サーバー上の未処理の更新を非対話的にチェックするコマンド:

[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     

[次のこともお勧めします:Red Hat Insights:脆弱性管理]

この記事が書かれたとき、RHEL7.9はRHEL7の最新バージョンであり、yum updateを実行していました。 このRHEL7.7サーバーをRHEL7.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!

再起動が成功したら、RHELのバージョンをチェックして、サーバーが7.9に更新されていることを確認します。

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

更新を元に戻す

まず、yumで取引の履歴を確認します コマンド:

[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

[アクション]列と[変更]列には、このトランザクションで発生した変更に関する情報が表示されます。

アクション:

  • I-新しいパッケージがインストールされました
  • O-パッケージは廃止されました
  • U-パッケージが更新されました

変更:

  • 157個のパッケージが変更されました
  • EE-トランザクションにいくつかのエラー/警告がありました

yum history packages-listを使用する は、そのパッケージの観点から発生した変更を示しています。

systemdとして はRHELバージョン7以降で開始された最初のプロセスであり、そのパッケージは/etc/yum/protected.d/systemd.confで保護されています。 :

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

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

注意 :次のプロセスはサポートされておらず、テストもされていません。バックアップまたは再インストールから回復することにより、ダウングレードから発生する問題を解決します。

yumを移動します systemd:を保護する構成ファイル

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

yum history undo lastを再実行します コマンド:

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

サーバーを再起動します

RHELのバージョンとカーネルを確認してください:

[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

サーバーは、RHEL7.9の最新のカーネルバージョンを使用しています。 grub2-set-defaultを使用してデフォルトのカーネルを変更できます コマンド。

パッチをサブセットに適用して、ロールバックの柔軟性を高めます

RHELを特定のバージョンに固定することは、システムが最新のマイナーバージョンに更新されないようにする1つの方法です。サブスクリプションマネージャーを使用して、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

バージョンを固定する前に、利用可能なアップデートとリポジトリのステータスを確認してください:

[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

バージョンをRHEL7.8に固定し、yumをクリアします キャッシュし、有効なリポジトリを確認します:

[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

レポジトリURLから明らかです 上記の出力では、現在7.8を使用しており、は使用していません。 latest

yum updateを実行します 利用可能なアップデートに変更があるかどうかを確認します:

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

サブセットでのパッチ適用

歴史 yumのオプション トランザクションを使用して、操作をロールバック/元に戻します。したがって、パッケージをサブセットとして更新すると、パッケージをロールバックする柔軟性が得られます。これは、システム全体を更新するよりも優れたアプローチです。

'device-mapper'パッケージを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]:

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

yum history info 2を使用して、トランザクションID2に関するより具体的な詳細を取得します 。

[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

最後に、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]:

[Red Hatの無料ガイド:ビジネスを自動化するための5つのステップ。 ]

終わりではありません

失敗したパッチのロールバックを回避するには、プロアクティブであることが最善の方法です。定期的にオペレーティングシステムレベルとアプリケーションレベルのバックアップを取ることは、自信を持って変更をロールバックするための推奨される方法です。 ReaRの使用方法に関するシステム管理者の有効化に関する記事をお読みください イメージベースのバックアップと復元用。

Red Hat Enterprise Linuxでの更新のロールバックの詳細については、RedHatカスタマーポータルを確認してください。


Linux
  1. Linuxで開いているすべてのポートのリストを見つける方法

  2. 実行しているLinuxバージョンは何ですか?調べる方法は次のとおりです

  3. Linux –特定のプロセスの名前空間を見つける方法は?

  1. Linux で失敗または不正なログイン試行を確認する方法

  2. Linuxでターミナルコンソールをズームインおよびズームアウトする方法

  3. 実行している Linux のバージョンを確認するにはどうすればよいですか?

  1. Linux で Intel Management Engine のバージョンを確認する方法は?

  2. Linux メモリ管理で swappiness を設定するには?

  3. Linux VPS の仮想化タイプを調べる方法は?