runit を使用した upstart/systemd でこのエラーが発生するのはなぜですか?

runit を使用した upstart/systemd でこのエラーが発生するのはなぜですか?

Ubuntu 16.04で実行するsudo apt-get install git-allと、最後に次のようになります

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 (Upstart) Linux カーネル 4.22ターミナルでのみ同じことを行うシステム同じエラーが発生します。

runit でこのエラーが発生するのはなぜですか?

答え1

ゲリット・パペxyr 自身の runit と Bernstein の Debian 用 daemontools パッケージの両方を保守している は、「init システム中立性」というアイデア (Debian systemd 騒動の後で盛んに議論された) を真摯に受け止め、これらを van Smoorenburg init、upstart、systemd で実行できるように懸命に努力した数少ない開発者の 1 人です。

runit のインストール後のメンテナー スクリプトは、 などのパッケージからシステム上に解凍されます/var/lib/dpkg/info/runit.postinst。ご覧のとおり、このスクリプトは upstart の存在を検出し、runsvdirupstart が存在する場合は upstart ジョブを開始しようとします。systemd および についても同様ですrunit.service

残念ながら、Ubuntu 14以降では両方システムそしてupstart がインストールされています。そのため、パッケージのインストール後のメンテナー スクリプトは、upstart のstartコマンドを使用して upstart ジョブを実行しようとします。もちろん、upstart は (デフォルトでは) Ubuntu 15 以降のシステム全体のサービス マネージャーではないため、upstart のstartコマンドは機能しません。

これを克服するためにスクリプトにパッチを適用する方法の大まかな概要は次のとおりです。


test -r /usr/share/debconf/confmodule; の場合
  . /usr/share/debconf/confモジュール
  db_パージ
フィ

test -d /run/systemd/system の場合、
  systemctl start runit.service
elif test -x /sbin/start; 次に
  /sbin/start はvdirを実行します
フィ

これは理想的ではありませんが、始まりに過ぎません。 同様runit.prermに、runit.postrmいくつかの調整も必要です。

参考文献

答え2

この問題の一時的な解決策を見つけることができました。ソース サーバーなどの場所をメイン サーバーからフィンランドまたはエストニアに変更します。これにより、深刻な問題が一時的に解決されます。

関連情報