VM 환경에 SciRuby 설치 및 터치

4818 단어 scirubyVagrantRuby
설치부터 샘플을 이동하는 곳까지 설명하고 싶습니다.
SciRuby
http://sciruby.com/

vagrant 및 ubuntu 설치


Mac OS X Lion 등에 SciRuby를 설치하려면 ATLAS와 LAPACK의 로컬 컴파일 주위에서 고생합니다.VM에 ubuntu를 설치하고 구축하는 것이 더 쉽습니다.
Vagrant 및 VirtualBox를 활용하여 사전 준비를 단순화합니다.사전에 하나하나 설치하세요.
Vagrant
http://vagrantup.com/
VirtualBox
https://www.virtualbox.org/
$ vagrant box add ubuntu4sciruby https://github.com/downloads/roderik/VagrantQuantal64Box/quantal64.box
$ vi Vagrantfile 
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant::Config.run do |config|
  config.vm.define :ubuntu4sciruby do |ubuntu4sciruby_config|
    ubuntu4sciruby_config.vm.box = "ubuntu4sciruby"
    ubuntu4sciruby_config.ssh.forward_x11 = true
    ubuntu4sciruby_config.vm.customize do |vm|
      vm.memory_size = 2048
      vm.name = "ubuntu4sciruby"
    end
  end
end
$ vagrant up ubuntu4sciruby
$ vagrant ssh ubuntu4sciruby 

루비 설치

$ sudo apt-get update 
$ sudo apt-get install curl
$ curl -L https://get.rvm.io | bash -s stable --ruby
$ rvm install ruby-1.9.3-p194
$ rvm use ruby-1.9.3-p194@SciRuby --create
$ mkdir workspace
$ echo rvm use ruby-1.9.3-p194@SciRuby > workspace/.rvmrc
$ cd workspace

설치 시나리오

$ sudo apt-get -y install libatlas-base-dev libgtk2.0-dev librsvg2-dev libcairo2-dev build-essential libgsl0-dev

$ gem install nmatrix
$ gem install sciruby
...
(インストール失敗)
Fetching: gsl-1.14.7.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing sciruby:
    ERROR: Failed to build gem native extension.
...
matrix_complex.c:1523:12: error: conflicting types for 'gsl_matrix_complex_equal'

現状、名前がコンフリクトしてしまい、インストール出来ないので、少々アドホックですが、以下のようにソースを書き換えて別途gslをインストールします。

$ sudo apt-get install -y subversion
$ svn checkout http://rb-gsl.rubyforge.org/svn/trunk/rb-gsl
$ cd rb-gsl/
$ vi ext/vector_complex.c
-static int gsl_vector_complex_equal(const gsl_vector_complex *v1,
+static int xgsl_vector_complex_equal(const gsl_vector_complex *v1,

-  ret = gsl_vector_complex_equal(v1, v2, eps);
+  ret = xgsl_vector_complex_equal(v1, v2, eps);

$ vi ext/matrix_complex.c
-static int gsl_matrix_complex_equal(const gsl_matrix_complex *m1,
+static int xgsl_matrix_complex_equal(const gsl_matrix_complex *m1,

-  ret = gsl_matrix_complex_equal(m1, m2, eps);
+  ret = xgsl_matrix_complex_equal(m1, m2, eps);

$ vi Rakefile   
-require 'rake/gempackagetask'
-require 'rake/rdoctask'
+require 'rubygems/package_task'
+require 'rdoc/task'

-Rake::GemPackageTask.new(spec) do |pkg|
+Gem::PackageTask.new(spec) do |pkg|

$ rake gem
$ gem install pkg/gsl-1.14.7.gem

$ gem install statsample-optimization 
$ gem install sciruby

실행 예

$ git clone git://github.com/clbustos/statsample.git
$ cd statsample/examples/
$ ruby correlation_matrix.rb  
Analysis 2012-11-18 10:53:24 +0000
= Statsample::Bivariate.correlation_matrix
  Correlation Matrix
+---+-------+-------+-------+-------+
|   |   a   |   b   |   c   |   d   |
+---+-------+-------+-------+-------+
| a | 1.000 | -.009 | .015  | .008  |
| b | -.009 | 1.000 | -.010 | -.047 |
| c | .015  | -.010 | 1.000 | .023  |
| d | .008  | -.047 | .023  | 1.000 |
+---+-------+-------+-------+-------+

드로잉 주위 설정


SVG를 사용하여 드로잉을 표시할 수 있습니다.
$ sudo apt-get -y install xdg-utils desktop-file-utils
$ sudo update-desktop-database
$ sudo apt-get -y install xorg gnome-core gdm gnome-applets gnome-system-tools gnome-utils ubuntu-artwork compiz-gnome sysv-rc-conf gconf-editor inkscape
$ sudo vi /usr/share/applications/defaults.list
image/svg+xml=inkview.desktop
$ sudo cp /usr/share/applications/{inkscape.desktop,inkview.desktop}
$ sudo vi /usr/share/applications/inkview.desktop  
%s/inkscape/inkview/g

드로잉 예제 실행

$ ruby histogram.rb
ヒストグラム

여러분 수고하셨습니다.


SciPy와 matplotlib 등 라이브러리의 충실함에 따라 과학 분야의 사람들이python을 좋아하는 경향이 있고 라이브러리도 발전하는 생태계가 완성된 것 같지만 루비도 그렇게 기뻐한다.
루비 관련 2012년도 보조금 대상에도 선정됐다.
http://www.ruby.or.jp/ja/news/20121003_2.html
다음에 실제 사용법을 소개하고 싶습니다.

좋은 웹페이지 즐겨찾기