A Day in the Life

WSL 環境で sharp のインストールが失敗する

地味にハマった…。WSL2 環境の Linux で yarn add sharp すると、sharp を自前でビルドし始めて、

"/usr/include/vips/vips8:35:10: fatal error: glib-object.h:"

で死ぬ。しかしながら libvips 関係のパッケージやら、/usr/include/glib-2.0/glib-object.h やらは存在するし、あれやこれや試行錯誤するも直らず。

よくよくその他のエラーメッセージを見ると、

sharp: Installation error: ENOENT: no such file or directory, mkdir 'C:\Users\hotch\AppData\Roaming/npm-cache'

でまず死んで、その後自前ビルドを始めようとしている。そもそもなんで WSL の Linux なのに Windows の PATH 参照してるの、と env を見ると、APPDATA の環境変数がそのまま wsl に渡っていて、この中に含まれているようだった。

sharp のコードではインストール時のキャッシュを作るコードにenv.APPDATAが含まれていて、そのため変なパスを参照してしまっている。

APPDATA をnodejs の評価で偽になる空文字列をセットして実行すると、キャッシュからビルド済みの Linux のバイナリが使われ、上手くインストールが終了した。

APPDATA='' yarn add sharp

自前ビルドするときの問題は直ってないのだけど、まぁ sharp は使えるようになったので良しとする。

関連するかもエントリー

WSL 環境で、環境変数 BROWSER をセットすると便利
WSL 環境(というか Linux)では、ENV['BROWSER'] を見て開くブラウザを決定している実装が多い(たぶん)。たとえば WSL2 側の gh pr create --web コマンドで Windows 側のブラウザで Pull Request 編集画面が立ち上がっ...
WSL 環境(というか Linux)では、ENV['BROWSER'] を見て開くブラウザを決定している実装が多い(たぶん)。たとえば WS...
WSL環境でスリープ復帰時に時刻がずれる問題を Windows 側から修正する
久しぶりに WSL2 環境で開発をしていると時刻がずれていることに気づく。以前は起こっていなかった、スリープ復帰時に WSL 側の時計がずれる問題が発生してしまうようになってしまったようだ。https://github.com/microsoft/WSL/issues/5324古...
久しぶりに WSL2 環境で開発をしていると時刻がずれていることに気づく。以前は起こっていなかった、スリープ復帰時に WSL 側の時計がずれ...