还没有升级到 dpkg_1.13.9 的朋友,建议看完一下下面链接中的东西,在确定这些是你需要的之后再升级,以免带来不必要的麻烦。 http://lists.debian.org/debian-deve...6/msg00010.html
已经升级到 1.13.9 的朋友,如果想降级,那就接着看下去吧。 出于懒惰,在 dpkg 升级后我懒得修改一些 debian/rules 中的脚本,我选择了降级 dpkg 来处理这个问题。 在 dpkg -i dpkg_1.10.X 的时候出现了 divert 的问题 代码: 正在覆盖"/usr/share/man/man1/md5sum.1.gz",该文件是文件"/usr/share/man/man1/md5sum.textutils.1.gz"的转移版本(diverted version) dpkg-deb: 子进程 paste 被信号(断开的管道)终止了 我不加思考直接用了 --force-overwrite-diverted ,结果... 完蛋了,dpkg 罢工了 代码: #dpkg -l #dpkg: configuration error: unknown option log: Success 开 xchat 上 irc 求救,在 debian-zh 上遇到 minghua。经过提示决定用 dpkg 的 --root 参数,chroot,dpkg-divert 一起解决这个问题。当然前提是有另外一个可用的系统,还好我还有 ubuntu。 重启机器进入 ubuntu,chroot 挂上 debian 的 / (下文用 CHROOT 代表 debian 根目录挂载的位置)。 由于 divert 出了问题,所以我先列出系统中的 divert 发现 local 中就有产生冲突的2个文件,决定删之 代码: #sudo dpkg-divert --admindir=CHROOT/var/lib/dpkg --local --remove /usr/share/man/man1/md5sum.textutils.1.gz 另外一个如法炮制. 提示成功之后 代码: #sudo dpkg -i --root=CHROOT/ dpkg_XXX.deb 如果没有返回错误信息,那就重启吧,你的 debian 获得重生了。 总结 --force 这个东西还是不要乱用,太容易出问题了。 如果 dpkg 还可以使用的话,应该不需要从另外一个系统里面 chroot 过来。 处理掉 divert 之后就应该能安装老版本的 dpkg 了。 最后建议用 sid 的用户,订阅 debian-devel-announce 吧,升级前看看。

