首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用yum卸载今天安装的所有rpm?

如何用yum卸载今天安装的所有rpm?
EN

Stack Overflow用户
提问于 2015-05-11 06:50:42
回答 3查看 3.8K关注 0票数 4

我非常熟悉

代码语言:javascript
复制
rpm -qa --last

发现它在某些场合非常方便。然而,在这一次,我意外地有点过于热心,并安装了一个庞大的百胜集团。

代码语言:javascript
复制
yum groupinstall "Development tools"

有没有一种简单的方法来卸载我刚刚安装的所有东西?在我看来,应该有一些方法结合rpm查询和rpm擦除。也就是说,将查询命令的输出传递到remove命令。

更新:基于用户@rickhg12hs反馈的

有人指出,我可以看到与yum history的事务id,这是我不知道的。如下所示:

代码语言:javascript
复制
$ 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   

塔达:这就是,一个交易id。

我想从事务id 67卸载。所以现在我更聪明了,我有一个新问题。

那么,如何使用yum或rpm命令卸载事务呢?

注:有人还向我指出,我可以做一个

代码语言:javascript
复制
$ 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 ...

在某些情况下,我认为这是很有帮助的。

EN

回答 3

Stack Overflow用户

发布于 2015-05-11 08:49:55

如果您卸载软件包,那么您就有可能删除已经存在但碰巧被升级的东西。通常,您应该使用yum (或等效的)来管理包,这允许您降低包的级别。这将删除新的包,并降低现有包的级别。参见例如如何使用yum和rpm安全地降低或去除胶质细胞。

选择要降级的包的名称可以使用rpm -qa的输出进行,格式化后可以简单地选择给定的日期。例如(请参阅https://unix.stackexchange.com/questions/2291/centos-list-the-installed-rpms-by-date-of-installation-update),您可以使用

代码语言:javascript
复制
rpm -qa --last

作为一种更详细的方法,您可以使用--queryformat选项和:date选项来精确地格式化日期(它使用strftime)。

在这两种情况下,您都可以创建一个脚本,从rpm的输出中提取包名,并根据需要使用那些带有yum (甚至rpm)的包进行操作。

在降级时,要记住一件奇怪的事情:使用前一个日期将软件包的安装日期修改为当前日期,而不是完全撤消。

票数 2
EN

Stack Overflow用户

发布于 2015-05-12 13:55:17

安装在单个事务中的所有包都具有相同的RPMTAG_INSTALLTID标记值。

使用

代码语言:javascript
复制
rpm -qa --qf '[%{name}\t%{installtid:date}\n]'

若要查找作为yum组安装的一部分安装的所有包,请执行以下操作。

票数 1
EN

Stack Overflow用户

发布于 2020-12-16 00:07:34

Yum为您提供了撤消命令(即yum history undo #blah )的规定。

在这种情况下,要删除今天安装的所有包,可以运行:

代码语言:javascript
复制
yum history undo 69
yum history undo 68
yum history undo 67
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30161222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档