有償サポートの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設定を見てみたら…という感じだった。
思い込みと決めつけは良くない。