Logicky Blog

Logickyの開発ブログです

Laravel Herdが動かなくなったのでWindows11にWSLのUbuntuを設定してみて結果的にMacを使うことにした

ずっとWSL2のArch Linuxを使っており、最近、Windows11 Powershellでの開発に切り替えたところでしたが、どうもやっぱり変えたいです。 きっかけは、Laravel Herdが自動アップデートされたら、Laravel Herdが起動しなくなったことです。。Laravel Herdが必要だった理由は、WindowsでRedisがすんなり入らなかったからです。 Linuxなら何も問題ありません。しかし、WSLの場合、Cursorのcodeコマンドがうまく使えなかったり、Windowsでしか動かないアプリとの連携がめんどくさかったりしたので、AIとか3Dとか考えたらどっちにしてもWindowsで開発することになるから、いっそのこと、WindowsでWSL使わずに開発しようと思いました。

しかし、最近またLaravel中心の開発が増えてきており、Laravelだと逆にWindowsで動かないライブラリなども結構ありました。それに、LaravelならWindowsである必要は全くありません。そこで、WSLのUbuntuでもしかしたら、codeコマンドとか色々うまくいくかもしれへん、と思い、セットアップしてみようと思ったのです。ダメなら、コンパクトなPCかノートPCかマックで、Laravel開発どこでもできるマンになるべく、セットアップをしていく所存です。MacのノートはM1 Macというやつを持っていますが、何故か外部ディスプレイは1つしか繋げられないし、画面が小さすぎるので、あんまり好きではありません。せっかくならLinuxマシンにしたいところです。まあでもLaravelならMacで全く問題ないはずですし、なにせ、Macは持っていますので、Macを使う可能性が高いです。メモリが16GBというところが、ちょっとあれですが、まあ開発だけなら問題ないと思います。

最近のコンパクトPCに折り畳みみたいな分割キーボードをくっつけて、折り畳みみたいなディスプレイを2つもっていれば、ホテルやらでもよい感じの開発環境が作れるのでは、ともちょっと思っております。折り畳みディスプレイが現実的に入手可能なのかなどは全然分かっておりませんが、Xで見たことがあります。ほしいです。

ひとまず、自宅のWindowsPCにおきましては、とりあえず、Ubuntu設定をしてみます。

Ubuntuをインストール

インストールしたいもの

買い物リストみたいな感じで書いていきます。大文字小文字は適当とさせていただきます。 php, redis, postgreSQL, minIO, node, npm, cursor, tmux, nvim, python, aws シェルはzshを使っていて、その後、starshipを使っていましたが、何か別のを使ってみようかなと思います。

Cursorの動作チェック

まずはやはり、Cursorのcodeコマンドが動くかどうかを確認してみたいと思います。 シェルでcodeを実行すると、何故かcodeコマンドを認識していました。でもエラーになっております。

dev@WIN:~$ code
Unable to determine app path from symlink : /mnt/c/Users/dev/AppData/Local/Programs/cursor/resources/app/bin/code

PowershellでCursorの場所を確認しました。

PS C:\Users\dev> Get-Process | Where-Object {$.Name -like "cursor"} | Select-Object Name, Path
PS C:\Users\dev> Get-ChildItem "C:\Users\$env:USERNAME\AppData\Local\Programs\cursor" -Recurse | Where-Object {$.Name -eq "cursor.exe"}
    ディレクトリ: C:\Users\dev\AppData\Local\Programs\cursor
Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----        2024/09/05     12:13      176270600 Cursor.exe

.bashrcにエイリアスを設定しました。

alias code='/mnt/c/Users/dev/AppData/Local/Programs/cursor/Cursor.exe'

これでなんと、code hoge でcursorが起動しました!! と思ったら、cursorが起動したものの、Ubuntuに接続できておらず、全然使えませんでした。。 既に、前回のArch Linux時にごにょごにょしたせいで、使えなくなっているのかもしれません。 なぜかArch Linuxにも接続できませんね。。

UbuntuとCursorの問題というよりは、WSL2とCursorの問題を調査・解明する必要がありそうです。。

PS C:\Users\dev> wsl --status
既定のディストリビューション: arch
既定のバージョン: 2
PS C:\Users\dev> wsl --list --verbose
  NAME                   STATE           VERSION
* arch                   Running         2
  docker-desktop         Stopped         2
  Ubuntu                 Running         2
  dev                    Stopped         2
  docker-desktop-data    Stopped         2
PS C:\Users\dev> wsl --update
更新プログラムを確認しています。
Linux 用 Windows サブシステムの最新バージョンは既にインストールされています。
PS C:\Users\dev> wsl --shutdown
PS C:\Users\dev> wsl -d Ubuntu
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

dev@WIN:/mnt/c/Users/dev$

一回wslをシャットダウンして、Ubuntuをもう一度起動してみましたがダメでした。 Windows11自体を再起動しても変わりませんでした。

CursorにWSLを接続しようとすると下記が出てきます。Cursorのターミナルで下記が表示されます。

