rb22-*なportがぜんぜんない
とくに結論のないはなし。
「MacPortsにrb22-てportないんだけど、なんか例とかないの?」てメールが来た。
PortGroup rubyの確認用に手元では作ってるので、そいつを簡略化してgistに上げて「これ見て」と返信しておいた。
ruby.setup
MacPortsにはPortGroup(コード)という仕組みがあって、Portfileを簡単に書けるようにいろいろサポートしてくれる。
自分が担当する前(ruby-1.8.6以前のころ)から、PortGroup rubyにはruby.setupキーワード(tcl的にはproc)があって、これを使うと簡単にRubyのライブラリやツールがインストールできるようになっている。
前述のgistの例でいうと、
ruby.setup bundler 1.10.1 gem {} rubygems ruby22
で、この行のruby22をruby21にすればport:ruby21用のPortfileになる。(実際にはPortfileのファイル名も変えないとlintにはひっかかる)
これはrubygemsを使う例だけど、他にもいろいろなインストール手法に対応していて、
- setup.rb
- extconf.rb && make && make install
- install.rb (1) basic_install.rb - 実行するとぜんぶインストールする。
- install.rb (2) - config.saveを生成するタイプ。
- make (このタイプpdumpfsしか見たことない…)
- 単純にコピー
などが利用できるようになっている。でもいまどきはgemしかないよね。
rb22-* なportはなぜないのか / そもそもいるの?
直接にはだれもコミットしてないからなわけだけど。いちお考えてみると、
- brew使ってる
- gem installすればいい
あたりだよねえ。きっと。
個人的にはgem install|updateすればいいし、portつくって更新に追従するのもめんどう、といったところ。
ただそれは自分がrubyユーザだからそう思うわけで、そうでない人が特定のコマンド使いたいだけで「gem installしてね」というのもどうなんじゃろ?とも思える。(冒頭の質問してきたひとはRailsやってるて書いてたのでgemやbundler使ったほうがよくね?と思うけれど)
たとえばackはPerl、sphinxやblockdiagはPythonなわけだけど、それぞれに応じてcpanやpip使いわけてね!ってのものなんだかびみょーな気持ちはぬぐえないよな。
cpan2portのように言語のパッケージシステムから自動でPortfile生成するのもあって、これのgem用のをつくるのもそんな難しくないけど、じゃあ欲しいかっていうとそうでもないよなあ。