Centosにいくつかのユーティリティをインストールしてテストしたり、複雑なチュートリアルを実行して結果が不明な高度なプログラムをインストールしたりする必要がある場合があります。
変更を行う前の状態に戻すにはどうすればよいですか。
実用的なケース:PHP5.6の他にPHP7をインストールしたい、多くのチュートリアルがあり、それぞれをテストしたい、そして失敗した場合、少なくとも前の状態に戻したい。
本番環境で使用する場合の最善のアプローチは、変更を本番環境に適用する前に変更をテストできるテスト環境を用意することです。これをVMとして持つことは、もちろんスナップショットとロールバックに役立ちます。
もう1つのアプローチは、スナップショットやLVMも実行できるZFSなどの最新のファイルシステムを使用することです。
これは、物理ハードウェアではなく、VMwareやVirtualBoxなどの仮想マシンで行うのが最適です。変更を加える前に仮想マシンのスナップショットを作成します。その後、以前の状態に戻す必要がある場合は、スナップショットに戻すのは簡単なことです。
いくつかのパッケージをインストールするとします。
yum install php
そして、そのパッケージがphp
はたくさんの依存関係をインストールすると言います。
Dependencies Resolved
===============================================================================================================================
Package Arch Version Repository Size
===============================================================================================================================
Installing:
php x86_64 5.3.3-49.el6 base 1.1 M
Installing for dependencies:
php-bcmath x86_64 5.3.3-49.el6 base 40 k
php-cli x86_64 5.3.3-49.el6 base 2.2 M
php-common x86_64 5.3.3-49.el6 base 530 k
php-dba x86_64 5.3.3-49.el6 base 46 k
php-devel x86_64 5.3.3-49.el6 base 513 k
php-embedded x86_64 5.3.3-49.el6 base 1.1 M
php-enchant x86_64 5.3.3-49.el6 base 34 k
php-Gd x86_64 5.3.3-49.el6 base 111 k
php-imap x86_64 5.3.3-49.el6 base 55 k
php-intl x86_64 5.3.3-49.el6 base 76 k
php-ldap x86_64 5.3.3-49.el6 base 43 k
php-mbstring x86_64 5.3.3-49.el6 base 460 k
php-mysql x86_64 5.3.3-49.el6 base 86 k
php-odbc x86_64 5.3.3-49.el6 base 56 k
php-pdo x86_64 5.3.3-49.el6 base 80 k
php-pgsql x86_64 5.3.3-49.el6 base 75 k
php-process x86_64 5.3.3-49.el6 base 44 k
php-pspell x86_64 5.3.3-49.el6 base 33 k
php-recode x86_64 5.3.3-49.el6 base 30 k
php-snmp x86_64 5.3.3-49.el6 base 36 k
php-soap x86_64 5.3.3-49.el6 base 145 k
php-tidy x86_64 5.3.3-49.el6 base 41 k
php-xml x86_64 5.3.3-49.el6 base 108 k
php-xmlrpc x86_64 5.3.3-49.el6 base 58 k
php-zts x86_64 5.3.3-49.el6 base 1.2 M
php
をyum remove php
経由で単に削除しようとした場合、yumはそれを実行し、削除を要求しなかったため、システムへの依存関係のほとんどまたはすべてを残しますそれらも。
Dependencies Resolved
===============================================================================================================================================================================================================
Package Arch Version Repository Size
===============================================================================================================================================================================================================
Removing:
php x86_64 5.3.3-49.el6 @base 3.5 M
Removing for dependencies:
php-devel x86_64 5.3.3-49.el6 @base 3.0 M
php-pecl-apc-devel x86_64 3.1.9-2.el6 @base 3.3 k
Transaction Summary
===============================================================================================================================================================================================================
Remove 3 Package(s)
むしろ、yum history
コマンドを呼び出すことにより、yumを使用してトランザクションを完全に取り消すことができます。
]# yum history
Loaded plugins: fastestmirror, security
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
41 | <user> | 2018-06-08 10:45 | Install | 26
そして、今度は履歴ID 41を元に戻します。
yum history undo 41
新しいアップデートがパッケージに依存している場合、またはそれらがコアシステムパッケージである場合など、一部のケースでは、yumは特定のパッケージを削除できないことに注意してください。
また、Fedora(およびまもなくCentOS)システムでは、dnf
パッケージマネージャーに同じコマンドがあるため、dnf history
は引き続き機能します。
最後に、これは/ etcで行った設定ファイルの変更を取り消すことはありません(ただし、パッケージがそこに配置した場合、新しくインストールされた設定ファイルは削除されます)。システムに対して行った操作はすべて保持され、パッケージマネージャーが行った操作はすべて元に戻ります。システム全体の復元機能が必要な場合は、VMとスナップショットを使用することをお勧めします。