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

インストールにはかなりの時間を要しますが、ここまでを完了すると無事にビルドできるようになりました。

参考