Mon 28 Apr 2008

Sub-Process /usr/bin/dpkg returned an error code (1)

一、 发现deb包依赖关系错误:

border@b0rder:~$  sudo apt-get install -f
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
读取状态信息... 完成
已经不需要下列自动安装的软件包:
  liberror-perl libdigest-sha1-perl
使用 'apt-get autoremove' 来删除它们。
共升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件未被升级。
有 6 个软件包没有被完全安装或卸载。
操作完成后,会消耗掉 0B 的额外磁盘空间。
正在设置 flex (2.5.34-2.1) ...
install-info:不能识别的选项“--description=A fast scanner generator”
        试用“install-info --help”以获得选项的完整列表。
dpkg:处理 flex (--configure)时出错:
 子进程 post-installation script 返回了错误号 1
正在设置 cvs (1:1.12.13-9) ...
install-info: 没有指定目录文件;试用 --help 以获得更多信息。
dpkg:处理 cvs (--configure)时出错:
 子进程 post-installation script 返回了错误号 1
正在设置 libidn11-dev (1.1-1) ...
install-info: 没有指定目录文件;试用 --help 以获得更多信息。
dpkg:处理 libidn11-dev (--configure)时出错:
 子进程 post-installation script 返回了错误号 1
正在设置 comerr-dev (2.1-1.40.8-2ubuntu2) ...
install-info: 没有指定目录文件;试用 --help 以获得更多信息。
dpkg:处理 comerr-dev (--configure)时出错:
 子进程 post-installation script 返回了错误号 1
dpkg:依赖关系问题使得 libkrb5-dev 的配置工作不能继续:
 libkrb5-dev 依赖于 comerr-dev;然而:
  软件包 comerr-dev 还没有被配置。
dpkg:处理 libkrb5-dev (--configure)时出错:
 依赖关系问题 - 仍未被配置
dpkg:依赖关系问题使得 libcurl4-gnutls-dev 的配置工作不能继续:
 libcurl4-gnutls-dev 依赖于 libidn11-dev;然而:
  软件包 libidn11-dev 还没有被配置。
 libcurl4-gnutls-dev 依赖于 libkrb5-dev | hurd;然而:
  软件包 libkrb5-dev 还没有被配置。
  未曾安装软件包“hurd”。
dpkg:处理 libcurl4-gnutls-dev (--configure)时出错:
 依赖关系问题 - 仍未被配置
在处理时有错误发生:
 flex
 cvs
 libidn11-dev
 comerr-dev
 libkrb5-dev
 libcurl4-gnutls-dev
E: Sub-process /usr/bin/dpkg returned an error code (1)

二、 删除已经安装错误包的文件:

通过dpkg -L 来查看已经安装的文件, 已flex为例:

border@b0rder:~$ dpkg -L flex
/.
/usr
/usr/bin
/usr/bin/flex
/usr/lib
/usr/lib/libfl.a
/usr/lib/libfl_pic.a
/usr/lib/libfl.so
/usr/share
/usr/share/info
/usr/share/info/flex.info-2.gz
/usr/share/info/flex.info.gz
/usr/share/info/flex.info-1.gz
/usr/share/man
/usr/share/man/man1
/usr/share/man/man1/flex.1.gz
/usr/share/doc
/usr/share/doc/flex
/usr/share/doc/flex/NEWS.Debian.gz
/usr/share/doc/flex/NEWS.gz
/usr/share/doc/flex/changelog.Debian.gz
/usr/share/doc/flex/copyright
/usr/share/doc/flex/README.gz
/usr/share/doc/flex/README.Debian.gz
/usr/share/lintian
/usr/share/lintian/overrides
/usr/share/lintian/overrides/flex
/usr/include
/usr/include/FlexLexer.h
/usr/bin/flex++
/usr/bin/lex
/usr/lib/libl.a
/usr/share/man/man1/lex.1.gz
/usr/share/man/man1/flex++.1.gz
/usr/share/doc/flex/changelog.gz

把要删除的文件导入文件中,做成删除脚步:

border@b0rder:~$ dpkg -L flex > flex
 通过vim 在每一行前加 "rm "
border@b0rder:~$ chmod a+x flex
border@b0rder:~$ sudo ./flex

三、 删除dpkg info 信息:

border@b0rder:~$ cd /var/lib/dpkg/info
border@b0rder:/var/lib/dpkg/info$ sudo rm flex.*

四、 卸载flex:

border@b0rder:/var/lib/dpkg/info$ sudo apt-get remove flex

五、再执行 sudo apt-get install -f,flex依赖问题解决。其他的一览关系参考二,三,四 步。

六、参考

-- EOF --

链接:

Tags: ubuntu, dpkg

进来Spamer太多,暂时关闭留言,如果有什么问题可以邮件联系。
borderj # gmail.com (Gtalk)
http://www.b0rder.com