LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1289|回复: 9

[求助]怎样利用dpkg 加参数来删除曾经删除了的包的配置文件。

[复制链接]
发表于 2007-3-6 20:38:38 | 显示全部楼层 |阅读模式
[求助]怎样利用dpkg 加参数来删除曾经删除了的包的配置文件。

我想一次性删除曾经删除过的包的配置文件。查看了man dpkg
发现只有一个--purge 参数有用。但后面却要加包名。

而我都不知道我到底删过哪些包。这样的话应该如何应用才可以把以前删除了的包的配置文件一次性全部删除呢?

就好像用apt-get autoremove  一样,一次性删除无用的关联包
发表于 2007-3-7 02:50:27 | 显示全部楼层
apt-get 不能干的事,比如删除系统文件,dpkg 都能干,dpkg 必需慎用!

经 apt-get 来调用还可以,但千万不能让系统直接自动去调用 dpkg 来删东西,否则後果难以预料!

对 dpkg 命令的用法,除看 man page 外,可以看 eTony 前辈的精华篇。

[color="Red"]重申:dpkg 必需手动,而且一定要在自己清楚所有操作的流程及目的才能使用!
回复 支持 反对

使用道具 举报

发表于 2007-3-7 08:25:19 | 显示全部楼层
from [color="Blue"]Knoppix Remastering Howto
  1. COLUMNS=200 dpkg -l |grep ^rc |awk '{print $2} ' | xargs dpkg -P
复制代码
以 root 用户运行
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-7 09:56:40 | 显示全部楼层
Post by flycraft
from [color="Blue"]Knoppix Remastering Howto

  1. COLUMNS=200 dpkg -l |grep ^rc |awk '{print $2} ' | xargs dpkg -P
复制代码

以 root 用户运行


When you're done removing and adding packages, a good way to clean up is by typing this

COLUMNS=200 dpkg -l |grep ^rc |awk '{print $2} ' | xargs dpkg -P

可否解释一下,这四个命令的具体意思吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-3-7 10:06:01 | 显示全部楼层
在eTony 前辈的小贴士里面是这样写的

4.清除系统中仅仅remove的软件包
HTML 代码:

$dpkg -l |grep ^rc|awk '{print $2}' |tr ["\n"] [" "]|sudo xargs dpkg -P -

tr ["\n"] [" "]和COLUMNS=200等效吗?
回复 支持 反对

使用道具 举报

发表于 2007-3-15 09:11:46 | 显示全部楼层
学习了,呵呵
回复 支持 反对

使用道具 举报

发表于 2007-3-15 19:57:24 | 显示全部楼层
我是这样删除系统中残存的配置文件的

aptitude purge $(dpkg -l|grep ^rc|awk '{ print $2 }')

解释:
dpkg -l 列出系统中所有安装的软件,如果是已经删除的软件(有残存的配置文件),那么该的软件包的状态是rc,即开头显赫为rc 然后是空格,然后是软件包的名称

|grep ^rc 的用处就是找出状态为rc的所有软件包,即以rc开头的行

|awk '{ print $2 }' awk可以将输入的字符串用指定的分隔符进行分解,缺省情况下是空格,$2是表示第二个字段,也就是软件包的名称,因为第一个字段是 rc

$(......)是一个shell表示法,即里面包含括号中的命令输出的内容,实际上是以空格分隔的所有软件包的名称组成的一个字符串

aptitude purge 就是彻底删除软件包(包括配置文件),如果是残存的配置文件,也可以用这种方式删除


我喜欢用aptitude来安装软件包,因为它能够记住软件包的依赖关系,比如安装某个软件包的时候,可能会因为依赖关系而安装一些别的软件包,那么当删除这个软件包的时候,如果当时安装的依赖软件包与系统中安装的其他软件包再没有依赖关系的时候,就会自动删除。
回复 支持 反对

使用道具 举报

发表于 2007-3-15 22:05:04 | 显示全部楼层
我是
aptitude search . | grep '^[^ipv]'
这样可以列出所有残存配置的包,然后手工再 purge 一遍。其实这两个步骤可以合并成一个,不过有一些包的配置还是想留着的,因此手工挑选
回复 支持 反对

使用道具 举报

发表于 2007-3-15 22:15:22 | 显示全部楼层
Post by DoDo
我是
aptitude search . | grep '^[ipv]'
这样可以列出所有残存配置的包,然后手工再 purge 一遍。其实这两个步骤可以合并成一个,不过有一些包的配置还是想留着的,因此手工挑选


我运行这个命令怎么输出很多信息?

是否要用:
aptitude search . | grep -v '^[ipv]'
即查找状态不以i p 或者 v 开头的所有软件包?
回复 支持 反对

使用道具 举报

发表于 2007-3-16 10:58:16 | 显示全部楼层
sorry,打错了,已更正
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表