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。
dpkg – Debian 包安装工具
apt-get – APT 的命令行前端
aptitude – APT 的高级的字符和命令行前端
synaptic – 图形界面的 APT 前端
dselect – 使用菜单界面的包管理工具
tasksel – Task 安装工具
这些工具不是用来取代对方的,比如 dselect 同时使用 APT 和 dpkg。
APT 使用 /var/lib/apt/lists/* 来跟踪可用的软件包,而 dpkg 使用的是 /var/lib/dpkg/available。如果你使用了 aptitude 或者其他 APT 前端来安装软件包,同时你希望使用 dselect 来安装软件包,请不要忘记使用 dselect 菜单上的 [U]pdate (或者运行"dselect update") 来更新 /var/lib/dpkg/available。
在处理依赖关系上 apt-get 会自动下载安装依赖的软件包,但是不会处理所安装软件推荐的或者建议的软件包。
相反 aptitude 可以设置成安装所安装软件推荐的或者建议的软件包。
dselect 给使用者列出所安装软件推荐或建议的软件包,可以进行单独选择。
3.1.2 方便的工具
dpkg-reconfigure - 重新配置已安装的软件包
(如果它是使用 debconf 进行配置的)
dpkg-source - 管理源码包
dpkg-buildpackage - 自动生成包文件
apt-cache - 在本地缓冲区检查包文件