PL/ParrotとPL/Perl6を試す - PL/ParrotかわいいよPL/Parrot
先日のLL TigerでPL/Parrot & PL/Perl6について喋ってきたのですが、紹介するつもりが逆にユーザーを減らしてしまった
ようなので、せめてもの罪滅ぼしにPL/Parrot & PL/Perl6のインストール手順を書いておきます。PL/Parrot & PL/Perl6って何?という人は僕のLL Tigerの発表を見て下さい。
LTの虎@LL Tigerにて喋ってきました! - 分け入ってもコード
インストールに必要なもの
- PostgresSQL 8.3.8以上
- Parrot 最新版
- Rakudo 最新版
PostgreSQLのインストール
PostgreSQLのインストールについてはそこら中に情報があるので割愛します。インストール方法はバイナリでもソースからビルドでもかまいません。
気をつける点として、バイナリでインストールする場合は必ずdev版を指定して下さい。aptitude search postgresqlとかyum search postgresqlとかしてやると、devの入ったパッケージがあると出てくるので、それを指定してやればOKです。
また、pg_configコマンドにパスが通っていることを確認して下さい。バイナリの場合は問題ないと思いますが、ソースからビルドする場合は/path/to/postgres/binにパスを通しておいてください。pg_configとはPostgreSQLのインストールオプションとかを表示するコマンドです。PL/Parrotインストール時に必要なファイルはpg_configを使って探しているようです。
Parrotのインストール
LL TigerでDan Kogaiさんが紹介していたように、ParrotはRakudoのインストール時に
#perl Configure.pl --gen-parrot
と指定してやれば自動でインストールされます。が、PL/Parrotを使う場合にはParrotを個別にインストールすることをオススメします。
理由は、作者のBlogに
You must first install a recent version of Parrot and Rakudo Perl 6. I develop with Parrot trunk and Rakudo master because I often need very recent changes/bugfixes
http://leto.net/dukeleto.pl/2010/06/rakudo-perl-6-in-your-postgresql-database.html
とあるように、PL/ParrotはParrot、Rakudoの最新版の変更、バグフィックスを利用している為です。
Parrtoの最新版は公式を参照するとsvnで手に入るようです。
Packages & Source Code | Parrot VM
$svn https://svn.parrot.org/parrot/trunk parrot $cd parrot $perl Configure.pl $make $sudo make install
Parrotのビルドでこけることはそうそうないと思いますが、もしこけたらREADMEを見て、それでもだめなら開発者に連絡して下さい。
Rakudoのインストール
こちらも上で述べたように最新版をビルド。Rakudo最新版といえば、噂のRakudo Star。
公式を見るとtar.gzで配布しています。
http://rakudo.org/how-to-get-rakudo
$wget http://github.com/downloads/rakudo/star/rakudo-star-2010.07.tar.gz $tar zxvf rakudo-star -2010.07.tar.gz
ビルドする前にbuild-essential、libicu-dev、subversionが必要なのでインストールしておいて下さい。Ubuntuならこんな感じ
$aptitude install build-essential libicu-dev subversion
無事インストールできたら、Rakudoをビルド
$cd rakudo-star-2010.07 $perl Configure.pl --parrot-config=/path/to/bin/parrot_config $make blizkost-install $sudo make install
-
- parrot-confinオプションはparrot-configコマンドにパスがとっていれば必要ありません。パスが通っていない場合のみ、parrotのインストール先を指定して下さい。
blizkost-installはPerl6でPerl5のモジュールを動かすblizkostをインストールするためのオプションです。これも必要な場合のみ指定して下さい。
Rakudoのビルドもそうそうこけませんが、こけたらREADMEかメールで。
Perl6動くよ!
Rakudoのインストールまで終えるとPerl6を動かすことができます。
$perl6
とやってやるとインタラクティブシェルが起動するので、say helloとかしてみて下さい。
Rakudoをインストールするといくつかモジュールが付いてきます。LWP::Simpleもあるのでネットから取得することもできます。他のライブラリは
$ls /usr/local/lib/parrot/2.6.0/language/perl6/lib
ってやると一覧を見れます。インストール先を変えた場合は各自パスを読みかえてください。
githubにもちょこちょこPerl6のモジュールが上がってきているので、興味がある人は見てみて下さい。
PL/Perl6のインストール
ようやく本題です。
これも最新版を利用しましょう。まだまだ開発途上なので。
git clone http://github.com/leto/plparrot.git plparrot
次にPerl6のPBCの場所を環境変数で指定してあげます。PBCとはParrot VMのバイトコードファイルのことです。これを指定してあげないと、PL/ParrotをインストールすることはできてもPL/Perl6を動かそうとすると、インタープリターが見つからないというエラーが出て実行することができません。
$export PERL6PBC=/usr/local/lib/parrot/2.6.0/language/perl6/perl6.pbc
PERL6PBCを指定したら、PL/Parrotのビルド
$cd plparrot $make $make install
以上でインストールは終わりです。
PL/Parrot & PL/Perl6をPostgreSQL上で使えるようにする
PostgreSQLで各PL言語を使えるようにするには
$createlang {PL言語名} {DB名}
というコマンドを実行してあげる必要があります。その際に指定したDBのcreatelang権限を持っている必要があります。個別に指定することもできますが、ここではテスト用にスーバーユーザーとDBを新たに作成しましょう。
$createuser test Shall the new role be a superuser? (y/n) y $createdb -O test testdb
ユーザーとDBを作成したらcreatelangです。自分でやってもいいのですが、PL/Parrot、PL/Perl6他を一度にcreatelangしてくれるスクリプトが同梱されているのでそれを利用します。
$psql -d testdb -U test -f `pg_config --sharedir`/contrib/plparrot.sql
- dでDBを、-Uでユーザーを、-fで実行するファイルを指定しています。-fの引数ではpg_configコマンドでPostgreSQLのshareディレクトリを取得しています。もちろん直接パスを記述しても大丈夫です。
お疲れ様です
ここまでやればPL/Parrot & PL/Perl6を使うことができます。
$psql -d testdb -U test -C "CREATE FUNCTION hello() RETURNS text AS $$ return 'hello' $$ LANGUAGE plperl6; SELECT hello();"
という、LL Tigerで紹介したワンライナーを実行してみて下さい。
LANGUAGE plparrot
としてやればParrotのコードを動かすこともできます。
PL/Parrot & PL/Perlについては以下のURLを参考にして下さい。
http://pl.parrot.org/
GitHub - leto/plparrot: Embed Parrot+Rakudo into PostgreSQL
Google グループ
とはいえ、まだまだ情報は少ないです。PL/Parrotを使ったら是非情報を発信して下さい!
PL言語そのものについてはPostgreSQLの公式ドキュメントが充実しています。ドキュメントが充実しているのもPostgreSQLのいいところです。
第42章 手続き言語
Enjoy PL/Parrot & PL/Perl6!