MacPortを使用してプログラムをインストールする時に接尾辞(suffix)をコントロールしたい

何がしたいの?

  • MacPortを使用してプログラムをインストールする時に接尾辞(suffix)をコントロールしたい
  • MacPortを使用して複数バージョンのrubyMacOSX上で共存したい =>失敗。未解決

誰が使うの?

  • Macportでruby1.9を標準の方法でインストールすると実行プログラム名がruby1.9になるのをrubyにしたい人
  • 複数バージョンのrubyを使い分けたい人 =>失敗。未解決

どのように機能するの?

  • MacPortでインストールオプションで接尾辞をコントロールしてバイナリの名前を変える
  • rubyディレクトリやバイナリにバージョン番号がついてプログラムやディレクトリの共存が可能になる =>失敗。未解決

何を使うの?

どこで確認したの?

いつ確認したの?

  • 2010年3月6日

何が参考になるの?

何か注意点はあるの?

  • 後からインストールした1.8は名前衝突のためインストールに失敗した。
  • Macport経由でインストールしたバイナリ共存と、gem経由でインストールしたバイナリの名前衝突は別問題。
  • いろいろと自己責任でお願いします。

どんな手順でいろいろやってみたの?

  • MacOS標準のrubyのバージョンを確認する
$ which ruby
/usr/bin/ruby
$ 
$ /usr/bin/ruby -v
ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0]
$ 
  • MacPortの上のインストール可能なrubyを一覧する
$ sudo port search ruby
中略
ruby @1.8.7-p249 (lang, ruby)
Powerful and clean object-oriented scripting language
ruby186 @1.8.6-p388 (lang, ruby)
Powerful and clean object-oriented scripting language
ruby19 @1.9.1-p376 (lang, ruby)
Powerful and clean object-oriented scripting language
中略
  • 接尾辞の指定せずにMacPortで rubyをインストールする(ruby1.8がrubyとしてインストールされる)
$ sudo port install ruby
  • 確認
$ 
$ which ruby
/opt/local/bin/ruby
$ 
$ /opt/local/bin/ruby -v
ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-darwin10]
$ 
  • 一旦ruby1.8を削除する
$ sudo port uninstall ruby
  • 接尾辞の指定せずにMacPortで ruby19をインストールする(ruby1.9ruby1.9としてインストールされる)
$ sudo port install ruby19
  • 確認
$ 
$ which ruby
/usr/bin/ruby
$ 
$ which ruby1.9
/opt/local/bin/ruby1.9
$ 
  • 一旦ruby19を削除する
$ sudo port uninstall ruby19
  • 接尾辞を「なし」と明示指定してMacPortで rubyをインストールする(ruby1.9rubyとしてインストールされる)
$ sudo port install ruby19 +nosuffix
  • 確認

インストールは成功しているようだ。

$ which ruby
/opt/local/bin/ruby
$ 
$ /opt/local/bin/ruby -v
ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-darwin10]
$ 
$ ruby -v
ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-darwin10]
$ 
$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.1
  - RUBY VERSION: 1.9.1 (2009-12-07 patchlevel 376) [i386-darwin10]
  - INSTALLATION DIRECTORY: /opt/local/lib/ruby/gems/1.9.1
  - RUBY EXECUTABLE: /opt/local/bin/ruby
  - EXECUTABLE DIRECTORY: /opt/local/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-darwin-10
  - GEM PATHS:
     - /opt/local/lib/ruby/gems/1.9.1
     - /Users/tsuchiya/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - :sources => ["http://gems.rubyforge.org/", "http://gems.github.com"]
  - REMOTE SOURCES:
     - http://gems.rubyforge.org/
     - http://gems.github.com
$ 
  • 接尾辞を「18」と明示指定してMacPortで rubyをインストールする(ruby1.8 がruby18としてインストールされる...に違いなかったのだが.....)

インストール失敗!
なにやら名前衝突を起こしているらしい

$ sudo port install ruby +suffix18
Error: Target org.macports.activate returned: Image error: /opt/local/bin/erb is being used by the active ruby19 port.  Please deactivate this port first, or use 'port -f activate ruby' to force the activation.
Error: Status 1 encountered during processing.
Before reporting a bug, first run the command again with the -d flag to get complete output.
  • 確認

1.8は衝突のためインストールされなかった。
なんでだろう?接尾辞1.8が付くんじゃないの?

$ which ruby
/opt/local/bin/ruby
$ 
$ ruby -v
ruby 1.9.1p376 (2009-12-07 revision 26041) [i386-darwin10]
$ 
$ which ruby18
$ 
$ which ruby1.8
$ 
$ ls -al /opt/local/bin | grep ruby
-rwxr-xr-x   2 root  admin    9416  3  6 14:22 ruby
$