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 は使えるようになったので良しとする。