对 dpkg 进行降级
还没有升级到 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 吧,升级前看看。
Reply to: