WSLでlibGL.so.1が開けないエラー
WSL環境で、あるGatsbyテンプレートを使用してgatsby develop
を実行してみたところ、エラーが発生し開発モードでの起動に失敗してしまったため、そのトラブルシュート。
なお一通り対応してみた限り、Gatsby自体に直接の原因があるわけではなく、WSL上におけるNode.jsでのビルド時に、依存関係次第では同様の現象が発生するように思われました。
環境要件
- WSL(Windows Subsystem for Linux)
- Ubuntu 18.04.2 LTS
- Node.js 11.0.0
- npm 6.10.2
$ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS"
$ node --version
v11.0.0
$ npm --version
6.10.2
なおビルドしようとしていたリポジトリは、以下です。
発生したエラー
gatsby develop
の実行時に、以下のようなエラーが発生していました。libGL.so.1
が共有ライブラリとしてロードできなかった、というのが主な原因のようです。
ERROR
UNHANDLED REJECTION { err:
{ Error: <repository path>/node_modules/cwebp-bin/vendor/cwebp: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory
at Promise.all.then.arr (<repository path>/node_modules/execa/index.js:231:11)
at process.internalTickCallback (internal/process/next_tick.js:77:7)
code: 127,
killed: false,
stdout: '',
stderr:
'<repository path>/node_modules/cwebp-bin/vendor/cwebp: error while loading shared libraries: libGL.so.1: cannot open shared object file: No such file or directory\n',
failed: true,
signal: null,
cmd:
'<repository path>/node_modules/cwebp-bin/vendor/cwebp -quiet -mt -q 90 -o /tmp/71e97dde-3fe1-469e-9989-1be519d9dfd4 /tmp/2e852fe1-b07a-407e-b33f-c4b7626ed1cc',
timedOut: false },
message:
'Failed to process image <repository path>/content/projects/matt-cannon/isak-dalsfelt.jpg' }
Error: { err:
{ Error: <repository path>/node_modules/cwebp-bin/vendor/cwebp: error while loadi ng shared libraries: libGL.so.1: cannot open shared object file: No such file or directory
問題の解決
インターネットで調べてみると、「すでにインストールされているはずのライブラリが意図したパスに存在しないため、リンクを張ってみるのが良い」等の対処法も見つかったのですが、WSLではそもそもこのライブラリが存在していないようでした。
そのため、これをインストール必要がありました。libGL.so.1
を含むパッケージを以下のようにインストールします。
$ sudo add-apt-repository ppa:ubuntu-x-swat/updates
$ sudo apt-get dist-upgrade
$ sudo apt install ubuntu-desktop mesa-utils
インストールにはかなりの時間を要しますが、ここまでを完了すると無事にビルドできるようになりました。