ponpokoTOYOTA
@ponpokoTOYOTA

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

curl -s "https://laravel.build/example-app" | bash が実行できない

解決したいこと

Docker,Laravel sailを用いてアプリを作成したいと思い、
Laravel公式ドキュメントより
Laravel&Docker -> Getting Started On Windowsを参考に、
Docker,wslのインストール後wsl --installまで実行したものの、
表題コマンドを入力すると以下のようなエラーが出ました。

curl.exe -s https://laravel.build/example-app | bash
Processing fstab with mount -a failed.

<3>WSL (83) ERROR: CreateProcessEntryCommon:370: getpwuid(0) failed 2
<3>WSL (83) ERROR: CreateProcessEntryCommon:374: getpwuid(0) failed 2
<3>WSL (83) ERROR: CreateProcessEntryCommon:577: execvpe /bin/bash failed 2
<3>WSL (83) ERROR: CreateProcessEntryCommon:586: Create process not expected to return

環境

Windows10
CLI: Powershell

Docker version 20.10.24, build 297e128

wsl -l -v
  NAME                   STATE           VERSION
* docker-desktop-data    Running         2
  docker-desktop         Running         2

自分で試したこと

curl -s ~で実行したところInvoke-WebRequestと出て、こちらはpowershellでの名前被りが原因、といった記事を見かけたため、curl.exeでの実行を試しました。

https://programming.sincoston.com/laravel8-windows-laravel-sail-construction/
こちらの記事を参考に、wsl -d Ubuntuとして、Ubuntuでの
表題のコマンドの実行は確認できましたが、その場合

cd example-app
.vendor/bin/sail up

-bash: ./vendor/bin/sail: No such file or directory

ファイルorディレクトリがない、というエラーが出ます。
dockerとの連携ができてないのかな、と推測だけしているのですが、こちらについても解決法をご存じであれば併せてご回答いただけると非常にありがたいです。

以上、よろしくお願い致します。

0

1Answer

<3>WSL (83) ERROR: CreateProcessEntryCommon:577: execvpe /bin/bash failed 2

まずこちらの問題ですが、示されている状態を見ると

wsl -l -v
  NAME                   STATE           VERSION
* docker-desktop-data    Running         2
  docker-desktop         Running         2

デフォルトディストリビューションがdocker-desktop-dataになっています。
これはDocker Desktopのデータ保存用のディストリビューション(=/bin/bashがない)なのでコマンド実行に失敗しているのでしょう。

Ubuntuもインストールされているようですから

wsl.exe -s Ubuntu

を実行することでデフォルトディストリビューション(=PowerShellからのbashコマンドで実行されるディストリビューション)をUbuntuに変更できます。

cd example-app
.vendor/bin/sail up

-bash: ./vendor/bin/sail: No such file or directory

こちらについてはこれよりも前に他のエラーが出ていると思いますが、Docker Desktopとの連携を有効にすればよいと思います。

https://docs.docker.jp/desktop/windows/wsl.html#wsl-2-docker
「WSL 2 ディストリビューションで Docker サポートの有効化」の説明の図にあるように
Integrationを有効にしてUbuntuにチェックを入れるとwsl -d Ubuntuで起動したディストリビューション内でdockerコマンドが使えるようになると思います。

0Like

Comments

  1. @ponpokoTOYOTA

    Questioner

    先頭の"fstab mount -a"でしか調べられていなかったのですが、その後ろの詳細なエラー文を見るべきだったのですね。ありがとうございます。

    dockerのubuntuにチェックを入れたところ、無事localhostの画面確認までできました。

    ディストリビューションなどの理解があいまいで申し訳ないのですが、結論としては
    「docker、wslのインストールのみでは動かないのでubuntuを入れるのが簡単」ということでよいでしょうか?

    docker-desktopないし-dataにbin/bashを作成するメリットはありますか?

  2. Docker Desktopのみ(WSLはDocker Desktopの為だけに使う)インストールして使用するという用途であれば、Windows(PowerShellやコマンドプロンプト)から使用することを前提にすると思いますのでbash等の非Windowsコマンドは利用しない(できない)というのが良いと思います。

    今回参考にされていたようにLinuxを前提としたドキュメントに従うのであればUbuntu等から使用するのが良いと思います。

  3. @ponpokoTOYOTA

    Questioner

    Linuxの知識も多少はつけていきたいので、Ubuntu等を使用する形にしようと思います。
    丁寧な回答ありがとうございました!

Your answer might help someone💌