【Linux】Ubuntu 22.04 エラー : No VM guests are running outdated hypervisor (qemu) binaries on this host

Linux
スポンサーリンク

今回は、Ubuntu Server 22.04でapt install時に出てくる画面とメッセージについて解説していきたいと思います。
タイトルにはエラーと書いてありますが、[No VM guests are running outdated hypervisor (qemu) binaries on this host]自体はエラーメッセージではありません。

期待する目標

本手順で期待する目標は以下の通りです。

  • No VM guests ~のメッセージを理解する
  • apt install時のサービス再起動画面の挙動を理解する
  • 最適な設定を行う

前提条件

本環境で使用する環境は以下の通りです。

  • CPU : 2vCPU
  • MEM : 4GB
  • DISK : 60GB

No VM guests are running outdated hypervisor (qemu) binaries on this hostのメッセージ自体は、仮想環境、物理環境の両方で出てきたり、WSLでUbuntuを使用しているか環境で出てきたりするらしいです。

No VM guests are running outdated hypervisor (qemu) binaries on this hostの正体

メッセージ自体を翻訳にかけると

このホストで古いハイパーバイザー(qemu)バイナリを実行しているVMゲストはいません。

DeepL翻訳

とのことです。
これ自体はエラーメッセージではないことが確認できます。
このメッセージを出している正体が、Ubuntu Serverなどに搭載されている、[needrestart]というサービスです。
このパッケージ自体、Ubuntu 21.04あたりからインストール時に含まれるようになったようですが、再起動が必要なサービスを自動で通知してくれるパッケージになります。

他のブログ等では、[sudo apt purge needrestart]などと削除するようなコマンドを実行することで、パッケージ自体を削除しているケースがありますが、デフォルトで入っている機能なので、穏便に解決したい感はあります。

実際に、以下のようなコマンドを実行すると例のメッセージが出てきます。

willserver@dev-ubt2204:~$ sudo apt upgrade

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Restarting services...
 systemctl restart cron.service irqbalance.service multipathd.service packagekit.service polkit.service rsyslog.service ssh.service udisks2.service
Service restarts being deferred:
 /etc/needrestart/restart.d/dbus.service
 systemctl restart getty@tty1.service
 systemctl restart networkd-dispatcher.service
 systemctl restart systemd-logind.service
 systemctl restart unattended-upgrades.service
 systemctl restart user@1000.service

No containers need to be restarted.

No user sessions are running outdated binaries.

No VM guests are running outdated hypervisor (qemu) binaries on this host.

No VM guests are running outdated hypervisor (qemu) binaries on this hostで出てくる画面

Daemons using outdated libraries
Daemons using outdated libraries

Teratermなどで、SSHして[apt install]コマンドや、[apt upgrade]コマンドを実行した後に、このような画面が出てきます。
これも[needrestart]のサービスが原因で出てきます。
インストールコマンドやアップグレードを行って放置していたが、この画面が出ており、インストールやアップグレードが止まっているようなケースがあります。
ここら辺については、[needrestart]の設定を行うことで安全に回避することができます。

No VM guests are running outdated hypervisor (qemu) binaries on this hostの解決方法

実際に、[No VM guests are running outdated hypervisor (qemu) binaries on this host]というメッセージを止めることはできませんが、[needrestart]の設定を行うことで、前項の画面を出さずに穏便に解決する方法はあります。

そもそも、[needrestart]はパッケージをインストールやアップグレードを行った場合に、依存関係にあるパッケージで再起動が必要なサービスが無いかチェックしたうえで、ユーザに通知を行ってくれるサービスのようなので、自動的にサービスの再起動を行うか、そもそもサービスの再起動を行わないかを設定してあげれば、ユーザに確認を問われることが無くなります。

[needrestart]の設定ファイルは、以下のパスに存在します。

/etc/needrestart/needrestart.conf

このファイルを直接変更してもよいですが、設定用のディレクトリが存在するため、以下のコマンドを実行してファイルを編集します。

willserver@dev-ubt2204:~$ sudo vi /etc/needrestart/conf.d/00-<任意の名前>.conf

#以下を追記
$nrconf{restart} = 'a';
or

$nrconf{restart} = 'l';

[needrestart]には、主に3種類のモードが存在しています。

Restart mode: (l)ist only, (i)nteractive or (a)utomatically.

[l]が再起動が必要なサービスを表示する。
[i]がデフォルトの状態で、再起動が必要なサービスをユーザに通知する。
[a]が自動的にサービスを再起動する。
という挙動になります。
[needrestart]の設定ファイルには、[l] or [a]を設定することで、前項の画面は出てこなくなります。
とはいえ、依存するサービスの再起動を行わないと、設定が反映されなかったりするので、個人的には[a]を設定しておきたい所存です。

まとめ

今回は、Ubuntu Server 22.04で[No VM guests are running outdated hypervisor (qemu) binaries on this host]のメッセージが出たり、APTでパッケージをインストール・アップグレード時に出てくる画面について、挙動と制御の仕方を簡単に解説しました。
実際にメッセージを検索すると、無理やり削除したりしているので、それは本当に最適な方法なのか?と疑問に思ったため、挙動と制御の方法を調べて設定してみました。
確かに削除すれば表示させないという目的は達成できますが、なぜこの機能が入っているのかを本当に疑問に思って調べてみるというのは必要だと思います。

また、本事象を解決するにあたり、以下のブログを勝手に参照して記事にしています。
本当にありがとうございます。
needrestartで学ぶパッケージのフック処理

かなり詳しく、わかりやすく解説しているためneedrestartの挙動を理解したい方は一読すると理解が深まります。

おまけ

本ブログではVMwareやWindows、Linuxのインストール手順等も公開しております。
インフラエンジニアとして有益な記事や無益なコンテンツも作成しておりますので、通勤時間や休憩時間、休日のスキマ時間等に合わせて読んでいただけると幸いです。
また、Youtubeで解説動画も鋭意作成中です。本ブログで記事にしているものも動画にしようと思っておりますので、よろしくお願いいたします。
willserverのnoteも開設したのでフォローお願いします。

コメント

タイトルとURLをコピーしました