| ホストOS | Windows 7 32bit |
| ゲストOSの元 | centos-6.6-x86_64-minimal.iso |
| 仮想化ソフトウェア | Portable VirtualBox 4.3.6 |
| PostgreSQL 9.5dev | 公式サイトのFile Browser → snapshot → dev |
| PL/R 8.13.0.6 | GitHubのプロジェクトページから |
今回、仮想マシンのネットワーク設定はNAT&ポートフォワーディングで、ホスト側のSSHとPostgreSQLへのリクエストを仮想側に転送しています。SSHは特に設定不要でつながった一方、PostgreSQLは、VirtualBoxのホスト機のアドレス10.0.2.2をpg_hba.confへ追加することが必要らしく、気付くまで少し手間取りました。この経過もそのうち別記事にします。
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm yum -y install R
wget https://github.com/jconway/plr/archive/master.zip unzip master.zip # extracted into plr-master mv plr-master plr mv plr/ postgresql-9.5devel/contrib/ cd postgresql-9.5devel/contrib/plr make make install
↓ テスト用にランダムな模様をプロットしてPNGファイルに出力するストアド関数。本体にRのコードをそのまま書きます。出力先の指定(png関数の引数)をファイル名だけにすると、PostgreSQLのデータディレトリ /usr/local/pgsql/data 下にPNGができます。コードの下は出力結果の再掲。
実際のテストでは、あらかじめホストOSとの共有フォルダをVirbualBoxで設定し、そこへの書き込み権限をユーザpostgresに与え、共有フォルダへのシンボリックリンクを/usr/local/pgsql/data 下に置いて出力先ディレクトリにしました。これで、ゲストOS上でPL/Rストアド関数を実行すると、結果のファイルがホストOS上に出来ます。詳細は、VirtualBoxのネットワーク設定の経過を別記事にする中で書きます。