エラー解決 WSLでOpenWrtをビルドするときに発生する環境PATH問題
問題
WSLでOpenWrtをビルドすると以下のエラーが発生して失敗することがあります。
以下はエラーメッセージの抜粋です。
Error
find: The relative path 'Files/Git/cmd' is included in the PATH environment variable, which is insecure in combination with the -exedir Action of find. please remove that entry from %PATH
これはホストOSのWindowsの環境設定($PATH)がLinux(WSL)にも設定されていることが原因みたいです。
今回の場合ではWindowsにインストールしたGitコマンドのパスに関連してエラーが発生しています。
解決策①:exportコマンドでPATH設定を変更する
エラーメッセージの「please remove that entry from %PATH」に従い、 exportコマンドを使用してLinuxの$PATHを「/bin」と「/usr/bin」のみにします。
kamo@LAPTOP-ANOK9STL:~$ export PATH=/bin:/usr/bin kamo@LAPTOP-ANOK9STL:~$ echo $PATH /bin:/usr/bin
後はいつも通りに、make V=sを実行すればOKです。
基本的にはこれでビルドが成功します。
ただし、今回紹介したexportコマンドは一時的な環境変数の設定変更です。
WSLを再起動するとまた元の状態に戻ります。そこは注意です。
解決策②:Windowsの環境PATHをWSLに引き継がないようにする
そもそもな話として、WSLにWindowsの環境PATH情報が引き継がれることで今回のエラーが発生するのなら、 その環境PATHをWSL側に引き継がれないようにすれば良いはずです。
Windowsの環境変数の引き継ぎを無効にするには、WSLの/etc/wsl.confに以下の記述を追記します。
#/etc/wsl.conf
[interop]
appendWindowsPath = false
上記の内容を保存後、WSLを再起動します。
wsl.exe --shutdown
Windowsの環境PATHが引き継がれていないことが確認できます。
kamo@LAPTOP-ANOK9STL:~$ echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/wsl/lib:/snap/bin
これで以後は環境PATHの問題は起きないと思います。