LoginSignup
5

More than 3 years have passed since last update.

ROSで移動したワークスペースごとに自動でsetup.bashを読み込むための環境構築

Posted at

概要

本記事では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に下記を追記

~/.bashrc
export EDITOR=vim  # 好きなエディタを指定できます.今回はvimを使用.
eval "$(direnv hook bash)"

使い方

例えば/home/user/以下にcatkin_wshoge_wsがあったとすると,それぞれのディレクトリにて,下記を実行します.

// ワークスペースに移動
$ cd ~/{ws_roos}

// .envrcの作成/編集
$ direnv edit .

作成した.envrcを下記のように編集.

~/{ws_root}/.envrc
source deve/setup.bash
## outputが欲しい場合は下記を追加
# echo Auto sourcing source deve/setup.bash

これでワークスペースに移動するだけでsetup.bashを自動で読み込んでくれます.

まとめ

「ROS 複数ワークスペース setup.bash 自動」で検索してもなかなか欲しい答えにたどり着けないものですね…

参考

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5