« ◆ 単純なブリッジの実装その2~複数ポート対応~【OpenFlow1.0をTremaの土管として使う】 | トップページ | ◆【改訂】OpenFlow フレームワーク Trema 0.4 のインストール手順【0.4.7対応】 »

2014年6月 8日 (日)

◆ Trema 0.4.7インストール失敗とバージョン指定インストール

[2014/6/8 16:30追記:
インストール失敗はすでに https://github.com/trema/trema/issues/366 にて報告されている現象でした。
ここに記載があるように事前に RubyGems を更新する作業をしたところ Trema 0.4.7 のインストールに成功しました。以下の手順になります:
  sudo gem install update-rubygems
  sudo update_rubygems
  sudo gem install trema
2014/6/9 00:15追記:

  上記の方法で成功はしたものの Warning がやたら出たりしてまだ少し変。RubyGems のバージョンが 2.2.2 になっていたので、以下のようにして 1.8.x のままにした方が良さそう。

 
sudo gem install update-rubygems -v 1.8.25
あとでもう少し確認します。

]
[2014/06/11 追記:
インストール方法を整理して 「
◆【改訂】OpenFlow フレームワーク Trema 0.4 のインストール手順【0.4.7対応】」を書きました。
]

パソコンの入れ替えがあって OpenFlow フレームワーク Trema のテスト環境を新規に作ろうとしたら Trema のインストールに失敗してはまったのでここに記録を残しておきます。
最新の 0.4.7 でだめなら一つ前の 0.4.6 を入れられないかと調べてみたら gem コマンドには --version オプションがあってバージョン指定ができるんですね。
0.4.6 にしたら無事インストール成功しました。

■現象発生環境
  OS: Lubuntu 13.04 Desktop (i386, 32bit)
  Trema: 0.4.7 … インストール失敗
            0.4.6 … インストール成功

■現象発生時のインストール画面とエラー箇所

以下の通り:

$ sudo gem install trema
Fetching: bundler-1.6.2.gem (100%)
Fetching: gli-2.10.0.gem (100%)
Fetching: Platform-0.4.0.gem (100%)
Fetching: open4-1.3.4.gem (100%)
Fetching: POpen4-0.1.4.gem (100%)
Fetching: rake-10.3.2.gem (100%)
Fetching: paper_house-0.6.2.gem (100%)
Fetching: bindata-2.1.0.gem (100%)
Fetching: pio-0.7.0.gem (100%)
Fetching: json-1.8.1.gem (100%)
Building native extensions.  This could take a while...
Fetching: rdoc-4.1.1.gem (100%)
Depending on your version of ruby, you may need to install ruby rdoc/ri data:

<= 1.8.6 : unsupported
= 1.8.7 : gem install rdoc-data; rdoc-data --install
= 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!
Fetching: trema-0.4.7.gem (100%)
Building native extensions.  This could take a while...
ERROR: Error installing trema:
ERROR: Failed to build gem native extension.

