RaspberryPiにrubyとmrubyを導入
ラズパイのバージョンは以下の通り
$ cat /etc/debian_version
10.8
ラズパイにRubyを入れる
bashでwhich rubyしても何も出力されない。ラズパイにrubyが入ってなかったのでrbenvを使って入れる。
$ git clone git://github.com/sstephenson/rbenv.git .rbenv
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
$ cd .rbenv
$ mkdir plugins
$ cd .plugins
$ git clone git://github.com/sstephenson/ruby-build.git
$ cd ~
$ source .bash_profile
次に ruby をインストールするのに必要なモジュールもインストールする。
$ sudo apt-get install autoconf
$ sudo apt-get install libssl-dev libyaml-dev
$ sudo apt-get install bison build-essential
$ sudo apt-get install libreadline6-dev
$ sudo apt-get install libncurses5-dev
rubyのバージョン確認
2.5.8
2.6.6
2.7.2
3.0.0
jruby-9.2.15.0
mruby-2.1.2
rbx-5.0
truffleruby-21.0.0
truffleruby+graalvm-21.0.0
最新のバージョンをインストールする。結構時間がかかる。自分の場合は30分くらいかかった。
$ rbenv install 3.0.0
rubyのバージョン3.0.0を使うことを明示する
$ rbenv global 3.0.0
確認
$ rbenv versions
* 3.0.0 (set by /home/pi/.rbenv/version)
RaspberryPi の GPIO を使う場合は root 権限が必要。
sudo でも ruby が使えるようにシンボリックリンクを張っておく。
$ sudo ln -s ~/.rbenv/shims/ruby /usr/bin/ruby
$ sudo ln -s ~/.rbenv/shims/irb /usr/bin/irb
ラズパイにMRubyを入れる
mrubyを入れる
$ git clone https://github.com/mruby/mruby.git
Cloning into 'mruby'...
remote: Enumerating objects: 133, done.
remote: Counting objects: 100% (133/133), done.
remote: Compressing objects: 100% (77/77), done.
remote: Total 61770 (delta 42), reused 100 (delta 32), pack-reused 61637
Receiving objects: 100% (61770/61770), 16.27 MiB | 1.19 MiB/s, done.
Resolving deltas: 100% (38712/38712), done.
$ cd mruby
$ ls
AUTHORS Makefile benchmark lib src
CODEOWNERS NEWS build_config minirake tasks
CONTRIBUTING.md README.md build_config.rb mrbgems test
Doxyfile Rakefile doc mrblib
LEGAL TODO.md examples mruby-source.gemspec
LICENSE appveyor.yml include oss-fuzz
以下のようにパスの指定。
sudo mkdir /usr/local/mruby
export MRUBY_HOME=/usr/local/mruby
export PATH=$PATH:$MRUBY_HOME/bin
minirakeでビルド。mrbgems/default.gemboxやbuild_config/default.rbなどにmgemを追加している場合はそれもビルドされる。
$ ruby ./minirake
CPP src/array.c -> build/host/src/array.pi
CPP src/backtrace.c -> build/host/src/backtrace.pi
CPP src/class.c -> build/host/src/class.pi
CPP src/codedump.c -> build/host/src/codedump.pi
<中略>
標準では、これでmrubyフォルダにbinフォルダが生成される。
以下コマンドでbinフォルダを/usr/local/mruby/にコピー
sudo cp -rfp bin /usr/local/mruby/
下記の様に実行すると、インタラクティブにmrubyを試すことができる。
$ ./bin/mirb
mirb - Embeddable Interactive Ruby Shell
This is a very early version, please test and report errors.
Thanks :)
> puts "Hello World"
Hello World
=> nil
>
mrbgems/default.gembox に使いたいライブラリを追加。
conf.gem :github => "mattn/mruby-xquote"
conf.gem :github => "matsumoto-r/mruby-sleep"
conf.gem :github => "iij/mruby-io"
conf.gem :github => "iij/mruby-regexp-pcre"
conf.gem :github => "iij/mruby-require"
conf.gem :github => "iij/mruby-dir"
conf.gem :github => "iij/mruby-env"
ビルド
$ ruby ./minirake
ビルド環境をいったんクリーンにしたい場合は、
ruby ./minirake clean
とすると、mruby/bin以下が空になる。
mrbファイルを実行
次にmrubyコマンドでrbファイルを実行・コンパイルしてみる。
$ mkdir ~/raspi_dir
$ cd ~/raspi_dir
# ~/raspi_dirでmrubyコマンドを使えるようにシンボリックリンクを作成
$ sudo ln -s ~/mruby/bin/mruby
$ sudo ln -s ~/mruby/bin/mrbc
$ sudo ln -s ~/mruby/bin/mirb
$ touch hello.rb
$ vim hello.rb
module Hello
class World
def say
puts "Hello World"
end
end
end
hw = Hello::World.new
hw.say
mrubyコマンドでhello.rbを実行できる
$ mruby hello.rb
Hello World
mrbcでコンパイルするとmrbファイルが生成される
$ mrbc hello.rb
$ ls
hello.rb hello.mrb
mruby -bコマンドでmrbを実行できる
$ mruby -b hello.mrb
Hellow World