无法连接到套接字 /com/ubuntu/upstart:连接被拒绝:处理时遇到错误:runit

Pei*_*JIA 13 dpkg upstart 15.04 runit

我正在使用 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
Run Code Online (Sandbox Code Playgroud)
:~$ 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
Run Code Online (Sandbox Code Playgroud)
:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 15.04
Release:        15.04
Codename:       vivid
Run Code Online (Sandbox Code Playgroud)

小智 18

我遇到了同样的错误。阅读错误消息,似乎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)
Run Code Online (Sandbox Code Playgroud)

它将使 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
Run Code Online (Sandbox Code Playgroud)

后:

#if [ -x /sbin/start ]; then #provided by upstart
#  /sbin/start runsvdir
#fi
Run Code Online (Sandbox Code Playgroud)

保存该更改后,您可以告诉 apt 在停止的地方完成,然后就可以开始了:

$ sudo apt-get install -f

  • 这个答案比帖子中重复的答案更容易理解。 (3认同)

小智 5

只是清除暴发户,反正它坏了。

UPD:runit 似乎与 ubuntu 上的 systemd 不兼容,重启后可能会令人惊讶,runit 只会失败,说它不是 pid 1:

- runit: fatal: must be run as process no 1.
Run Code Online (Sandbox Code Playgroud)

所以另一种方法是切换到新贵:

sudo aptitude install upstart-sysv
sudo update-initramfs -u
sudo reboot
Run Code Online (Sandbox Code Playgroud)