概要
本記事ではdirenv
の簡単な使い方と,導入方法について紹介します.
動機
ROSで複数のワークスペースを使い分けていると,ワークスペースごとにsource devel/setup.bash
をする必要があり地味に面倒なので,自動化できないかなあと調べていました.
環境
Ubuntu 16.04
他のバージョンでも多分できます.
方法
direnv
なるものがあり,これをを使用すると,それぞれのワークスペースルートディレクトリに移動するだけで,setup.bash自動で読み込んでくれるらしい.
direnv導入方法
とても参考になる記事(direnvを使おう)を発見したので,基本的にはこの記事通りに設定すれば環境構築はできそうです.
go command not found
direnvを使おうを参考にインストールしようと「goコマンドが見つかりません」なるエラーが発生.
確かにGoは導入した記憶がないので,新しく入れる必要がありそうです.
Go のインストール
ここでは,direnv
で使用しているgo
の最新版をapt install
で導入するための方法を紹介します.
通常のapt-repository
ではgo
の最新版が手に入らない可能性がある
今話題のGoはapt install
で簡単にインストールすることができます. しかし,apt-repositoryにあるバージョンに注意しなければなりません.
筆者の環境で何も考えずに下記のようにgoをインストールした場合...
$ sudo apt update
$ sudo apt install golang-go
インストールされたのはgo 1.6
. 2019年12月現在の最新版はgo 1.13
のため,かなり古いバージョンがインストールされてしまっています.
direnv
では,最低でもgo 1.8
以降のバージョンが必要なため,これではdirenv
を使用することができません.
golang-go
の最新版をインストールするためにapt-repository
を更新
そこで,最新バージョンを手に入れるために,ここを参考に apt-repository
を更新し,再度インストールします.
$ sudo add-apt-repository ppa:longsleep/golang-backports
$ sudo apt-get update
$ sudo apt-get install golang-go
念の為,バージョンを確認してみると
$ go version
go version go1.13.4 linux/amd64
となり,無事最新版をインストールすることができました.
direnvのインストール
ついでにdirenvのインストール方法も記載しておきます.
$ git clone https://github.com/direnv/direnv
$ cd direnv
$ sudo make install
~/.bashrcに下記を追記
export EDITOR=vim # 好きなエディタを指定できます.今回はvimを使用.
eval "$(direnv hook bash)"
使い方
例えば/home/user/
以下にcatkin_ws
とhoge_ws
があったとすると,それぞれのディレクトリにて,下記を実行します.
// ワークスペースに移動
$ cd ~/{ws_roos}
// .envrcの作成/編集
$ direnv edit .
作成した.envrc
を下記のように編集.
source deve/setup.bash
## outputが欲しい場合は下記を追加
# echo Auto sourcing source deve/setup.bash
これでワークスペースに移動するだけでsetup.bashを自動で読み込んでくれます.
まとめ
「ROS 複数ワークスペース setup.bash 自動」で検索してもなかなか欲しい答えにたどり着けないものですね…