完全删除我安装的所有软件包吗?


12

我当时使用一台装有CentOS7的Linux服务器来测试和安装一些工具。现在我不记得我安装了多少个软件包。

我想删除所有这些软件包,以便我的服务器像以前一样是新的。我不想搜索每个软件包并一一删除。有什么方法可以仅通过一个命令将其删除?


/var/log/yum.log可能会有所帮助,它同时列出了程序包名称和时间戳。据我所知,它没有列出初始安装中添加的软件包。
乌尔里希·施瓦茨

yum.log文件将列出我安装的所有软件包,但是如何仅用1个命令删除所有软件包?
一个

2
“标准壳技术”;)一样sudo yum remove $(gawk '$0 ~ /Installed/ {printf "%s ", $NF}' /var/log/yum.log)
Ulrich Schwarz

Answers:


14

将所有文件按照安装日期的相反顺序列出到文件中:

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)

7

您也可以尝试一下,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历史的更多详细信息,请点击这里


0

为了回滚每笔历史交易,您可以使用以下o-liner:

# yum history list|awk '$1 ~ /[0-9]+/ {print $1}'| while read a; do yum history undo -y $a; done

运行此命令时请小心,因为它将删除所有已安装的软件包!如果要确认,可以删除-y标志。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.