こんにちはー。初めまして、yuikと申します。
えー、みなさん、いかがお過ごしでしょうか。自分は暑すぎてバテてます...😅
Ruby Hack Challenge Holiday #5に参加してきましたので!やってきたことを記事にまとめました!!
作業する環境
VPSのUbuntu18.04にsshでつないで作業
いつもはvagrant+VirtualBoxでUbuntu環境を構築しているのですが、諸事情により今回会場に持ってきたPCにvagrant+VirtualBoxでUbuntu環境を構築できていなかったので、VPSを使いました(VPSを好奇心により契約していて助かった!!
この記事で関係する言語 : Ruby,C
#今回のRHCでやったこと
1.MRI のソースコードを clone
2.MRI のビルド、およびインストール
3.ビルドした Ruby でプログラムを実行
4.バージョン表記を変更してみよう
です。
*MRIとは、 Matz Ruby Interpreter のこと
#まずはじめに、
Ubuntuにgit、ruby、autoconf、bison、gcc (or clang, etc)、make が入っていなかったので、
$ sudo apt-get install git ruby autoconf bison gcc make zlib1g-dev libffi-dev libreadline-dev libgdbm-dev libssl-dev
この↑コマンドで一気にインストールする
インストールできたら
#MRI のソースコードを clone
手順
1.$ mkdir workdir
~/workdirを作成します
2.$ cd workdir
~/workdirに移動します
3.$ git clone https://github.com/ruby/ruby.git
このコマンドを実行したら、~/workdir/ruby にソースコードが clone されます
##MRI のビルド、およびインストール
1.$ cd workdir/
~/workdir に移動します
2.$ cd ruby
~/workdir/ruby に移動します
3.$ autoconf
configure スクリプトの生成
4.$ cd ..
~/workdirに移動します
5.$ mkdir build
~/workdir/build を作成します
6.$ cd build
7.$ ../ruby/configure --prefix=$PWD/../install --enable-shared
このコマンドにどんな意味があるのかわかってないです...申し訳ない😢
8.$ make -j
ビルドします。-j は並列にコンパイルなどを行うオプションです。
9.$ make install
この時点で、../install、つまり ~/workdir/install に諸々インストールできました。
##ビルドした Ruby でプログラムを実行してみよう!!
###miniruby で実行しよう
まずはじめに ~/workdir/build の中に$ touch test.rb
でtest.rbファイルを作ります。
Hello Worldのコードが書けたら./miniruby test.rb
で実行
今回ビルドしたRubyで、Hello Worldのプログラムが実行できた!!🎉🎉🎉
##Rubyのソースコードをいじってみよう
####Rubyのソースコードをいじってみようってことで、まずは
~/workdir/build内のmain.cをvimで開いて、最初のmain関数のところに printf("begin\n");
と書く
書いたら make run (実行) させる、
できた!!
いま何をやったかというと、make runした時にはじめにbeginと出力させてから改行して、RubyのHello Worldのコードを実行させるという処理を書きました!!
##今回覚えた豆知識的なもの
例えば~/workdir/rubyに今いるとする、それで~/workdirに移動したくなったらcd ..
とコマンドを打つと
簡単に~/workdirに移動できる!!
こんな感じでcd build
って打つだけで、簡単に~/workdir/buildに移動できる!!自分はいつも、cd ~/workdir/build
みたいに全部打ち込んでました...。(この歴史的発見をした感、伝われ..!!)
####mvコマンドを覚えました!!
$ mv version.c ../build/
でversion.cを~/workdir/Rubyから~/workdir/buildに移動させる。
すごい..~/workdir/buildでlsして確認すると移動できとる..!前に教材で勉強したけど、覚えられてなかったんですよねー、コマンド系って実際必要になってから使う場面が来ると覚えられる気がします((
####tabキーの使い方を覚えました!!
例えば~/workdir/rubyのなかのmain.cファイルをvimで編集したいってなったとします、いつもはvim main.c
と打っていたのですが、vim m
と打ってtabキーを押すと
こんな感じで、最初にmがつくファイルの候補がいくつか出てくる!!これは歴史的大発見だ!!
####このような便利なコマンドを、教えていただきました! ありがとうございました!!
#今回のまとめ
Rubyをビルドできたことや自分のRubyを作れたことに感動しました。
初歩的なコマンドとかの使い方を知らなかったのですが、詳しく教えていただいて、すごく勉強になりました!
ありがとうございました!!
####記事について
https://github.com/ko1/rubyhackchallenge/blob/master/JA/2_mri_structure.md ← こちらの記事を引用させていただいている部分があります。
引用部分と自分の言葉の部分が混ざってしまいました。イベントが終わった後にko1さんに聞きに言ったら、今回はこのままでいいよ、とko1さんに言っていただきましたのでこのまま投稿します。次からは引用する部分と自分の言葉の部分を分けたいと思います。
#####初めて記事を書いたので、読みにくい部分やわかりにくかった部分もあると思いますが、最後まで読んでいただきありがとうございました!!
####先に謝っておきますが、間違ったことを書いていたら本当に申し訳ありません!!!
#####間違ったことを言っていても、許してください!!!
#####今回学んだことを生かして、プログラミングを頑張ります!!