うたカモ技術ブログ

エラー解決   WSLでOpenWrtをビルドするときに発生する環境PATH問題

post:     update: 

問題

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の問題は起きないと思います。