はじめに
2020/7/7 時点で Ruby の環境構築をしてみたので、書き起こします。けっこうたくさんの方が記事にしていらっしゃいますが、自分でアウトプットするとそれだけでも勉強になるので。
導入環境
- Ubuntu 20.04 LTS (64bit)
- Windows 10 Virtual Box内にインストールしています。
(注意)同じような Ruby バージョン管理ツールに、「RVM」がありますが、rbenv と RVM は非互換なので、「RVM」が入っていない環境を準備します。
入れるもの
複数のRubyバージョンの管理ができる rbenv というツールも一緒に入れます。複数のRubyバージョンを入れられるだけでなく、プロジェクト毎に使用するRubyのバージョンを指定することができるようになります。
また、rbenv のオプション扱い(?)ですが、ruby-build も導入します。
- rbenv 1.1.2-30-gc879cb0
- ruby-build
- Ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]
※どちらも、2020/7/7 時点で最新の安定バージョン、だと思います。
大きな流れ
流れはこんな感じです。
0. git をインストールしておく。
1. 事前に必要なツール、パッケージを導入する。
2. rbenv のインストールと環境設定
3. ruby-build のインストール
4. Rubyのインストール
手順0. git のインストール
git 自体は環境構築とは直接関係がないのですが、rbenv, ruby-build のインストールの際、github からダウンロードします。このため、git をあらかじめ入れておいてください。
インストール方法は、こちら に書かれていますが、apt-get
コマンド一つで完了です。
※必要に応じて、sudo
を頭につけてください。
apt-get install git
手順1. 必要なツール、パッケージの導入
詳しくはこちらに書かれていますが、英語なので、、、
rbenv+ruby-build で必要な Ruby のバージョンをダウンロード、インストールする際、環境の違いでコンパイルエラーが起こったりする場合がある、とのことで、少なくとも下記パッケージは事前に入れておいた方が良いよ、ということです。
一気に入れる場合は、下の長いコマンドをコピペして実行してください。
※必要に応じて、sudo
を頭につけてください。
apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm6 libgdbm-dev libdb-dev
「libgdbm6」が使えない環境の場合は、「libgdbm5」でやってみて、とのことです。
それぞれのパッケージが何か、については、自分でも調べてみてもよく分からないものが多い、というより、必要になって使う場面にならないと分からなそうなので、興味がある方はそれぞれ調べてみてください。
【補足】事前に必要なパッケージの一覧(自分なりに調べてみた)
パッケージ名 | これって何? | 自分の環境に個別に入れてみたときの反応 |
---|---|---|
autoconf | configure スクリプトの自動生成ツール | |
bison | パーサジェネレータの一種。コンパイルのときに使われるみたい | |
build-essential | 名前の通り、開発に必要なビルドツール一式が入ってるみたい。 | |
libssl-dev | SSL関連の開発用ツールキット | |
libyaml-dev | YAML関連の開発用ライブラリ | |
libreadline6-dev | GNU readline のライブラリらしいが、何の機能かよく分からない・・・ | libreadline-dev をすすめられ、libncurses-dev が依存でインストールされました |
zlib1g-dev | 圧縮(gzip, pkzip )に関するライブラリ | |
libncurses5-dev | ncurses関連の開発用ライブラリ。端末に依存しない形式でテキストユーザインタフェース (TUI) を作成するためのAPIを提供するそうです | |
libffi-dev | Foreign Function Interface に関するライブラリ。他の言語で書かれたメソッドを呼び出す際とかに使われるんだと思います。 | |
libgdbm6 | GNU dbm データベースルーチン (ランタイム版) | |
libgdbm-dev | GNU dbm データベースルーチン (開発用ファイル) | |
libdb-dev | Berkeley Database Libraries [development] | → libdb5.3-dev が追加でインストールされました。 |
手順2. rbenv のインストールと環境設定
2-1. rbenv のインストール
rbenv のインストールは、git clone
を使って github からダウンロードし、ホームディレクトリの.rbenv
フォルダーに設置します。
git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
2-2. rbenv の環境設定1 パスを通す
rbenv の環境設定として、~/.rbenv/bin
へのパスを通します。公式だと、Ubuntu desktop 環境の場合は、.bashrc にパス設定を追加するように、と記載されています。ので、下のようにコマンド実行すればOKです。
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
【補足】.bashrcではなく、.profile に書く場合
.profile にパス設定を記述する場合は、.profile をエディタで開いて、下記コードを追記して下さい。
if [ -d "$HOME/.rbenv/bin" ] ; then
PATH="$HOME/.rbenv/bin:$PATH"
fi
2-3. rbenv の環境設定2 rbenv init - を .bashrc に入れる。
rbenv init -
を .bashrc 内で実行するように、下記コマンドを実行します。
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
その後、設定を反映させます。
source ~/.bashrc
【補足】rbenv init - を .bashrc に入れることについて
※ .bashrc に入れると、なにか変更して source ~/.bashrc
で設定反映する度に、パスが2重、3重と追加されてしまうんですよね、、、かといって.bashrc を変更したのに、source ~/.profile
するのもなんか変ですし。
手順3. ruby-build のインストール
ruby-build をインストールします。ruby-build も github 上に公開されていますので、rbenv と同じように、git clone
でダウンロードします。設置する場所は、~/.rbenv/plugins/
ディレクトリの下です。
git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
これで、rbenv install
コマンドが使えるようになります。
手順4. rubyのインストール
rbenv install
コマンドで、ruby の各バージョンのインストールができるようになっています。
まず、rbenv install -l
で、インストールできる安定バージョンを確認します。
$ rbenv install -l
2.5.8
2.6.6
2.7.1
jruby-9.2.12.0
maglev-1.0.0
mruby-2.1.1
rbx-5.0
truffleruby-20.1.0
Only latest stable releases for each Ruby implementation are shown.
Use 'rbenv install --list-all' to show all local versions.
通常版Ruby の 2020/7/7 時点での最新安定版は 2.7.1 のようなので、そちらをインストールする場合は、バージョンを指定します。
rbenv install 2.7.1
インストール後、通常使う ruby のバージョンとして設定するには、rbenv global
を使います。
rbenv global 2.7.1
最後に、インストールしたrubyのバージョンをshimsに反映させるために、rbenv rehash
を実行します。今後、ruby の別バージョンを入れたり、gem を追加したりした時は、rbenv rehash
を行った方がいいそうです。
rbenv rehash
エラーが出ていなければ、これで ruby の実行ができるようになっています。
'ruby -v' でバージョンの確認ができます。
$ ruby -v
Ruby 2.7.1p83 (2020-03-31 revision a0c7c23c9c) [x86_64-linux]
また、irb
を使って "Hello, World!" を表示させてみます。
$ irb
irb(main):001:0> puts "Hello, World!"
Hello, World!
=> nil
irb(main):002:0>