[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

对 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: