web-dev-qa-db-ja.com

アップグレードの失敗-dpkgが「開始点字デバイスサポート」でハングする

14.10-> 15.04-> 15.10からのアップグレードをひどく台無しにしました。私は回復モードをいじっていて、壊れたパッケージ/依存関係をすべて削除して再インストールすることができたと確信していますが、今はこの奇妙な問題に直面しています。 Aptitudeは実行されません。dpkgで何かをする必要があると書かれています。 dpkgは何でもしますが、常にハングアップします

Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)
Error getting authority: Error initializing authority: Could not connect: No such file or directory (g-io-error-quark, 1)
[  OK  ] Started Braille Device Support.

この点字ハングは私をしばらく悩ませてきましたが、ついに行き詰まりました。エラーを含む最初の部分は、ハードドライブのねじ込みに関連する不明瞭なエラーのようです。ログを掘り下げた後、このHDのWindowsパーティションを指しているように見えますが、これは問題ありません。それは行き止まりのように思え、オンラインで他に何かを見つけることができません。

バックアップ、再フォーマット、再インストールの必要はありません。誰かがリードを持っていますか?

7
neph

パッケージの特定のサブセット(つまりapport)が同じdpkg --configure -aメッセージでStarted Braille Device Support.にぶら下がっている、アップグレードアップグレードとその後のリカバリモードでの混乱で同様の状況に陥りました。これを実現させたハックは次のとおりです。

  1. 現在、ハングしたapt-getコマンドを見つめている場合は、を押します Ctrl+C 止まる。それがうまくいかない場合(私にとってはそうだった)、を押す Ctrl+Z、その後kill -9 %1を数回実行して、完全に終了します。次に、rm /var/lib/dpkg/lockを実行します。これは、通常それを行うプロセスを殺したためです。
  2. screenを実行します(複数のプロンプトを取得するため)。
  3. 押す Ctrl+A その後 c 別のプロンプトを開きます。
  4. dpkg --configure -aを実行し、プロセスがハングするのを待ちます。
  5. 押す Ctrl+A その後 a 他のプロンプトに切り替えるには。
  6. killall systemctlを実行します
  7. 押す Ctrl+A その後 a dpkg --configure -aコマンドに戻るには。
  8. 最後のパッケージの構成が完了し、dpkgが次のパッケージに移動し、同じ方法でハングするか、完了したことに注意してください。
  9. dpkgが再びハングする場合は、手順5に進みます。
  10. dpkg --configure -aが最後に完了したら、システムが再起動可能な状態になるまで、おそらくapt-get upgradeを実行して、復旧モードでいじくりましょう。

(少なくとも私にとって)これが機能した理由については、私のデバッグプロセスは次のとおりでした。

  1. apt-get upgradeがハングしていました。を実行する Ctrl+Z 上記のkill -9 %1でプロンプトに戻ります。
  2. dpkg --configure -aを実行し、Started Braille Device Support.と同じapt-get upgradeメッセージでハングすることを確認します。しかしながら、 Ctrl+C 今回はプロンプトに戻ります。
  3. 「ubuntuが点字デバイスのサポートを開始しました」を検索します。これから debianアクセシビリティページbrlttyに関係していることを確認してください。
  4. apt-get remove brlttyを実行すると、問題がなくなる可能性があります。
  5. dpkg --configure -aを再実行し、stillがハングすることに注意してください。ただし、今回はStarted Braille Device Supportに関するメッセージはありません。 OK。
  6. strace dpkg --configure -aを実行し、サブプロセスのwait4(...)呼び出しでプロセスがスタックしていることを確認します。
  7. 数行上方向に、プロセスがファイル/var/lib/dpkg/info/apport.postinst(または同様の何か、IIRC)を書き込むことに注意してください。
  8. less上記のファイルで、ブートサービスを再起動しようとしていることがわかります。回復モードであり、initシステムが完了まで実行されていないので、それは厄介なことになります。
  9. pstreeを実行し、dpkg --reconfigure -aが実際にbashに分岐したことを確認します。その後、Perlに分岐し、最後にブートサービスを再起動するsystemctlに分岐します。 、混乱する可能性があります。
  10. postinstスクリプトにはset -eが含まれていないことに注意してください。そのため、その中のhungコマンドを強制終了できます。そのため、シェルスクリプトは終了し、dpkgに進みます。
  11. 別の画面を開き、プロンプトを実行し、killall systemctlを実行し、元に戻して、dpkgが実際に移動したことを確認します。すばらしいです。しかし、別のパッケージの同じ場所に再び詰まっています。
  12. dpkgが終了するまで、killall systemctlを再度実行します。
  13. apt-get dist-upgradeを再度実行し、すべてが最新であると表示されることを確認します。
  14. 私の指を交差させ、再起動します。

奇跡的に、システムは回復し、今のところ問題はありません。

したがって、完全な削減ではありません(なぜsystemctlが回復モードでハングするのでしょうか?)、また一般的に適用される可能性はありませんが、このハックとそれを発見するプロセスは、私が行ったようにWeb検索を通じてこのページに到達する誰かを助けるかもしれません。

9
Steven Ruppert

コマンド 'screen'を使用できない場合の以前の回答の改善:

dpkg --configure -a & (sleep 2m; killall systemctl)

スリープ時間を最小時間間隔に変更してから、dpkgがスタックすることが確実になります。 (私の場合、実際、私は10秒を使用しました)。私のために働いた!

4
Jameeyo

15.10を16.04にアップグレードしようとしたときにこの問題が発生し、以下の手順を使用して修正しました。

  1. を押してコマンドラインで起動します E 編集する最初のエントリを強調表示するとき。

  2. linux行の終わりまでカーソル。 quiet splash vt.handoff=7を削除し、singleを追加します。

  3. 押す Ctrl+X 起動します。

  4. screenを実行します(複数のプロンプトを取得するため)。

  5. 押す Ctrl+A その後 C 別のプロンプトを開きます。

  6. dpkg --configure -aを実行し、完了するまで待ちます。

  7. リブート

3
vicky

私はほとんどを押してプロセスを実行することができました Ctrl+Z 現在のプロセスを一時停止してバックグラウンドに送信し、続いて入力します

killall systemctl

すべてのsystemctlプロセスを終了するシェルに

fg

一時停止したプロセスをフォアグラウンドで再度続行します。

2
Mekk