🍣

Ubuntu-minimalのSnap版Chromiumでheadlessモードが動かないときの対処

2021/03/06に公開

Ubuntu-minimal環境でSnap版Chromiumのheadlessモードが動かなかったときのメモです。
原因は、フォントがインストールされていないことが原因のようで、フォントをインストール後、Snap版Chromiumを再度インストールすることで解決しました。

事象発生時の環境

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.2 LTS (Focal Fossa)"
...

Ubuntuは19.10頃からdeb版のChromiumが廃止され、Snap版でのみ提供されるようになった。当該バージョンのChromiumはSnap版のみ。

事象の内容

Chromiumをインストール

$ chromium

Command 'chromium' not found, but can be installed with:

sudo snap install chromium

$ sudo snap install chromium
chromium 89.0.4389.72 from Canonical✓ installed
$ chromium --version
Chromium 89.0.4389.72 snap

Chromiumを実行

$ chromium --headless
[0305/151916.045248:WARNING:headless_content_main_delegate.cc(530)] Cannot create Pref Service with no user data dir.
[0305/151916.263772:ERROR:vaapi_wrapper.cc(573)] Could not get a valid VA display
Trace/breakpoint trap (core dumped)

コアダンプとともに一番手前のプロセスが異常終了する。

修正

任意のフォントをインストールした後に、snap disable chromium -> snap enable chromium で解消した。

$ sudo apt install fonts-dejavu-core
Reading package lists... Done
...
Setting up fonts-dejavu-core (2.37-1) ...
$ sudo snap disable chromium
chromium disabled
$ sudo snap enable chromium
chromium enabled
$ chromium --headless
[0306/010646.813105:WARNING:headless_content_main_delegate.cc(530)] Cannot create Pref Service with no user data dir.
[0306/010646.859949:ERROR:vaapi_wrapper.cc(573)] Could not get a valid VA display
$

原因

下記でレポートされている。
https://bugs.launchpad.net/ubuntu/+source/chromium-browser/+bug/1908284
フォント関連で当該事象が発生している模様。

手元の環境で確認したところ、Chromiumインストール時点でフォントがインストールされていない場合に発生する。
SnapのDesktop Extensions Font Hookによりフォントキャッシュが生成されるため、snapの外側でフォントをインストールした場合は、再度当該Hookを走らせる必要がある。

そのため、フォントインストール後に

  • snap remove / installを実行
  • snap disable / enableを実行

のいずれかで解消するとの結論に至った。

さいごに

Snapはポータブルで、セキュアな素敵な仕組みだが、まだSnapの外側とのやり取りが枯れていないなと実感した。
普段はArch Linux使いでSnapはあまり気にしていなかったが、Snap難しいな。。

yskszk63/chrome-remote-interface-rsでGitHub Actions書いているときにSnapで色々あったうちの一つです。

GitHubで編集を提案

Discussion