我正在使用 Ubuntu 15.04。每当我尝试安装任何软件包时,标题中都会出现错误消息。我该如何摆脱这个烦人的错误消息?
:~$ uname -a
Linux LongerVision001 3.19.0-25-generic #26-Ubuntu SMP Fri Jul 24 21:17:31 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 15.04
Release: 15.04
Codename: vivid
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Setting up runit (2.1.2-3ubuntu1) ...
start: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
dpkg: error processing package runit (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
runit
E: Sub-process /usr/bin/dpkg returned an error code (1)
答案1
我遇到了同样的错误。阅读错误消息,似乎runit
安装脚本upstart
在某一时刻需要,但我的系统(我怀疑你的系统也是如此)正在运行systemd
。值得注意的是,我有另一台机器不是在安装过程中出现此错误;唯一的实质性区别是出错的机器是从 14.10 升级而来的,而“刚刚正常工作”的机器是全新安装的。
由于 Vivid 不是 LTS,我认为可以编辑安装后的 dpkg 文件以使其恢复正常。(此技巧也适用于 LTS 安装,但希望不会出现问题)。
当 dpkg 出现错误时
Setting up runit (2.1.2-3ubuntu1) ...
start: Unable to connect to Upstart: Failed to connect to socket /com/ubuntu/upstart: Connection refused
dpkg: error processing package runit (--configure):
subprocess installed post-installation script returned error exit status 1
Processing triggers for ureadahead (0.100.0-19) ...
Errors were encountered while processing:
runit
E: Sub-process /usr/bin/dpkg returned an error code (1)
它将使 runit 包处于半安装状态。您应该runit.postinst
在 中找到一个文件/var/lib/dpkg/info/
。此文件作为 runit 包的安装后详细信息的一部分执行(主要用于在安装后立即启动 runit,而不是等到下次系统启动)。错误是脚本似乎忘记了systemd
/的独占性质upstart
。由于您显然没有运行upstart
,请注释掉相关行(目前,我的安装中是第 58 至 60 行)。
前:
if [ -x /sbin/start ]; then #provided by upstart
/sbin/start runsvdir
fi
后:
#if [ -x /sbin/start ]; then #provided by upstart
# /sbin/start runsvdir
#fi
当你保存了更改后,你可以告诉 apt 从上次停止的地方完成操作,然后就可以开始了:
$ sudo apt-get install -f
答案2
只要清除新贵,它无论如何都已经坏了。
UPD:runit 似乎与 ubuntu 上的 systemd 不兼容,重启后可能会出现意外,runit 会失败并提示它不是 pid 1:
- runit: fatal: must be run as process no 1.
因此,另一种方法是切换到 upstart:
sudo aptitude install upstart-sysv
sudo update-initramfs -u
sudo reboot