因为一开始不知到如何彻底卸载软件包,误把文件目录删除,造成了软件包信息列表损坏,系统无法使用apt-get 命令,无论实施更新或安装还是卸载都会提示软件包信息列表损坏,建议重新安装该软件包。在网上找了好久,有说用apt-get remove XXX ,apt-get autoremove, apt-get autoclean 或apt-get purge xxx的;有说用dpkg -r或dpkg -P 的;有说用aptitude reinstall XXX重新安装的,亦或是 aptitude purge XXX完全清除命令的都不好使。
后来看到一篇文章说将/var/lib/dpkg/info目录更改为 info_old,新建一个空目录info,然后用 aptitude update 更新,用apt-get -f install 清除残留文件,结果还是不行。后来我尝试在系统中搜索相关文件想把其全部删除,用sudo find / -name XXX命令,发现什么都找不到。也就是说该软件包的文件已经全部被我删除了,但是它还残留信息告诉系统它还存在。就好像一本书目录完好,内容有缺页一样,导致软件包管理工具无法正常使用。我尝试用aptitude show XXX命令 ,发现文件包的信息记录的仍旧很详尽,而且用 dpkg -l |grep XXX命令也可查到该包已部分安装。
于是我开启了无头苍蝇模式。到/var/lib/dpkg/目录下,打开里面所有文件,看了一遍。发现这个目录下有available,available_old,status,status_old 这 4个文件,都记录了被我误删的软件包的信息,而且信息内容和用aptitude show xxx命令显示出来的内容一致,我就把这些信息从这4个文件中全部清除了。结果清除后,居然 apt-get 奇迹般的恢复了正常功效。原来ubuntu/debian软件包的信息都是有这个dpkg工具管理的,其他工具也是依赖dpkg这个工具对软件包实施操作的。看来无头苍蝇也是一个不错的解决问题的模式。