何の記事なの?
wsl 1 の Ubuntu で ROS 1 を使っていて,
mkdir -p ~/catkin_ws/src
cd catkin_ws
catkin_make
しただけなのに,エラーが出て困っている人のための記事(というか,解決していないです).
多分,以下の人に起こります.
- wsl 1 の Ubuntuで ROS 1 を使っている人
- wsl 1 で 複数の Ubuntu ディストリビューションを使っている人(wsl --export で吐き出したimageを --import で読み込んで使っている人)
- Windows Terminal から wsl コマンドで wsl を立ち上げている人
注:3時間ほど溶かしてそれっぽい記事にたどり着いたので,情報共有を目的として記載(下リンク先の要約)
現象
mkdir -p ~/catkin_ws/src
cd catkin_ws
catkin_make
とすると,以下のエラーが発生する.
(catkin build でも同じ原因でエラーが出ますが,以下 catkin_make の話として)
- PowerShell 5.1(Windows Terminal インストール時)からwslコマンドで立ち上げた場合
-- BUILD_SHARED_LIBS is on
/home/k-kame/rosws_test3/devel/env.sh: 4: export: (x86)/Common: bad variable name
- PowerShell 7.2.1 から wsl コマンドで立ち上げた場合
-- BUILD_SHARED_LIBS is on
/home/k-kame/rosws_test3/devel/env.sh: 4: export: Files/PowerShell/7:/mnt/c/Program: bad variable name
- Ubuntu マークのアイコンから立ち上げた場合には,上のエラーは起こらない.
原因
Windows のパスを wsl 側で解釈した際の,フォルダ名の空白など.
解決法(参照元)
/etc/wsl.conf に以下を追記
[interop]
appendWindowsPath=false
-注:catkin_make はできるようになるが,code
で vs code が起動できなくなる(windowsのパスを参照しなくなるため).他にも問題があるかもしれないが未確認.
運用でカバー
catkin_make
しなけりゃ問題ないので,普段はappendWindowsPath=true
にしておいて,「catkin_make しよー」と思って立ち上げる時だけ,Windows からappendWindowsPath=false
にする.
ただし,上記書き換え後に wsl を終了させ,立ち上げなおす必要がある(powershell で以下を実行).
wsl --shutdown
元記事には「スクリプトを直せ」と書いてあるけど,さてどうしたものか(分かったら追記します.うまい方法をご存じの方がいたら教えてください・・・).