The*_*One 13 linux package-management command
我使用一台安装了 CentOS7 的 Linux 服务器来测试和安装一些工具。现在我不记得我安装了多少个软件包。
我想删除所有这些包,这样我的服务器就像新的一样。我不想搜索每个包并一个一个删除。有没有办法只用一个命令就可以删除它们?
meu*_*euh 15
将所有文件按照安装日期的相反顺序列出到一个文件中:
rpm -qa --last >list
Run Code Online (Sandbox Code Playgroud)
你会得到像
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
Run Code Online (Sandbox Code Playgroud)
选择适用于您的截止日期并删除其后的所有行。删除日期部分后,将剩余的行交给 yum 删除。例如
sudo yum remove $(awk '{print $1}' <list)
Run Code Online (Sandbox Code Playgroud)
您也可以尝试使用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
Run Code Online (Sandbox Code Playgroud)
yum history undo 3
例如,您可以在之后使用。
关于 yum 历史的更多细节在这里。