升级debian,dpkg的错误
本文可自由转载,但请遵循“署名-非商业用途-保持一致”的创作共用协议。 永久链接:JoeCen's 小猫窝-----------------------------
为两台debia服务器升级内核,发现dpkg不能用,出现下面的警告信息:
dpkg: serious warning: files list file for package `mdetect' missing, assuming package has no files currently installed.
dpkg: serious warning: files list file for package `read-edid' missing, assuming package has no files currently installed.
20953 files and directories currently installed.)
Removing exim4-base ...
debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process
dpkg: error processing exim4-base (--remove):
subprocess post-removal script returned error exit status 1
Removing exim4-config ...
debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process
dpkg: error processing exim4-config (--remove):
subprocess post-removal script returned error exit status 1
Errors were encountered while processing:
exim4-base
exim4-config
E: Sub-process /usr/bin/dpkg returned an error code (1)
ps看,原来是之前使用aptitude出错,一下进程还残留在后台,导致/var/cache/debconf/config.dat被lock住了。将这些进程kill掉即可。
另一台出现了“/var/lib/dpkg/status" 文件语法错误之类的信息,导致dpkg不能正常工作:
dpkg-query: parse error, in file `/var/lib/dpkg/status' near line 2502 package `mdetect':
missing version
google搜了一下,发现status文件是有两个备份文件的,一个是"/var/lib/dpkg/status-old",这是系统更新后的备份文件;另一个是"/var/backups/dpkg.status.0",这个应该是系统安装后的备份文件吧?尝试用备份文件覆盖stataus文件,错误依然。网上也没找到更好的方法了。
在重装系统之前,我尝试手工修改status文件。
打开错误的地方,看到:
Package: mdetect
Status: purge ok installed
Priority: optional
Section: utils
Architecture: i386
这个Package "mdetect" 有5个属性,再看看其它的:
Package: liblzo1
Status: install ok installed
Priority: optional
Section: libs
Installed-Size: 168
Maintainer: Paolo Molaro
Architecture: i386
Source: lzo
Version: 1.08-1.2
Depends: libc6 (>= 2.3.2.ds1-4)
Conflicts: lzop (<= 1.00)
Description: A real-time data compression library
LZO is a portable lossless data compression library written in
ANSI C. It offers pretty fast compression and *very* fast
decompression. Decompression requires no memory.
In addition there are slower compression levels achieving a
quite competitive compression ratio while still decompressing
at this very high speed.
看到一般的package除了之前那5个属性外,还有“Source"、”Version“、”Depends“等属性,问题应该是出在这里。由于不知道这个package(mdetect)的其它信息,所以干脆将这个包的所有信息都删除了。之后发现还有另一个package有相同的问题,也一并删除了。
果然,删除这些包的信息后,dpkg再没有报错了!
下面是upgrade的过程:
设置/etc/apt/source.list:
deb http://debian.cn99.com/debian/ etch main contrib non-free
运行:
apt-get update
apt-get upgrade
apt-get dist-upgrade
apt-get install linux-image-2.6.15-1-686-smp
reboot
升级成功。