Open4
WSL の落とし穴
electronを触ってみていたら、うまく動かなかった。
npm run start
> my-electron-app@1.0.0 start
> electron .
/AAA/BBB/my-electron-app/node_modules/.pnpm/electron@30.1.0/node_modules/electron/dist/electron: error while loading shared libraries: libgtk-3.so.0: cannot open shared object file: No such file or directory
libgtk-3.so.0
についてapt
で解決しても次々とエラーがでてきてらちが明かない
なんだか、共通ライブラリを使おうとしてる?
lld
コマンドで実行ファイルの依存関係を調べれるらしいので試してみる
$ ldd node_modules/electron/dist/electron
linux-vdso.so.1 (0x00007fff36b8d000)
libffmpeg.so => /home/takao/my-electron-app/node_modules/electron/dist/libffmpeg.so (0x00007fc1dfdad000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc1dfda2000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc1dfd9d000)
libgobject-2.0.so.0 => /lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007fc1dfd3d000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fc1dfc03000)
libgio-2.0.so.0 => /lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007fc1dfa28000)
libnss3.so => /lib/x86_64-linux-gnu/libnss3.so (0x00007fc1df8f7000)
libnssutil3.so => /lib/x86_64-linux-gnu/libnssutil3.so (0x00007fc1df8c4000)
libsmime3.so => /lib/x86_64-linux-gnu/libsmime3.so (0x00007fc1df89a000)
libnspr4.so => /lib/x86_64-linux-gnu/libnspr4.so (0x00007fc1df85a000)
libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007fc1df80c000)
libatk-1.0.so.0 => /lib/x86_64-linux-gnu/libatk-1.0.so.0 (0x00007fc1df7e0000)
libatk-bridge-2.0.so.0 => /lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0 (0x00007fc1df7a8000)
libcups.so.2 => /lib/x86_64-linux-gnu/libcups.so.2 (0x00007fc1df70a000)
libdrm.so.2 => /lib/x86_64-linux-gnu/libdrm.so.2 (0x00007fc1df6f4000)
libgtk-3.so.0 => /lib/x86_64-linux-gnu/libgtk-3.so.0 (0x00007fc1deecb000)
libpango-1.0.so.0 => /lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007fc1dee64000)
libcairo.so.2 => /lib/x86_64-linux-gnu/libcairo.so.2 (0x00007fc1ded3a000)
libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007fc1debfa000)
libXcomposite.so.1 => /lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007fc1debf5000)
libXdamage.so.1 => /lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007fc1debf0000)
libXext.so.6 => /lib/x86_64-linux-gnu/libXext.so.6 (0x00007fc1debdb000)
libXfixes.so.3 => /lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007fc1debd3000)
libXrandr.so.2 => /lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007fc1debc4000)
libgbm.so.1 => not found
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007fc1deb93000)
libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fc1deb69000)
libxkbcommon.so.0 => /lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007fc1deb22000)
libasound.so.2 => not found
libatspi.so.0 => /lib/x86_64-linux-gnu/libatspi.so.0 (0x00007fc1deae6000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc1de9ff000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fc1de9df000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc1de7b6000)
/lib64/ld-linux-x86-64.so.2 (0x00007fc1eafb5000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007fc1de7a9000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fc1de733000)
libgmodule-2.0.so.0 => /lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007fc1de72a000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fc1de70e000)
libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007fc1de6ca000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fc1de69e000)
libplc4.so => /lib/x86_64-linux-gnu/libplc4.so (0x00007fc1de697000)
libplds4.so => /lib/x86_64-linux-gnu/libplds4.so (0x00007fc1de692000)
libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007fc1de5c9000)
libgssapi_krb5.so.2 => /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007fc1de575000)
libavahi-common.so.3 => /lib/x86_64-linux-gnu/libavahi-common.so.3 (0x00007fc1de567000)
libavahi-client.so.3 => /lib/x86_64-linux-gnu/libavahi-client.so.3 (0x00007fc1de553000)
libgnutls.so.30 => /lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007fc1de368000)
libgdk-3.so.0 => /lib/x86_64-linux-gnu/libgdk-3.so.0 (0x00007fc1de25f000)
libpangocairo-1.0.so.0 => /lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007fc1de24d000)
libXi.so.6 => /lib/x86_64-linux-gnu/libXi.so.6 (0x00007fc1de239000)
libcairo-gobject.so.2 => /lib/x86_64-linux-gnu/libcairo-gobject.so.2 (0x00007fc1de22d000)
libgdk_pixbuf-2.0.so.0 => /lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007fc1de1fd000)
libepoxy.so.0 => /lib/x86_64-linux-gnu/libepoxy.so.0 (0x00007fc1de0c8000)
libfribidi.so.0 => /lib/x86_64-linux-gnu/libfribidi.so.0 (0x00007fc1de0aa000)
libpangoft2-1.0.so.0 => /lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007fc1de08f000)
libharfbuzz.so.0 => /lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007fc1ddfc0000)
libfontconfig.so.1 => /lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007fc1ddf76000)
libthai.so.0 => /lib/x86_64-linux-gnu/libthai.so.0 (0x00007fc1ddf6b000)
libpixman-1.so.0 => /lib/x86_64-linux-gnu/libpixman-1.so.0 (0x00007fc1ddebe000)
libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fc1dddf6000)
libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007fc1dddbb000)
libxcb-shm.so.0 => /lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007fc1dddb6000)
libxcb-render.so.0 => /lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007fc1ddda7000)
libXrender.so.1 => /lib/x86_64-linux-gnu/libXrender.so.1 (0x00007fc1ddd9a000)
libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007fc1ddd92000)
libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fc1ddd8a000)
libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007fc1ddd53000)
libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007fc1ddcbc000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fc1ddc91000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007fc1ddbc0000)
liblz4.so.1 => /lib/x86_64-linux-gnu/liblz4.so.1 (0x00007fc1ddba0000)
libcap.so.2 => /lib/x86_64-linux-gnu/libcap.so.2 (0x00007fc1ddb95000)
libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007fc1dda57000)
libkrb5.so.3 => /lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007fc1dd98c000)
libk5crypto.so.3 => /lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007fc1dd95d000)
libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007fc1dd955000)
libkrb5support.so.0 => /lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007fc1dd947000)
libp11-kit.so.0 => /lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007fc1dd80c000)
libidn2.so.0 => /lib/x86_64-linux-gnu/libidn2.so.0 (0x00007fc1dd7eb000)
libunistring.so.2 => /lib/x86_64-linux-gnu/libunistring.so.2 (0x00007fc1dd641000)
libtasn1.so.6 => /lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007fc1dd629000)
libnettle.so.8 => /lib/x86_64-linux-gnu/libnettle.so.8 (0x00007fc1dd5e1000)
libhogweed.so.6 => /lib/x86_64-linux-gnu/libhogweed.so.6 (0x00007fc1dd599000)
libgmp.so.10 => /lib/x86_64-linux-gnu/libgmp.so.10 (0x00007fc1dd517000)
libXinerama.so.1 => /lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007fc1dd512000)
libXcursor.so.1 => /lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007fc1dd506000)
libwayland-cursor.so.0 => /lib/x86_64-linux-gnu/libwayland-cursor.so.0 (0x00007fc1dd4fc000)
libwayland-egl.so.1 => /lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007fc1dd4f5000)
libwayland-client.so.0 => /lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007fc1dd4e4000)
libjpeg.so.8 => /lib/x86_64-linux-gnu/libjpeg.so.8 (0x00007fc1dd463000)
libgraphite2.so.3 => /lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007fc1dd43c000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fc1dd433000)
libdatrie.so.1 => /lib/x86_64-linux-gnu/libdatrie.so.1 (0x00007fc1dd428000)
libbrotlidec.so.1 => /lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007fc1dd41a000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007fc1dd402000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007fc1dd3dc000)
libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007fc1dd3d5000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fc1dd3bf000)
libbrotlicommon.so.1 => /lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007fc1dd39c000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007fc1dd38f000)
not found のもののみ出してみる
ldd node_modules/electron/dist/electron | grep "not found"
libgbm.so.1 => not found
libasound.so.2 => not found
https://packages.ubuntu.com/ から該当するパッケージを探してみる
これかな?
sudo apt install -y libgbm1 liboss4-salsa-asound2
インストールしてみたが、別のエラーがでてきた...
$ npm run start
> my-electron-app@1.0.0 start
> electron .
/AAA/BBB/my-electron-app/node_modules/electron/dist/electron: symbol lookup error: /AAA/BBB/my-electron-app/node_modules/electron/dist/electron: undefined symbol: snd_device_name_get_hint, version ALSA_0.9
ググってみても、それらしきものがでてこない...
GUI開発をwslを使ってやると、うまくいかないケースがあるけど
まさにそういう例かな...断念。
参考:https://qiita.com/one-kelvin/items/07bf9b99288e8ecfa4a2#不足しているライブラリのインストール
今使っているコンピュータアーキテクチャの確認方法
$ uname -m
x86_64
参考:https://manpages.ubuntu.com/manpages/noble/en/man1/uname.1.html
Ubuntuのデスクトップをwindowsでたちあげる?
ヒント
VcXsrv?
Xサーバとは、X Window Systemとも言い、リモート先のLinuxマシンのGUIアプリを手元のPC(今回はWindowsを想定)で操作する際に必要となるものです。