Zan*_*nna 9 package-management apt dpkg
我遇到了各种包管理问题,这些问题导致 APT 命令失败并输出以以下行结尾:
E: Sub-process /usr/bin/dpkg returned an error code (1)
Run Code Online (Sandbox Code Playgroud)
有时可能会出现其他错误代码,例如100 这意味着 dpkg 不存在,但1它是最常见的错误代码。
不幸的是,这个错误代码几乎没有告诉我究竟是什么导致了错误或者我应该如何解决它。我看到的几乎每个包管理问题,无论其原因或解决方案如何,都会产生相同的错误!
那么,在哪里可以找到输出的有用部分,我可以在线搜索或在 Ask Ubuntu 上提问?
Apt按顺序记录它的操作,就像人类一样。
只需逐行读取输出。
这是一个不恰当的例子。逐行阅读,你会发现它讲述了一个故事:
I am going to build a tower out of five blocks...
Clearing a working surface in the kitchen.
Kitchen: Put 7 dirty dishes from the counter into the dishwasher
Kitchen: Wiped the counter clean
Opening the box of blocks.
Warning: There are only three blocks in the box.
Build: Placed the first block.
Build: Placed the second block.
Build: Placed the third block.
Build: ERROR: Cannot keep building - ran out of blocks.
Closing the box of blocks.
ERROR (summary): Failed to complete the five-block tower.
Run Code Online (Sandbox Code Playgroud)
Apt 和 dpkg 日志记录的工作方式完全相同- 您可以逐行阅读故事。你会看到包管理器开始了它的冒险:准备、运行子任务、遇到非致命问题(警告)、克服逆境等。
大多数输出是例行的,但你需要它来标记 apt 的进度。该上下文是您理解正在发生的事情的方式。这真的是一个故事。
错误 (1) 很常见。这是一个摘要错误代码,表明问题发生在子任务(“一些问题构建”)上。在故事中向后跳到特定子任务发生的位置,您将看到特定的细节(“块用完”)。
在sudo apt updateor sudo apt upgradeor的完整输出中,sudo apt install -f您应该找到一些dpkg关于实际出错的消息。
这些行将开始,dpkg:因为这是返回错误的程序的名称。紧接在这些行之前或之后的输出行通常是最有帮助的。
Setting up install-info (6.4.90.dfsg.1-1build1) ...
/usr/sbin/update-info-dir: 3: /etc/environment: $: not found
dpkg: error processing package install-info (--configure):
subprocess installed post-installation script returned error exit status 127
Run Code Online (Sandbox Code Playgroud)
这意味着安装后脚本无法运行。Shell 使用退出状态 127 来表示“未找到命令”,因此未找到由 post-inst 脚本调用的命令。该行之前的dpkg行给出了原因的提示:/etc/environment文件有问题(应该设置环境变量,如PATH)。
start: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
No apport report written because the error message indicates its a followup error from a previous failure.
dpkg: error processing package runit (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of git-daemon-run:
git-daemon-run depends on runit; however:
Package runit is not configured yet.
Run Code Online (Sandbox Code Playgroud)
上面的错误是由runit包中的一个错误引起的,它希望找到 Upstart 安装,尽管它已经被 systemd 成功作为 Ubuntu 的默认 init 系统。所以,消息failed to connect to Upstart是最好的提示,但我们需要上下文来找出这是如何导致包管理问题的。
Unpacking libjline-java (from .../libjline-java_1.0-1_all.deb) ...
dpkg: error processing /var/cache/apt/archives/libjline-java_1.0-1_all.deb (--unpack):
trying to overwrite '/usr/share/java/jline.jar', which is also in package scala 2.9.2-400
Run Code Online (Sandbox Code Playgroud)
这意味着存在包冲突,可能是由于存储库版本或第三方存储库的混合造成的。
在您看到错误的任何情况下Sub-process /usr/bin/dpkg returned an error code (1),您都需要在上面查找以 开头dpkg:的行以及它们之前和之后的行,以获取有关出错的有用线索。尝试搜索这些特定错误。
如果您在此处或其他支持站点上提出问题,请确保包含您运行的命令和完整输出,而不仅仅是错误消息摘要。
| 归档时间: |
|
| 查看次数: |
3828 次 |
| 最近记录: |