[2024-09-20 02:00:55.460] Extension version: 0.81.8
[2024-09-20 02:00:55.460] L10N bundle: file:///c%3A/Users/dev/.cursor/extensions/ms-vscode-remote.remote-wsl-0.81.8/l10n/bundle.l10n.ja.json
[2024-09-20 02:00:55.475] authorityHierarchy: wsl+Ubuntu
[2024-09-20 02:00:55.475] WSL extension activating for a local WSL instance
[2024-09-20 02:00:55.490] Resolving wsl+Ubuntu, resolveAttempt: 1
[2024-09-20 02:00:55.491] NodeExecServer run: C:\WINDOWS\System32\wsl.exe --status
[2024-09-20 02:00:55.538] WSL feature installed: true (wsl --status)
[2024-09-20 02:00:55.538] NodeExecServer run: C:\WINDOWS\System32\wsl.exe --list --verbose
[2024-09-20 02:00:55.581] 5 distros found
[2024-09-20 02:00:55.582] Starting VS Code Server inside WSL (wsl2)
[2024-09-20 02:00:55.582] Windows build: 22631. Multi distro support: available. WSL path support: enabled
[2024-09-20 02:00:55.582] Scriptless setup: false
[2024-09-20 02:00:55.583] No shell environment set or found for current distro.
[2024-09-20 02:00:55.677] スタートアップの問題のヘルプについては、https://code.visualstudio.com/docs/remote/troubleshooting#_wsl-tips にアクセスしてください

あとは、Ubuntu側で、codeを使ってCursorを起動して、WSLに接続しようとした際の出力です。

dev@WIN:~$ code .
[main 2024-09-20T02:00:45.341Z] update#setState disabled
                                                        [main 2024-09-20T02:00:45.342Z] update#ctor - updates are disabled as there is no update URL
                                                                                                                                                    [main 2024-09-20T02:00:45.409Z] [storage state.vscdb] error checking size of src.vs.platform.reactivestorage.browser.reactiveStorageServiceImpl.persistentStorage.workspaceUser: Error: Unexpected number of rows - 0
                                     [main 2024-09-20T02:00:54.082Z] Extension host with pid 10696 exited with code: 0, signal: unknown.
                                                                                                                                        [main 2024-09-20T02:00:54.115Z] Extension host with pid 7752 exited with code: 0, signal: unknown.

いやーなんかめんどくさいな。全然分からないし。これはなんだ。。。

update#setState disabled
update#ctor - updates are disabled as there is no update URL
error checking size of src.vs.platform.reactivestorage.browser.reactiveStorageServiceImpl.persistentStorage.workspaceUser: Error: Unexpected number of rows - 0
Extension host with pid 10696 exited with code: 0, signal: unknown.
Extension host with pid 7752 exited with code: 0, signal: unknown.

ここに同じエラーの人いるな、でもコメントきてない。

ここにもある。

スタートアップ問題のヘルプを見てみるか。。

sudo apt-get update && sudo apt-get install wget ca-certificates

まだエラー出るから、一旦Cursorを完全削除してみるか。。

dev@WIN:~$ code hoge
Installing VS Code Server for Linux x64 (f1e16e1e6214d7c44d078b1f0607b2388f29d729)
Downloading: 100%
Unpacking: 100%
Unpacked 1707 files and folders to /home/dev/.vscode-server/bin/f1e16e1e6214d7c44d078b1f0607b2388f29d729.
Looking for compatibility check script at /home/dev/.vscode-server/bin/f1e16e1e6214d7c44d078b1f0607b2388f29d729/bin/helpers/check-requirements.sh
Running compatibility check script
Compatibility check successful (0)

おーVS Codeはできた。うーむ。なんかこれでCursorを再度入れたら出来そうな気がする。。 だめだ。Cursorはだめだった。

cursorコマンドなんてあるのか。。

dev@WIN:~$ cursor hoge
To use Cursor with the Windows Subsystem for Linux, please install Cursor in Windows and uninstall the Linux version in WSL. You can then use the `cursor` command in a WSL terminal just as you would in a normal command prompt.
Do you want to continue anyway? [y/N] y
To no longer see this prompt, start Cursor with the environment variable DONT_PROMPT_WSL_INSTALL defined.
/mnt/c/Users/dev/AppData/Local/Programs/cursor/resources/app/bin/cursor: 62: /mnt/c/Users/dev/AppData/Local/Programs/cursor/resources/app/bin/../cursor: not found

まあでもまたエラーですが。

github.com

大変そうだな。。 まあでも、これはあくまで、cursorコマンドで起動させたいという話で、別にCursorからWSLに接続しようとしてエラーが出る話とは違うんだよな。 VS Codeだと接続できるしなあ。うーむ。

Macの設定でもするか。。。 macから失礼いたします。

macだと簡単にCursorも起動しますし、Laravel開発に必要なものはDocker使わずとも簡単にインストール可能です。 そして、windowsだと使えなかったLaravelの便利ツールもいくつかありました。 そもそもLaravel HerdのドメインはGoogleログインの動作確認などでちょっと不便でした。 ということで、Laravel Herdの利用をやめて、macを使っていきたいと思います。 macであれば、外出先でも同じ環境なので、どこでも開発ができます。 放浪しながら開発をし続けたいと思います。