修复因安装不友好的deb导致包管理系统瘫痪的思路

有一些不怎么友好的deb软件包可能由于某种原因(比如转换不完全成功)安装到一半失败,而想卸载却又卸不掉。无论用什么apt或者dpkg的命令都无法起作用时,用 户可能会很着慌,以至于要备份并重新安装整个系统。这时先不要急,因为一般性的情况下,并不是整个包管理系统真的损坏了,而只是因为一些情况在包管理系统 的意料之外而拒绝读取索引。只要手动从dpkg的索引文件和相关目录删除这些软件的信息/文件即可让包管理系统恢复正常。

对于deb系统而言,其实安装软件包不外乎把软件解压缩到指定的目录下去,然后运行设定脚本去读取一些环境变量来生成 一些配置文件。完了之后dpkg会把安装结果和软件包状态的变化记录到索引文件中去(apt也一样,因为它在安装软件包时其实是调用了dpkg)。所以我 们手动删除这些信息之后就和没安装过他们一模一样。要手动删除一个软件包,要做的就是:

1.找出软件包安装的文件的列表,一一删除之。

2.在索引文件中找到这些软件包的信息并删除之。

3.重建索软件包集合信息。


如果要求不高,只希望包关系系统恢复工作的话,只需要2和3就够了。用不着的文件暂时放一放也无妨(前提是不会对系统安全性产生威胁)。对应的信息获取地点和操作地点:

1.软件包的文件列表,在包内,只要deb还在(一般通过apt缓存的包放在/var/cache/apt/archives),用dpkg -c XXX.deb就可以得到。

2.索引信息,一般在/var/lib/dpkg/status,文本文件,结构简单清楚;另外/var/lib/dpkg/info下有每个安装过的包的信息文件信息(和MD5校验),一组3-4个文件,以软件包命名,后缀为list、md5等等,酌情删除。

3.apt-get update

上 面3条不能保证100%删除所有软件包残留信息,只是能够尽快让apt/dpkg恢复工作。一些注册信息比如向gconf注册schema需要额外步骤来 注销,也许比较省力的方法就是设法找一个更新后或者版本兼容的deb替代安装,如此就能覆盖掉以前的信息,再删除就清除了所有的残留。

posted on 2007-08-02 14:51 Anderson.Yao 阅读(1302) 评论(1)  编辑 收藏 引用 所属分类: DebianGNU/LinuxUbuntu

评论

# re: 修复因安装不友好的deb导致包管理系统瘫痪的思路 2011-04-24 00:29 盧崇偉

【贪吃蛇—Java程序员写Android游戏】系列 4.用Google SVN管理开源的Android项目  回复  更多评论   

只有注册用户登录后才能发表评论。
<2011年4月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿(1)

随笔分类

随笔档案

文章分类

搜索

最新评论

阅读排行榜

评论排行榜