apt /無人アップグレードが停止する


13

ときにunattended-upgradesインストールされている、10のうち9シャットダウン/再起動後は、「無人アップグレードのシャットダウンを開始」しながら、ハングアップします。このハングにより、シャットダウンプロセスが5〜10分間停止します。

で無人アップグレードを無効にする/etc/apt/apt.conf.d/20auto-upgrades and/or 50unattended-upgradesと、問題が発生します。

シャットダウン/リブート(sudo service unattended-upgrades stop)の前にサービスを終了すると、問題は引き続き発生します。

パッケージを削除すると(sudo apt remove unattended-upgrades)問題は発生しなくなります。

これは、新しくインストールされたバージョンUbuntu Server 16.04.1unattended-upgradesインストールGUIまたは無人アップグレードの手動インストールの両方でインストール)で発生します

両方ともKern.log & syslogシャットダウンプロセスを表示しません(ファイルシステムが既にアンマウントされているためだと思います)

他の誰かがこの問題を発見または修正しましたか?それをトラブルシューティングしようとしてクレイジーになります。


16.04.1テストVMで再現できません。ここでシャットダウンは遅延しません。
-user535733

それはハードウェアベースですか?unattended-upgradesシャットダウン中に何が起こるか完全にはわかりません。
garullon245136

シャットダウン時にuuが常に実行されているのはなぜかと思っています。uuはデーモンではありません。これは、1日に1回短時間実行されてから終了するスクリプトにすぎません。
ユーザー535733

すべてのファイルシステムがマウント解除されている段階で、シャットダウンプロセスがuuを実行しようとするようです。すべてのリンクを削除しましたが、プロセスはシャットダウン中も実行されます。
garullon245136

1
/etc/apt/apt/conf.d/50unattended-upgradesで「シャットダウン時にuuを実行」オプションを探します(25行目付近)。「false」またはコメント化されていることを確認してください。
user535733

回答:


14

根本原因に近づくために見回す

問題は、シャットダウン時に実行されるスクリプトにあるようです。

対応するファイルを次のように識別しました:

find /etc/systemd -name *unattended*

それは私に関連するsystemdスクリプトを与えました:

/etc/systemd/system/shutdown.target.wants/unattended-upgrades.service

次に、シャットダウン時に実行されるスクリプトを教えてくれました。

/usr/share/unattended-upgrades/unattended-upgrade-shutdown

根本原因を見つけるためにさらに調査する

このスクリプトには、/ etc / apt / apt.conf.d / 50unattended-upgradesのセクションに関連する120行目のセクションがあります-> Unattended-Upgrade :: InstallOnShutdown

/ usr / share / unattended-upgrades / unattended-upgrade-shutdownの120行目:

if apt_pkg.config.find_b("Unattended-Upgrade::InstallOnShutdown", False):

問題:キーワード "False"が必要ですが、apt confでは "false"(正確な文字列比較)を追加する必要があります!

解決

私は3つの異なる方法でストールシャットダウンを修正/回避することができました:

回避策A

  • /etc/apt/apt.conf.d/50unattended-upgradesに「false」ではなく「False」と記述します

ここで変更するファイルは無人アップグレードの更新によって上書きされないため、この設定は実際の修正が提供されるまでアップグレードしても安全です。問題:根本的な原因が修正されると、停止が再び停止するため、これを回避策Bと組み合わせることをお勧めします。

または:回避策B

  • /etc/systemd/system/shutdown.target.wants/unattended-upgrades.serviceの待機時間をデフォルトから15秒に減らします。

vim /etc/systemd/system/shutdown.target.wants/unattended-upgrades.service

[サービス]
タイプ=ワンショット
ExecStart = / usr / share / unattended-upgrades / unattended-upgrade-shutdown
TimeoutStartSec = 15

ここで変更するファイルは、無人アップグレードの更新によって上書きされる可能性があるため、この設定はアップグレードしても安全ではありません。これに加えて、何かを修正することからはほど遠いですが、システムがシャットダウンするときに数分待たないようにします。無人アップグレードのアップグレード後に、これを再度設定する必要がある場合があることに注意してください!

または:Cを修正します(アップストリームに報告する必要があります)

  • 「False」ではなく「false」を期待するように/ usr / share / unattended-upgrades / unattended-upgrades-shutdownを修正

/ usr / share / unattended-upgrades / unattended-upgrade-shutdownのパッチ:

--- / tmp / unattended-upgrade-shutdown 2017-02-03 14:53:03.238103238 +0100
+++ / tmp / unattended-upgrade-shutdown_fix 2017-02-03 14:53:17.685589001 +0100
@@ -117,7 +117,7 @@
     # それを実行します
     p =なし
     apt_pkg.init_config()
-apt_pkg.config.find_b( "Unattended-Upgrade :: InstallOnShutdown"、False)の場合:
+ if apt_pkg.config.find_b( "Unattended-Upgrade :: InstallOnShutdown"、false):
         env = copy.copy(os.environ)
         env ["UNATTENDED_UPGRADES_FORCE_INSTALL_ON_SHUTDOWN"] = "1"
         logging.debug( "シャットダウンモードでの無人アップグレードの開始")

結論

tbh最後の1つだけが本当の修正です。他の両方のオプションは、実際の修正が実装されるまでの単なる回避策です。

これはアップストリームで行う必要があり、これは両方のディストリビューションのDebian(Debian Stretchでテスト済み)とUbuntu(Ubuntu 16.04.1でテスト済み)の両方に影響するためです。

ここでバグレポートを開きました:https : //bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/1661611


2
apt_pkg.config.find_b()は、文字列ではなくブール値を返します。「find_b(key [、default = False])→boolキーに保存されているブール値、または要求されたオプションが設定されていない場合はboolオブジェクトのデフォルトで指定された値を返します。」 apt.alioth.debian.org/python-apt-doc/library/… したがって、Falseのチェックが正しいため、unattended-upgrade-shutdownのバグではありません。
ブライアンマレー

上記のLaunchpadバグレポートリンクをたどる人なら誰でもわかるように、この問題は実際には文字列比較の失敗によるものではなく、代わりに現在修正されたsystemdシーケンスバグによるものです。
サンパブロクパー

1

回避策として、このスクリプトを使用して修正します。

#!/usr/bin/env bash

sed -i '/if apt_pkg.config.find_b/s/False/false/' /usr/share/unattended-upgrades/unattended-upgrade-shutdown

exit

うまくいけば、すぐにアップストリームになります。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.