一部のツールのテストとインストールには、CentOS7がインストールされた1台のLinuxサーバーを使用していました。インストールしたパッケージの数を覚えていません。
そのパッケージをすべて削除して、サーバーを新品のようにしたいと思います。すべてのパッケージを検索して1つずつ削除する必要はありません。 1つのコマンドだけでそれらを削除する方法はありますか?
すべてのファイルをインストール日と逆の順序でファイルにリストします。
rpm -qa --last >list
次のような行が表示されます
atop-2.1-1.fc22.x86_64 Wed Apr 13 07:35:27 2016
telnet-server-0.17-60.fc22.x86_64 Mon Apr 11 20:10:43 2016
mhddfs-0.1.39-3.fc22.x86_64 Sat Apr 9 21:26:06 2016
libpcap-devel-1.7.3-1.fc22.x86_64 Fri Apr 8 09:40:43 2016
該当する締切日を選択し、それに続くすべての行を削除します。日付部分を削除した後、削除する残りの行をyumに渡します。例えば
Sudo yum remove $(awk '{print $1}' <list)
yum history
で試すこともできます。通常、インストールされているものの番号付きリストを取得します。
[root@localhost ~]# yum history
Loaded plugins: product-id, refresh-packagekit, subscription-manager
Updating Red Hat repositories.
ID | Login user | Date and time | Action(s) | Altered
3 | root <root> | 2011-09-14 14:36 | Install | 1
2 | root <root> | 2011-09-12 15:48 | I, U | 80
1 | System <unset> | 2011-09-12 14:57 | Install | 1025
たとえば、後でyum history undo 3
を使用できます。
Yum履歴の詳細 ここ 。
すべての履歴トランザクションをロールバックするには、以下のOライナーを使用できます。
# yum history list|awk '$1 ~ /[0-9]+/ {print $1}'| while read a; do yum history undo -y $a; done
インストールされているすべてのパッケージが削除されるため、このコマンドの実行中は注意してください。確認が必要な場合は、-yフラグを削除できます。