我非常熟悉
rpm -qa --last
并且发现它在某些场合非常方便。然而,在这种情况下,我不小心有点过分热心,并安装了一个大型的yum组。
yum groupinstall "Development tools"
有没有简单的方法来卸载我刚刚安装的所有内容?在我看来应该有一些方法来结合rpm查询和rpm擦除。即将查询命令的输出传递给remove命令。
更新:基于用户@ rickhg12hs反馈
有人指出我可以看到我不知道的yum history
交易ID。这是看起来像:
$ yum history
Loaded plugins: fastestmirror, security
ID | Login user | Date and time | Action(s) | Altered
----------------------------------------------------------------------------
69 | <jds> | 2015-05-11 01:31 | Install | 1
68 | <jds> | 2015-05-11 01:31 | Install | 1
67 | <jds> | 2015-05-11 01:10 | I, U | 210
66 | <jds> | 2015-05-05 12:41 | Install | 1
65 | <jds> | 2015-04-30 17:57 | Install | 2
64 | <ansible> | 2015-04-30 10:11 | Install | 1
63 | <ansible> | 2015-04-30 10:11 | Install | 1
62 | <ansible> | 2015-04-30 10:11 | Install | 1 EE
61 | <ansible> | 2015-04-30 10:11 | Install | 1
60 | <ansible> | 2015-04-30 10:11 | Install | 1
59 | <ansible> | 2015-04-30 09:58 | Install | 19 P<
58 | <ansible> | 2015-04-29 18:28 | Install | 1 >
57 | <ansible> | 2015-04-29 18:28 | Install | 1
56 | <ansible> | 2015-04-29 18:28 | Install | 9
55 | <ansible> | 2015-04-29 18:28 | Install | 3
54 | <ansible> | 2015-04-29 18:28 | Install | 1
53 | <ansible> | 2015-04-29 18:27 | I, U | 5
52 | <ansible> | 2015-04-29 18:27 | I, U | 4
51 | <ansible> | 2015-04-29 18:27 | Install | 1
50 | <ansible> | 2015-04-29 18:27 | Install | 1
和tada:它是一个交易ID。
我想从事务ID 67中卸载。所以现在我有点明智了,我有一个新问题。
注意:我也指出我可以做一个
$ yum history info 67 |less
Loaded plugins: fastestmirror, security
Transaction ID : 67
Begin time : Mon May 11 01:10:09 2015
Begin rpmdb : 1012:bb05598315dcb21812b038a356fa06333d277cde
End time : 01:13:25 2015 (196 seconds)
End rpmdb : 1174:cb7855e82c7bff545319c38b01a72a48f3ada1ab
User : <jds>
Return-Code : Success
Command Line : groupinstall Additional Development
Transaction performed with:
Installed rpm-4.8.0-38.el6_6.x86_64 @updates
Installed yum-3.2.29-60.el6.centos.noarch @anaconda-CentOS-201410241409.x86_64/6.6
Installed yum-plugin-fastestmirror-1.1.30-30.el6.noarch @anaconda-CentOS-201410241409.x86_64/6.6
Packages Altered:
Dep-Install GConf2-2.28.0-6.el6.x86_64 @base
Install GConf2-devel-2.28.0-6.el6.x86_64 @base
Dep-Install ORBit2-2.14.17-5.el6.x86_64 @base
... snip ...
我认为在某些情况下这可能会非常有用。
答案 0 :(得分:2)
如果你卸载软件包,那么你就有可能删除已经存在的东西,但是碰巧升级了。通常,您应该使用yum
(或等效的)来管理包,这样您就可以降级包。这将删除新的包,并降级现有的包。请参阅示例How to safely downgrade or remove glibc with yum and rpm
选择要降级的软件包名称可以使用rpm -qa
的输出完成,格式化为允许简单选择给定日期。例如(参见 CentOS: List the installed RPMs by date of installation/update? ),您可以使用
rpm -qa --last
作为一种更精细的方法,您可以使用--queryformat
选项和:date
选项完全按照您的要求格式化日期(它使用strftime
)。
在任何一种情况下,您都可以创建一个脚本来从rpm
的输出中提取包名称,并使用yum
(甚至rpm
)的包来根据需要进行操作
在进行降级时,要记住一件奇怪的事情:通过使用上一个日期,将软件包的安装日期修改为当前日期而不是完全撤消。
答案 1 :(得分:1)
单个事务中安装的所有软件包都有 一个相同的RPMTAG_INSTALLTID标记值。
使用
rpm -qa --qf '[%{name}\t%{installtid:date}\n]'
查找作为yum组安装的一部分安装的所有软件包。
答案 2 :(得分:1)
Yum规定您可以撤消命令,即yum history undo #blah
对于您而言,要删除您今天安装的所有软件包,可以运行:
yum history undo 69
yum history undo 68
yum history undo 67