はじめに
OpenFlow1.3を試してみようと、Lubuntu16.04 LTS にtrema-Edgeをインストールしようとしたら躓いたので、まとめてみる。
#やったこと
Lubuntu16.04だと、trema-Edgeにbundle installして、rakeを実行するときに、どうしてもエラーが出てしまった。
そのため、Lubuntu14.04で環境構築できるか試してみた。
#作業環境
今回は以下の環境で構築する。
・Lubuntu14.04 LTS
#環境構築
まず、以下のコマンドを実行し、環境構築に必要なパッケージリストの更新とインストールを行う。
$ sudo apt-get update
$ sudo apt-get upgrade -y
$ sudo apt-get install -y build-essential git gcc g++ make libpcap-dev
次に、rubyをインストールする。今回はソースからビルドを行った。
rubyのバージョンは2.0.0以上であればいいようなので、ruby-2.5.1をインストールしてみる。
$ sudo wget https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.1.tar.gz
$ sudo tar xzvf ruby-2.5.1.tar.gz
$ cd ruby-2.5.1/
$ sudo ./configure --prefix=/usr
$ sudo make
$ sudo make install
$ cd
$ ruby -v
ここでbundlerをインストールしておくが、ただbundlerをインストールしただけだとエラーが出たので、少し古いバージョンをインストールする。
また、同時にtrema-edgeをgit cloneする。
$ sudo gem install bundler -v 1.10.6
$ git clone https://github.com/trema/trema-edge.git
ここで、git cloneしたtrema-edgeにbundle installしてみたが、rake実行時にエラーが出たため、Gemfileを編集しておく。
$ cd trema-edge/
$ vi Gemfile
また、Gemfileは以下のように変更した。
source 'https://rubygems.org'
gem 'gli', '~> 2.11.0'
gem 'paper_house', '~> 0.6.2'
gem 'pio' ,'0.30.0'
group :development, :test do
gem 'rubocop', '~> 0.27.1'
end
group :development do
gem 'aruba', '~> 0.6.0'
gem 'coveralls', '~> 0.7.0', require: false
gem 'cucumber', '~> 1.3.15'
gem 'flay', '~> 2.5.0'
gem 'flog', '~> 4.2.1'
gem 'reek', '~> 1.3.7'
gem 'rspec', '~> 3.0.0'
gem 'yard', '~> 0.8.7.4'
gem 'rake', '< 11.0'
end
### Local variables:
### mode: Ruby
### coding: utf-8-unix
### indent-tabs-mode: nil
### End:
編集を終えたら、bundle installを実行し、rake のバージョンを指定して実行する。
最後にtrema-edgeのバージョンが確認できたら、環境構築の完了。
$ bundle install
$ rake _10.5.0_
$ ./trema -v
#おまけ
Lubuntu14.04は2017年4月にサポート期限が切れている。
そのため、せっかくなのでLubuntuのバージョンを上げてみる。
Lubuntuのバージョンを上げるために、以下のコマンドを実行した。
$ do-release-upgrade -c
# osのリリース情報の確認
$ sudo do-release-upgrade
# osのupgrade
*Lubuntu16.04へアップグレード後も、trema-edgeの動作することを確認できました。
#まとめ
Lubuntu16.04 LTS にtrema-Edgeをインストールしようとして躓いたが、とても回りくどい方法でインストールできた。
自分の技術力ではLubuntu16.04に直接trema-edgeをインストールできなかったので、できた方にはやり方をまとめていただけるとありがたいです。