"/usr/bin/ruby1.9.1" -rubygems /var/lib/gems/1.9.1/gems/rake-10.3.2/bin/rake RUBYARCHDIR=/var/lib/gems/1.9.1/gems/trema-0.4.7/ruby RUBYLIBDIR=/var/lib/gems/1.9.1/gems/trema-0.4.7/ruby
rake aborted!
Bundler::GemspecError: There was a RuntimeError while loading trema.gemspec:
can't modify frozen String from
  /var/lib/gems/1.9.1/gems/trema-0.4.7/trema.gemspec:7:in `block in <main>'

/var/lib/gems/1.9.1/gems/bundler-1.6.2/lib/bundler.rb:393:in `rescue in eval_gemspec'
/var/lib/gems/1.9.1/gems/bundler-1.6.2/lib/bundler.rb:382:in `eval_gemspec'
/var/lib/gems/1.9.1/gems/bundler-1.6.2/lib/bundler.rb:353:in `block in load_gemspec_uncached'
/var/lib/gems/1.9.1/gems/bundler-1.6.2/lib/bundler/shared_helpers.rb:52:in `chdir'
/var/lib/gems/1.9.1/gems/bundler-1.6.2/lib/bundler/shared_helpers.rb:52:in `chdir'
/var/lib/gems/1.9.1/gems/bundler-1.6.2/lib/bundler.rb:348:in `load_gemspec_uncached'
/var/lib/gems/1.9.1/gems/bundler-1.6.2/lib/bundler.rb:338:in `load_gemspec'
/var/lib/gems/1.9.1/gems/bundler-1.6.2/lib/bundler/gem_helper.rb:31:in `initialize'
/var/lib/gems/1.9.1/gems/bundler-1.6.2/lib/bundler/gem_helper.rb:13:in `new'
/var/lib/gems/1.9.1/gems/bundler-1.6.2/lib/bundler/gem_helper.rb:13:in `install_tasks'
/var/lib/gems/1.9.1/gems/bundler-1.6.2/lib/bundler/gem_tasks.rb:2:in `<top (required)>'
/var/lib/gems/1.9.1/gems/trema-0.4.7/Rakefile:760:in `<top (required)>'
(See full trace by running task with --trace)

Gem files will remain installed in /var/lib/gems/1.9.1/gems/trema-0.4.7 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/trema-0.4.7/./gem_make.out

赤字で示したところがエラー発生個所。trema.gemspec の7行目で問題起きています。ソースコードから7行目を見てみると以下の通り:
  gem.version = Trema::VERSION

この Trema::VERSION はというと、ruby/trema/version.rb で定義されていました。0.4.7 で VERSION の記述のしかたがfreeze 指定に変更されていることが影響していそうです:
Trema 0.4.7 の場合の VERSION の記述:
  VERSION = '0.4.7'.freeze
Trema 0.4.6 の場合の VERSION の記述:
  VERSION = "0.4.6"

■暫定的な回避策
Trema 0.4.6 をインストールします。--version でバージョンを指定します。

  sudo gem install trema --version 0.4.6

以下の通りエラーなくインストールが完了しました:

$ sudo gem install trema --version 0.4.6
Fetching: gli-2.8.1.gem (100%)
Fetching: rake-10.1.1.gem (100%)
Fetching: paper_house-0.5.0.gem (100%)
Fetching: bindata-1.6.0.gem (100%)
Fetching: pio-0.3.0.gem (100%)
Fetching: rdoc-4.0.1.gem (100%)
Depending on your version of ruby, you may need to install ruby rdoc/ri data:

<= 1.8.6 : unsupported
= 1.8.7 : gem install rdoc-data; rdoc-data --install
= 1.9.1 : gem install rdoc-data; rdoc-data --install
>= 1.9.2 : nothing to do! Yay!
Fetching: trema-0.4.6.gem (100%)
Building native extensions.  This could take a while...
Successfully installed gli-2.8.1
Successfully installed rake-10.1.1
Successfully installed paper_house-0.5.0
Successfully installed bindata-1.6.0
Successfully installed pio-0.3.0
Successfully installed rdoc-4.0.1
Successfully installed trema-0.4.6
7 gems installed
Installing ri documentation for gli-2.8.1...
Installing ri documentation for rake-10.1.1...
Installing ri documentation for paper_house-0.5.0...
Installing ri documentation for bindata-1.6.0...
Installing ri documentation for pio-0.3.0...
Installing ri documentation for rdoc-4.0.1...
Installing ri documentation for trema-0.4.6...
Installing RDoc documentation for gli-2.8.1...
Installing RDoc documentation for rake-10.1.1...
Installing RDoc documentation for paper_house-0.5.0...
Installing RDoc documentation for bindata-1.6.0...
Installing RDoc documentation for pio-0.3.0...
Installing RDoc documentation for rdoc-4.0.1...
Installing RDoc documentation for trema-0.4.6...

« ◆ 単純なブリッジの実装その2~複数ポート対応~【OpenFlow1.0をTremaの土管として使う】 | トップページ | ◆【改訂】OpenFlow フレームワーク Trema 0.4 のインストール手順【0.4.7対応】 »

Trema」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1776113/56439792

この記事へのトラックバック一覧です: ◆ Trema 0.4.7インストール失敗とバージョン指定インストール:

« ◆ 単純なブリッジの実装その2~複数ポート対応~【OpenFlow1.0をTremaの土管として使う】 | トップページ | ◆【改訂】OpenFlow フレームワーク Trema 0.4 のインストール手順【0.4.7対応】 »

最近のトラックバック

無料ブログはココログ