ぶていのログでぶログ

思い出したが吉日

Ubuntuでlivepatchが有効化できない / error: cannot install "canonical-livepatch"が出たときの対処

有償サポートのUbuntu Advantage(以下UA)に契約するといくつかの機能が使えるようになる。 例えば、セキュリティアップデートが5年伸びるExtended Security Maintenance(ESM)再起動せずにカーネルのパッチを当てられるLivepatchがある。 UAを契約するとトークンがもらえるので、それを使って以下のコマンドを実行する有効化できる。

$ sudo ua attach <token>

通常であればこのコマンドで問題なくESMもLivepatchも有効になるはずだったのが、ある日以下のようなエラーを吐いてLivepatchが有効にならなかった。。

Stderr: error: cannot install "canonical-livepatch": Post
       https://api.snapcraft.io/v2/snaps/refresh: Forbidden

原因: snapdに意図しないProxy設定が入っていた

当初は関係ないだろうと思って Error: Get snap under proxy configuration - snapd - snapcraft.io のようなサイトをスルーしていたが、念の為と確認したらビンゴだった…。

$ sudo snap get system proxy
Key          Value
proxy.http   http://***:8000/
proxy.https  http://***:8000/

どうもMAASを使ってセットアップした関係か意図せずProxy設定が入ってしまったようだ…。 以下のコマンドを実行しProxy設定を削除し、再度 sudo ua attach したら有効化された。

$ sudo snap unset system proxy.http
$ sudo snap unset system proxy.https
$ sudo snap get system proxy
Key  Value

おまけ: 原因に気がついた経緯

当初はsnapcraft.ioのサイトがダウンしているのでは?っと思っていたのだが、数日経っても変わらなかったので本格的に調査した感じだった。 色々調べていると snap debug connectivity を実行するとデバッグ情報が取れるということを知った。

$ sudo snap debug connectivity
Connectivity status:
 * api.snapcraft.io: unreachable
error: 1 servers unreachable

んで、api.snapcraft.ioにpingを打ったところ正常に返ってくることがわかった。

$ ping api.snapcraft.io
PING api.snapcraft.io (185.125.188.58) 56(84) bytes of data.
64 bytes from 185.125.188.58: icmp_seq=1 ttl=49 time=231 ms
64 bytes from 185.125.188.58: icmp_seq=2 ttl=49 time=232 ms
64 bytes from 185.125.188.58: icmp_seq=3 ttl=49 time=231 ms
^C
--- api.snapcraft.io ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 231.465/231.689/232.091/0.624 ms

ネットワーク経路上の問題はなさそうなので、あとはsnapd自体の問題だろうなっと思い、前述のサイトを見てProxy設定を見てみたら…という感じだった。

思い込みと決めつけは良くない。