サイトアイコン 演劇とかの感想文ブログ

[PHP]WSLでのLaravelのインストールを阻んだ意外な原因

LaravelをWindows10のWSLにインストールし、セットアップしようとした所、WSLのapt-get updateの失敗(Cannot initiate the connection)、Laravelのプロジェクト作成の失敗(Could not delete ~)に遭遇しました。私のWindows10環境で前から使っていた意外なアプリがその原因でした。

WSLのapt-get updateが通信エラーで失敗

Microsoft StoreからWSL用のUbuntuを入手しました

立ち上げたあと、PHPの導入をするにあたって、インストールされているパッケージリストの更新(apt-get update)とパッケージの更新(apt-get upgrade)をかけようとしました。
が、 いきなりここでひっかかりましたorz

  
$sudo apt-get update
Err:1 http://security.ubuntu.com/ubuntu focal-security InRelease
  Cannot initiate the connection to security.ubuntu.com:80 (2001:67c:1360:8001::23). - connect (101: 
Network is unreachable) Cannot initiate the connection to security.ubuntu.com:80 (2001:67c:1360:8001::24). - connect (101: Network is unreachable) Cannot initiate the connection to security.ubuntu.com:80 (2001:67c:1562::18). - connect (101: Network is unreachable) Cannot initiate the connection to security.ubuntu.com:80 (2001:67c:1562::15). - connect (101: Network is unreachable) Could not connect to security.ubuntu.com:80 (91.189.91.38), connection timed out Could not connect to security.ubuntu.com:80 (91.189.91.39), connection timed out Could not connect to security.ubuntu.com:80 (91.189.88.142), connection timed out Could not connect to security.ubuntu.com:80 (91.189.88.152), connection timed out
 以下略

エラー内容は、ubuntuのサーバーへの接続がタイムアウトになるというもの。

家の固定回線の利用で、インターネット等も何も問題なく利用できているだけに、原因究明に時間がかかりました。
検索すると以下のようなページに行き当たります。

はじめにVagrantで、Ubuntu18.10のボックスを作り、Node.jsをインストールしたいが、エラーでインストールできずsudo apt install -y nodejs npmで、エラー発生エラー内容...
Ubuntu18.10でapt updateのエラーを解決した方法 - Qiita - Qiita

タイムゾーン設定、Proxy設定等については特に設定に問題がない様子。

以下のページも行き当たりました。

目的コマンドsudo apt-get updateを実行した際にFailed to fetchエラーが出たときの解決法を知る。実行環境OSUbuntu18.04(WSL)エラー内容コマンドsud...
Ubuntu 18.04 sudo apt-get updateコマンド が Failed to fetchエラーになった時の... - Qiita

こちらにあるパッケージリストを事前に削除する以下のコマンドを実行後に再度apt-get updateを実行しましたが変わりません。
$sudo rm -rf /var/lib/apt/lists/*

原因はAvast(セキュリティソフト)

ふと、ネットワークへのアクセスの問題なので、ファイアウォールが原因ではと考え、インストールしているセキュリティソフト(Avast)のファイアウォールをオフにしてみました。

そうすると、びっくりするくらい簡単にapt-get update,apt-get upgradeが成功しました。

改めて、マイクロソフトのサイトのWSLのトラブルシューティングを見ると、以下のような説明を発見できます

WSL でインターネットにアクセスできない
一部のユーザーにより、WSL でのインターネット アクセスをブロックする特定のファイアウォール アプリケーションに関する問題が報告されています。 報告されているファイアウォールは次のとおりです。
Kaspersky
AVG
Avast
ファイアウォールをオフにすると、アクセスできる場合があります。 場合によっては、ファイアウォールをインストールするだけでアクセスがブロックされるようです。

Avastのファイアウォールへの例外等の登録方法はわからないので、完全解決には至りませんが、とりあえずapt-get updateを実行する前にファイアウォールをオフにすることしました

セキュリティソフトの入れ替えも含めて考えようかと考えています

Laravelのインストールが失敗する

Laravelのインストールは以下のサイトを参考に行いました。

Windows 10のWindows Subsystem for LinuxにインストールしたUbuntuを利用してLaravelのインストールを行います。インストール直後のUbuntuにはPHPがインストールされていないためインストールを行う必要があります。Laravelの要件を確認しインストールを実施しています。
WSL(Windows10)のUbuntuにLaravelインストール | アールエフェクト - アールエフェクト

PHPを7.2ではなく、7.4を入れた以外は順調に実行できました。
が、 最後のLaravelのプロジェクト作成でまたしてもハマりますorz

  $composer create-project --prefer-dist laravel/laravel Sample
  Creating a "laravel/laravel" project at "./Sample"
  Installing laravel/laravel (v8.5.15)
    - Installing laravel/laravel (v8.5.15): Extracting archive
      Install of laravel/laravel failed
  
  
    [RuntimeException]
    Could not delete /mnt/c/Users/[利用者名]/dropbox/dev/php/Sample:
  
  
  create-project [-s|--stability STABILITY] [--prefer-source] [--prefer-dist] [--repository REPOSITORY] [--repository-url REPOSITORY-URL] [--add-repository] [--dev] [--no-dev] [--no-custom-installers] [--no-scripts] [--no-progress] [--no-secure-http] [--keep-vcs] [--remove-vcs] [--no-install] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--ask] [--] [] [] []

こちらも、色々調べ回りましたが、 原因はDropboxでした

私は、バックアップの意味もあり、Dropboxで管理されているフォルダ内にLaravelのプロジェクトを作成しようとしていました(いちいちバックアップを取るのが面倒なのと、git登録前であってもファイルのバージョンを前に戻すとかできるので、ちょっとした個人開発ではこっちのほうが楽なのです)

しかし、Dropboxが管理されているフォルダでは、上記のようなエラーがでるようです。(原因不明…おそらくファイル作成時または削除時にDropboxアプリケーションが何か干渉しているのだと思います)

とりあえず、Dropboxアプリを終了して再実行すると見事インストールできました

いきなり、躓いて勉強意欲が挫かれそうになりましたが、やっとスタートラインにつけました。

ここからは、以下の本を使って勉強していく予定です。

モバイルバージョンを終了