為什麼 upstart/systemd 和 runit 會出現這個錯誤?

為什麼 upstart/systemd 和 runit 會出現這個錯誤?

sudo apt-get install git-all在Ubuntu 16.04中運行,最後看到以下內容

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
dpkg: dependency problems prevent configuration of git-daemon-run:
 git-daemon-run depends on runit; however:
  Package runit is not configured yet.

dpkg: error processing package git-daemon-run (--configure):
 dependency problems - leaving unconfigured
No apport report written because the error message indicates its a followup error from a previous failure.
                      Errors were encountered while processing:
 runit
 git-daemon-run
E: Sub-process /usr/bin/dpkg returned an error code (1)

重新啟動系統後我也收到此錯誤。它確實阻塞了我的整個系統。我跑killall update-notifier。我運行sudo apt-get install git-all但收到相同的錯誤訊息。我運行pgrep -a apt但沒有得到任何輸出。我運行pgrep -a update但沒有得到任何輸出。有關該案例的錯誤報告這裡

  • 在 Grub 中,選擇進階選項>Ubuntu(新貴)Linux 核心 4.22。僅在終端機中執行相同操作,無需系統導致同樣的錯誤。

為什麼 runit 會出現這個錯誤?

答案1

格里特·佩普為 Debian 維護 xyr 自己的 runit 和 Bernstein 的 daemontools 軟體包,他是為數不多的真正將「init-system中立性」理念(在 Debian systemd 之後廣為流傳)的開發人員之一。init、 upstart 和systemd 下運行這些。

您會發現 runit 的安裝後維護程式腳本從軟體包中的某個位置解壓縮到您的系統上,例如/var/lib/dpkg/info/runit.postinst.如您所看到的,它會嘗試偵測 upstart 的存在,並runsvdir在存在 upstart 的情況下啟動 upstart 作業。它對 systemd 和 執行相同的操作runit.service

不幸的是,在 Ubuntu 14 及更高版本上兩個都系統暴發戶已安裝。因此,該套件的安裝後維護者腳本嘗試使用 upstart 的start命令執行 upstart 作業。當然,upstart 並不是(預設)Ubuntu 15 及更高版本中系統範圍的服務管理器,且 upstart 的start命令無法運作。

以下是如何修補腳本以克服此問題的粗略想法:

……
如果測試 -r /usr/share/debconf/confmodule;然後
  。 /usr/share/debconf/confmodule
  資料庫清除

如果測試 -d /run/systemd/system ;然後
  systemctl 啟動 runit.service
elif 測試 -x /sbin/start ;然後
  /sbin/start 運行vdir

這並不理想,但這是一個開始。 runit.prerm同樣runit.postrm需要一些調整。

進一步閱讀

答案2

我設法找到了解決問題的臨時方法。將來源伺服器等的位置從主伺服器更改為芬蘭或愛沙尼亞。它暫時解決了這個嚴重的問題。

相關內容