ubuntuにこんなポップアップが来ました。
正確にはsnapdがパッケージを勝手にupdateしようとする…です。
lxdがUpdateする前に止めておいてねという旨のメッセージですが、snapが勝手に動いて何かやるんでしょうか?
もしかして数年前にlxdをsnap版にしたのもsnapのこういう処理が動いたからなのか。
ubuntuのLXDが勝手にsnap版LXDになって起動できなくなった - paloma blog
ということで少し動きについて調べました。
snapとは
Canonical社製のパッケージマネージャですが、ディストリビューション問わずインストールできるようです。
依存ライブラリごとパッケージ化されているらしい。
ディストリビューション毎にパッケージマネージャが違ってコマンドも異なるのでこういう共通化できるツールがあるといいかもしれませんね。
言うほど違うOSを同時で運用するか?とは思いますが。
snapcraftというツールで自作のパッケージ作成、アップロード等もできるとのこと。
意識してインストール舌記憶はありませんが、20.04にUpdateしたとき一緒に付いてきたんでしょうか。
get start系ドキュメントのubuntuバージョンでよく出てくるのでaptから代替されるパッケージマネージャかなのイメージで使ってました。
デフォルトの仕様
snapcraftの方に仕様が書いてありました。
- インストールしたパッケージは自動Update
- daemonは日に4回Updateの有無を確認する
- Update関係はrefreshコマンドで確認
いきなり自動アップデートの文言が書いてあります。
ドキュメントにもセキュアがどうのとあるので、そういうツールということですね。
コマンドを使ってみます。
- refresh間隔のチェック
masashi@PC-ubuntu:~$ sudo snap refresh --time timer: 00:00~24:00/4 last: today at 21:49 JST next: tomorrow at 02:48 JST
デフォルトの日に4回は結構なペースですね。
- パッケージの状態
masashi@PC-ubuntu:~$ sudo snap refresh --list
All snaps up to date.
これは今はないよということでしょうか。
Updateのコントロール
公式だと自動アップデートを停止出来るような文章は書いていなくて、以下の4つのコントロール方法があるようです。
- refreshの更新タイミング、頻度
- 次回のrefresh確認までの遅延時間
- ネットワーク帯域の計測による更新の停止
- 保管するパッケージの世代数の変更
一応インストールするバージョンを固定しておけば自動アップデートは行われないようです。
厳密にはバージョンに該当するアップデートは提供されますが、通常はセキュリティパッチなので機能やバージョン変更は無いそうです。
私の例はホームサーバなので常に最新版でもそんなに問題ありませんが、商用で使うとしたらバージョン固定しとかないと困りますからね。
とりあえずlxdのUpdate
ubuntu及びコンテナは常時動かしているのでいきなり使えなくなると困ります。 使ってるコンテナはイメージもデータもバックアップがあるので正直なんとかなりますが、アップデートを覚えているうちにやってしまいます。
infoでパッケージの情報がバーっと出てきます。
今は5.3がインストール済み。
masashi@PC-ubuntu:~$ sudo snap info lxd name: lxd summary: LXD - container and VM manager publisher: Canonical✓ store-url: https://snapcraft.io/lxd contact: https://github.com/lxc/lxd/issues license: unset description: | ・・・(略) services: lxd.activate: oneshot, enabled, inactive lxd.daemon: simple, enabled, active lxd.user-daemon: simple, enabled, inactive snap-id: J60k4JY0HppjwOjW8dZdYc8obXKxujRu tracking: latest/stable refresh-date: 10 days ago, at 10:01 JST channels: latest/stable: 5.4-82d05d6 2022-07-27 (23339) 107MB - latest/candidate: 5.4-022a3ee 2022-07-26 (23356) 107MB - latest/beta: ↑ latest/edge: git-3ef9250 2022-07-22 (23338) 107MB - 5.3/stable: 5.3-91e042b 2022-07-06 (23270) 107MB - 5.3/candidate: 5.3-b403e7f 2022-07-05 (23282) 107MB - 5.3/beta: ↑ ・・・(略) 3.0/beta: ↑ 3.0/edge: git-81b81b9 2019-10-10 (11362) 55MB - installed: 5.3-91e042b (23270) 107MB -
一旦lxdを止めておきます。
masashi@PC-ubuntu:~$ sudo snap stop lxd
Stopped.
refreshでアップデート。
masashi@PC-ubuntu:~$ sudo snap refresh lxd
lxd 5.4-82d05d6 from Canonical✓ refreshed
起動。
masashi@PC-ubuntu:~$ sudo snap start lxd
Started.
5.4になりました。
masashi@PC-ubuntu:~$ lxd --version 5.4
infoで見るとちゃんと5.4のStableがインストールされています。
channels: latest/stable: 5.4-82d05d6 2022-07-27 (23339) 107MB - ・・・ installed: 5.4-82d05d6 (23339) 107MB -
まとめ
まとめと言うほど調べられていませんが何となくの動作はわかりました。
勝手にUpdateされていきなり挙動が変わってしまった、となると困りモノですがバージョンを固定しておけば任意のタイミングで変更はできそうです。
古いパッケージを使い続けるよりはセキュリティパッチあたってるほうが一応は安心ですね。
今回はsnapをちょっと舐めた程度で値のチューニングは行っていません。
パッケージの世代の管理数や変更方法は確認できていないのでこの辺をもう少し調べてみます。
(バージョンもいくつか保持できてロールバックとか出来るらしいです)