ubuntu-advantage-tools の更新に失敗した場合の対処法
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