Powered by Typecho)))
Optimized by EAimTY
从 unstable/testing 进行升级时可能出现 升级, 第 2.3 节 中提到的软件包关联问题。多数情况下,是因为升级的软件包所需的新增的关联包没有安装。可使用如下方法解决:
# aptitude dist-upgrade
如果这招无效,可以重复下面的方法至到问题解决:
# aptitude -f upgrade # 即使遇到错误也继续 upgrade
... 或
# aptitude -f dist-upgrade # 即使遇到错误也继续 dist-upgrade
一些的确存在问题的升级脚本会引起持续出错。最好的解决方法是检查该软件包的安装脚本 /var/lib/dpkg/info/packagename.{post-,pre-}{install,removal} 然后运行:
# dpkg --configure -a # 配置所有安装的软件包
如果脚本报告缺少配置文件,查看一下 /etc 中相关的配置文件。如果配置文件有 .dpkg-new 扩展名(或其它类似的扩展名),去掉(mv)它的扩展名。
从 unstable/testing 进行升级时可能出现软件包关联问题。可用这个方法智取:
# aptitude -f install package # 重载坏关联
还可以用 equivs 包来解决此类问题。参阅 /usr/share/doc/equivs/README.Debian。
3.3.3 使用 dpkg 救助
如果你在使用 APT 的时候遇到死胡同了,那么可以从 Debian 的镜像站点下载软件包并使用 dpkg 来安装。如果你不能访问网络,可以在 /var/cache/apt/archives/ 中找到被缓存的软件包。
# dpkg -i fetchmail_6.2.5-4_i386.deb
如果你用这种方法安装软件包,但是遇到了依赖问题安装失败了,并且你确实需要安装这个软件包。你可以用 dpkg 的 --ignore-depends,--force-depends 和其他参数来安装软件包。dpkg(8) 有更详细的介绍。
3.3.4 恢复软件包选择状态的数据
如果 /var/lib/dpkg/status 因为某种原因坏掉了,Debian 系统将会完全丢失软件包选择状态的数据。赶快到 /var/lib/dpkg/status-old 或 /var/backups/dpkg.status.* 下找找旧的 /var/lib/dpkg/status 文件。
将 /var/backups/ 放在其它的分区是个好习惯,因为该目录包含了许多非常重要的系统数据。
如果旧的 /var/lib/dpkg/status 文件也坏了,仍可以从 /usr/share/doc/ 下的目录进行恢复这些信息。
# ls /usr/share/doc | \
grep -v [A-Z] | \
grep -v '^texmf$' | \
grep -v '^debian$' | \
awk '{print $1 " install"}' | \
dpkg --set-selections
# dselect --expert # 重新安装系统,如果需要的话去除一些选项
3.3.5 /var 崩溃之后如何恢复系统
/var 目录包含着定时更新的数据如 mail,它们很容易遭破坏。将目录放到别的分区可降低风险,如果最坏的事情发生了,可以通过重建 /var 目录来挽救 Debian 系统。
从相同或旧版本的最简 Debian 系统中取得 /var 目录的内容框架,例如 var.tar.gz,然后它放入受损系统的 root 目录,接着
# cd /
# mv var var-old # 如果里面还有其他有用资料的话
# tar xvzf var.tar.gz # 使用 Woody 框架文件
# aptitude # 或是用 dselect
上述步骤可使系统恢复工作。使用 恢复软件包选择状态的数据, 第 3.3.4 节中描述的技术加速软件包选择数据的恢复。([FIXME]:该过程需要更多的实践来检验)
3.3.6 为无法启动的系统安装软件包
使用 Debian 急救软盘 /CD 或从多启动 Linux 系统其它分区启动。将无法启动的系统挂载到 /target 并使用 dpkg 的 chroot 安装模式。
# dpkg --root /target -i packagefile.deb
接下来就可以着手配置并解决问题。
如是只是由于 lilo 损坏而造系统无法启动,可使用标准 Debian 急救盘启动。假设你的 root 分区位于 /dev/hda12 且想使用 runlevel 3,在启动提示符输入:
boot: rescue root=/dev/hda12 3
这样,你就可以使用软盘中内核启动系统,新系统的功能基本齐全。(可能丢失某些内核特性或模块)
3.3.7 如果 dpkg 命令出错怎么办
如果 dpkg 损坏就不能安装任何 .deb 文件。下面的操作可帮助你修复这种状况。(在第一行,你可将“links”替换成你喜欢的浏览器。)
$ links http://http.us.debian.org/debian/pool/main/d/dpkg/
... 下载完好的 dpkg_version_arch.deb
$ su
password: *****
# ar x dpkg_version_arch.deb
# mv data.tar.gz /data.tar.gz
# cd /
# tar xzfv data.tar.gz
对 i386,亦可用 http://packages.debian.org/dpkg 作为 URL。