サーバーを最新の状態に保つことは、システム管理者の主要な責任の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カスタマーポータルを確認してください。