- 2011-12-31 (土) 19:03
- コンピュータ
perlbrew+cartonとかとっても便利なんですが、例えばそれで作ったCLIツールとかにパスだけ通しても、carton execするためにcdしなきゃだったりなんだかんだめんどくさいなーと思って、ライブラリのパスを環境変数で渡して、実行するperlをフルパスで指定してあげる感じにしたらいいかもと思いました。
よく考えるとrubyでもおんなじ感じでできるなーと思って、じゃあpythonとかnode.jsもいんじゃね?ということで色々それぞれの言語の使い方調べて、ある程度統一的に使える様にしてみたのでひとまず公開しました。
使い方
例えば、今使ってるperlのsite_perlには何も入れたくないけど、ikachanを使いたいとします。まずikachan用のディレクトリを作ります。
$ llenv setup perl perl-5.14.2 ikachan
これで~/.llenv/apps/ikachanというディレクトリができて、その中に.llenvというファイルができます。
$ cat ~/.llenv/apps/ikachan/.llenv
export LLENV_LL=perl
export LLENV_LLPATH='$PERLBREW_ROOT/perls/perl-5.14.2/bin/perl'
export LLENV_BUNDLELIBPATH='$LLENV_APPDIR/ikachan/local/lib/perl5'
export LLENV_BUNDLEPATH='$LLENV_APPDIR/ikachan/local/bin'
ikachanディレクトリにikachan入れましょう。cpanm -l extlibで入れた場合は、上記のLLENV_BUNDLELIBPATHとかのlocalの部分を書き換えて下さい。
$ cd ~/.llenv/apps/ikachan
$ carton install App::Ikachan
当然ですが、このままではPATHも通っていないので実行できません。
$ ikachan
-bash: ikachan: command not found
そこでllenvで実行してみます。
$ cd ~/.llenv/apps/ikachan
$ llenv exec ikachan
Missing mandatory parameter: irc_server at /home/riywo/.llenv/apps/ikachan/local/bin/ikachan line 38.
実行できましたね!でも、これだとcartonと同じでcdしないとダメなので、どこでも実行できるようにPATHの通っている~/.llenv/binに入れましょう
$ llenv install ikachan
$ which ikachan
~/.llenv/bin/ikachan
$ ikachan
Missing mandatory parameter: irc_server at /home/riywo/.llenv/apps/ikachan/local/bin/ikachan line 38.
うまくいきました!どうなってるかというと、
$ cat ~/.llenv/bin/ikachan
#!/bin/sh
export PERL5OPT="-Mlib=$LLENV_APPDIR/ikachan/lib"
export LLENV_LLPATH="$PERLBREW_ROOT/perls/perl-5.14.2/bin/perl"
export LLENV_SCRIPT_PATH="$LLENV_APPDIR/ikachan/local/bin/ikachan"
exec $LLENV_LLPATH $LLENV_SCRIPT_PATH "$@"
という感じで、単純なshell scriptが実体です。
これはperlの例ですが、ruby/python/nodeでも多分なんとなく動きます。
$ llenv setup node v0.6.5 coffee
$ cd ~/.llenv/apps/coffee
$ npm install coffee
$ llenv install coffee
$ coffee
もちろん、こういうツールをインストールするためだけのツールじゃなくて、appsに自分で作ったいろんなツールもおんなじ様にイケルと思います。
アイデアは半年くらい温めていて、12/29になんとなくやろうと思いついて1日くらいで書き上げたツールなのでまだまだいい加減なツールですが、これからブラッシュアップしていこうと思います。
細かい仕組みの解説とかはまた今度!
- Newer: 2011年の振り返りと、2012年やること
- Older: perlbrew+Carton+Amon2+Test::mysqldみたいな
コメント:0
トラックバック:0
- このエントリーのトラックバックURL
- http://blog.riywo.com/2011/12/31/190332/trackback
- Listed below are links to weblogs that reference
- LLをお手軽に使うllenvというのを作りました from As a Futurist...

