ubuntu-advantage-tools の更新に失敗した場合の対処法

Date: 2021/07/27
Tags: Ubuntu Troubleshooting

WSL2 上の Ubuntu 20.04 (focal) 環境で apt upgrade を実行したら、ubuntu-advantage-tools の更新に失敗した。暫定対処を行ったのでメモとして残す。(2021/07/27 時点)

他のパッケージの更新はできているようなので、対応しなくても良いかもしれない。

エラー発生

apt upgrade でパッケージを更新しようとしたら、以下のエラーが出力され、 ubuntu-advantage-tools の更新ができていなかった。
ubuntu-advantage-tools は Ubuntu の有償サポート(ESM: Extended Security maintenance など)を受けるためのツールらしい。

...
Setting up ubuntu-advantage-tools (27.2.1~20.04.1) ...
ERROR: File not found '/run/cloud-init/instance-data.json'. Provide a path to instance data json file using --instance-data
dpkg: error processing package ubuntu-advantage-tools (--configure):
 installed ubuntu-advantage-tools package post-installation script subprocess returned error exit status 1
Errors were encountered while processing:
 ubuntu-advantage-tools
E: Sub-process /usr/bin/dpkg returned an error code (1)

対処方法

調べてみると、他の方も同様の事象が発生しているようで、バグ報告が挙げられていた。 ログの出力内容もほぼ同じであった。

[Bug 1938097] [NEW] ubuntu-advantage-tools upgrade fails configure

スレッドをたどると、2 つの暫定対処方法が記載されていた。

1. ubuntu-advantage-tools の post-installation script を修正する

[Bug 1938097] Re: ubuntu-advantage-tools upgrade fails configure

インストール後に実行されるスクリプトの内部処理として、暫定対処としてスクリプトを修正する。

sudo vi /var/lib/dpkg/info/ubuntu-advantage-tools.postinst

修正内容は以下。295 行目の以下の箇所を修正する。 cloud-id の実行に失敗してしまった場合に、エラー内容がそのまま cloud_id に設定されてしまうため、問題が発生してしまっていた。 暫定対処として、以下のように修正する。

 cloud_id=""
     if command -v "cloud-id" > /dev/null ; then
-      cloud_id=$(cloud-id)
+      cloud_id=$(cloud-id || true)
     fi

dpkg コマンドでパッケージの設定を再度行う。

dpkg--configure -a

実行してみると、エラー文は出力されたままであるが、post-installation script の処理は完了した模様。 apt upgrade も正常終了している。

❯ sudo vi /var/lib/dpkg/info/ubuntu-advantage-tools.postinst
❯ sudo dpkg --configure -a
Setting up ubuntu-advantage-tools (27.2.1~20.04.1) ...
ERROR: File not found '/run/cloud-init/instance-data.json'. Provide a path to instance data json file using --instance-data

❯ sudo apt upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

以下のエラー文にある、 instance-data.json が存在していないことも原因の1つであると思われる。Proxmox VE で起動している Ubuntu VM ではファイルが存在していたため、自分の環境(WSL2)が望ましくない状況になっているかもしれない。

ERROR: File not found '/run/cloud-init/instance-data.json'.

2. cloud-init をアンインストールする

[Bug 1938097] Re: ubuntu-advantage-tools upgrade fails configure

cloud-id の実行に失敗して問題が発生しているため、 cloud-init をアンインストールすることで、 cloud-id 自体を実行できないようにし、問題の箇所に処理が進まないようにする。 cloud-init を使用していない場合はこちらの方法が良さそう。

sudo apt remove cloud-init