🔌

[Ruby] Rubyのインストール(OSあれこれ)

2022/05/02に公開

はじめに

Rubyのインストール方法を、様々なOSについてまとめています(いきます)。ここに載せているのは、すべてクリーンインストール直後のOSで動作確認したものです。(逆に言うと、動作確認してないものはまだ載せていません。)

Rubyを触ってみたいな、と思っている方は、ぜひ手順をなぞってみて、インストールしてみてください!

Linux/UNIX系OSについては、rbenvが便利で好きなので、本記事では、rbenvを使った具体的なRubyのインストール手順を載せています。
(本記事のモチベーションは、注意を払うところに書いたとおりです。)

また、せっかくなので、本記事のほとんどで使うrbenvに関して、以下についてもおまけで書いています:

OSごとの大雑把なRubyインストール方針まとめ

  • WindowsRuby公式のインストールページで案内されているように、RubyInstallerを使えばいいです。

  • Linux/UNIXrbenvが使いやすくておすすめです。

    次のステップで作業をしていきます:

    1. rbenvをインストール
    2. rbenvを使ってRubyをインストール

    OSについては、以下について記載しています:

    • ベアメタル(まだ)
    • WSL2:Windows Storeで無料で手に入る公式のもの中心
    • AWS EC2:無償利用可能なAWS公式AMIのもの中心
  • macOS(まだ):Macほしい。rbenvが使えるので、READMEのインストールの項を参考にしてください。

    もうちょっと丁寧な補足

    READMEの

    1. Set up rbenv in your shell.
    rbenv init
    

    あたりからは、本記事のLinux/UNIX系統でごちゃごちゃ説明しているところの「rbenvのインストール > rbenv-installerの実行・rbenv-doctorで状態確認」のコード例の、PATHの設定と同じ流れのはずです。

    ただし、

    • Bashでは無いと思うので、.bash_profileに書き込む例は参考にしないでください。.profileかな?持ってないから知らん。
    • Rubyのコンパイル時に、Debianでいうところのlibssl-dev, zlib1g-devに相当するライブラリが必要になるかもです。Rubyコンパイル時のエラーメッセージを読んでください。(本来それを避けるためのが本記事の主目的ですが...持ってないからわからん。)

注意を払うところ

Linux/UNIX系OSでは、Rubyのインストールに関係している部分では、以下がOSごとに異なっています。

  • シェルの種類(Bash, zsh, ...)
  • rbenvのPATH設定を書き込む先は~/.profileなのか~/.bash_profileなのか
    • 基本的にどちらか一方だけが採用されているはずなので、ホームディレクトリでls -aして存在している方を使えばよいです
  • パッケージマネージャの種類(apt, yum, zypper, ...)
  • 初期状態で入っているツール、ライブラリ(git, make, ...)
  • Rubyコンパイル時に必要になるライブラリパッケージの名前(libssl-dev or openssl-devel, ...)

この辺の差異を毎度考えずに済むようにするのが、本記事の一番のモチベーションです。
本記事に載っていないOSで近いものを参考にする場合は、上記のポイントがそのOSではどうなっているかを確認して対応してください。

その他には、

  • インストールするRubyのバージョン例は、記事執筆時点(2022/05/01)の最新である3.1.2としています。各自適当に変更してください
  • (Rubyではなく)rbenvのインストールの際、ソースビルドではなくrbenv-installerを使ったインストールを行います
    • ちょっとわかりづらいですが、rbenvのREADMEのBasic GitHub Checkoutのソースビルドの手順説明の冒頭に、「オートマチックなインストールにrbenv-installerが使える」旨が書いてあります。
  • rbenv installのあとのバージョン指定は、便利なことにTab補完が効きます。連打しましょう
    • もっと言うと、rbenv globalrbenv localも、Tab補完が効きます
  • rbenv installコマンドに-vオプションをつけて実行しています
    • デフォルトだと静かなまま割と待つことになるので、「あれ、sshセッション切れた?」などの不安が湧いてくるからです

初心者の方へ:長いので以下に畳みます。

初心者の方へ
  • コマンド例$ foo bar --baz$プロンプトですので、実際に入力するのはfoo bar --bazの部分だけです。

    • 幾つか参考のために、コマンドの出力まで掲載しています。$から始まる1行分のコマンド部分だけ入力&Enter押下で実行してください。
  • <コマンド> --versionは、そのコマンドのインストールが成功したかどうかを確認するために打っています。(--versionオプションは、無害かつ基本的にどのコマンドも備えているため、この用途でもよく使われています。)

    インストールのタイミングによってコマンドの実際のバージョンが本記事と異なる可能性がありますが、そこは気にしないでください。

    • ちなみに、コマンドがインストールされていない場合は、以下のような「コマンドが見つかりません」系のエラーが出てきます:

      Ubuntu 20.04の場合
      $ foo --version
      
      Command 'foo' not found, did you mean:
      
        command 'goo' from deb goo (0.155+ds-1)
        command 'fio' from deb fio (3.16-1)
        command 'fop' from deb fop (1:2.4-2)
      
      Try: sudo apt install <deb name>
      
  • Linux/UNIX系OSのパッケージマネージャ(yum, apt, zypperなど)は、インストールコマンド(例:sudo yum install)を使う前に、必ずパッケージインデックス情報(雑に言えば、どこからどうやってパッケージを引っ張ってくるかの情報)をアップデートコマンド(例:sudo yum update)で最新のものにしておきましょう

    • 一種のお作法みたいなものです[3]

    • 厳密にはinstall前には必須ではないですが、負荷が心配などでなければ、やらない意味は殆ど無いです。

      • upgrade前には必須です[4]
    • ちなみに、Debian系のaptコマンドはapt-getなどのapt-をまとめたコマンドです。ですので、manコマンドで詳細を見る場合は、例えばapt updateの裏側はapt-get updateなのでman apt-getする...という風にします。
      どのサブコマンド(updateなどの部分)がどのapt-に対応するのかは、man aptに書いてあります。

Windows

Azure VMのWindowsで動作確認をしたものです(2022年5月4日時点)。

Windows 10

作業例のユーザアカウント名はshuichiにしています。

OS情報

エディション:Windows 10 Pro
バージョン:21H2
OSビルド:19044.1645


設定 > システム > 詳細情報

RubyInstallerのダウンロード・セットアップウィザードの起動

  1. RubyInstallerのページに行き、『Download』をクリック

  2. WITH DEVKIT』の一番上におすすめされている「Ruby+Devkit」のリンクをクリック(例では64bit PCなので、x64版をダウンロード)

  3. ダウンロードしたrubyinstaller-devkit-<バージョン>-x64.exeを実行する

Ruby(+MSYS2, MINGW)のインストール

セットアップウィザード

  1. Ruby <バージョン>-x64-ucrt with MSYS2 License Agreement

    「I accept the License」を選択して、「Next」ボタンをクリック

  2. Installation Destination and Optional Tasks

    デフォルトのままでよいです。以下を確認して、「Install」ボタンをクリック

    • インストールフォルダ:(例:C:\Ruby31-x64
    • 「Add Ruby executables to youe PATH」にチェック
    • 「Associate .rb and .rbw files with this Ruby installation」にチェック
    スクリーンショット

  3. Select Components

    デフォルトのままでよいです。以下を確認して、「Next」ボタンをクリック

    • 「Ruby-<バージョン> base files」にチェック
    • 「Ruby RI and HTML documentation」にチェック
    • 「MSYS2 development toolchain <日付>」にチェック
    スクリーンショット

  4. インストールが始まります。Installing画面で進捗を見守りましょう

  5. 完了画面では、「Run 'ridk install' to set up MSYS2 and development toolchain.」にチェックが入っていることを確認し、「Finish」ボタンをクリック

    スクリーンショット

RubyInstallerでRuby(+MSYS2, MINGW)のインストール

コマンドプロンプトでRubyInstallerが起動します。

  1. 「Which components shall be installed? ...」で、何も入力せずにそのままEnterキーを押下(1, 3が選択された状態で実行されます)

    スクリーンショット

  2. 色々な処理が走るので、待ちます

    スクリーンショット

    文字化けが起きた場合

    インストール処理時に、Windowsのシステムロケールの設定が日本語環境になっていなかった場合、出力に文字化けが起こります
    が、インストール処理に影響はないので、ひとまずは無視して続行して大丈夫です。

    (とはいえ、Rubyを使う際にまた文字化けに悩むことになるので、このあと設定の変更を行ったほうが良いでしょう。)

    ちなみに、コマンドプロンプトの文字コード設定は、コマンドプロンプトのタイトルバー部分を右クリック > Properties(プロパティ)> 『現在のコードページ』から確認できます。
    「932 (ANSI/OEM - 日本語 Shift-JIS)」以外だと、文字化けが起こります。

  3. コマンドプロンプトが大人しくなって、表示をよく読んでみてみると、インストールに成功して、1で見た選択肢が再度出てきていることがわかります。
    何も入力せずにそのままEnterキーを押下します(何も選択されていない状態で実行->RubyInstallerが終了します)

    スクリーンショット

Linux/UNIX系OS

ベアメタル

まだ。今後掲載予定


WSL2

[WSL2] Ubuntu 22.04 LTS

作業例のユーザ名はubuntuにしています。

OS情報

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04 (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

rbenvのインストール

  • aptのリポジトリ情報の更新

    $ sudo apt update -y
    # (出力は省略)
    
  • rbenv-installerの実行・rbenv-doctorで状態確認

    $ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
    # (出力は省略)
    
    # PATHの設定
    $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.profile
    $ echo 'eval "$(rbenv init - bash)"' >> ~/.profile
    $ source ~/.profile
    
    # rbenv-doctorで状態確認
    $ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-doctor | bash
    Checking for `rbenv' in PATH: /home/ubuntu/.rbenv/bin/rbenv
    Checking for rbenv shims in PATH: OK
    Checking `rbenv install' support: /home/ubuntu/.rbenv/plugins/ruby-build/bin/rbenv-install (ruby-build 20220426)
    Counting installed Ruby versions: none
      There aren't any Ruby versions installed under `/home/ubuntu/.rbenv/versions'.
      You can install Ruby versions like so: rbenv install 3.1.2
    Checking RubyGems settings: OK
    Auditing installed plugins: OK
    
    $ rbenv --version
    rbenv 1.2.0-14-gc6cc0a1
    

Rubyのインストール

  • build-essentialのインストール(Rubyのコンパイルに必要)

    $ sudo apt install -y build-essential
    # (出力は省略)
    
  • libssl-dev, zlib1g-devのインストール(Rubyのコンパイルに必要)

    $ sudo apt install -y libssl-dev zlib1g-dev
    # (出力は省略)
    
    「Daemons using outdated libraries」の画面が表示された場合

    Tabキーを押して、<Ok>にカーソルを合わせて、Enterキーを押せばよいです。(本番環境などの大事な環境では、しっかり表示内容をチェックしてください。)

  • Rubyのインストール

    $ rbenv install -v 3.1.2
    # (中略)
    Installed ruby-3.1.2 to /home/ubuntu/.rbenv/versions/3.1.2
    # (以後省略)
    
    # rubyコマンドで起動するバージョンを設定
    $ rbenv global 3.1.2
    
    $ ruby --version
    ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]
    

[WSL2] Kali Linux 2022.1

作業例のユーザ名はkaliにしています。

OS情報

$ cat /etc/os-release
PRETTY_NAME="Kali GNU/Linux Rolling"
NAME="Kali GNU/Linux"
ID=kali
VERSION="2022.1"
VERSION_ID="2022.1"
VERSION_CODENAME="kali-rolling"
ID_LIKE=debian
ANSI_COLOR="1;31"
HOME_URL="https://www.kali.org/"
SUPPORT_URL="https://forums.kali.org/"
BUG_REPORT_URL="https://bugs.kali.org/"

rbenvのインストール

  • aptのリポジトリ情報の更新

    $ sudo apt update -y
    # (出力は省略)
    
  • gitのインストール

    $ sudo apt install -y git
    # (出力は省略)
    
    $ git --version
    git version 2.35.1
    
  • rbenv-installerの実行・rbenv-doctorで状態確認

    $ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
    # (出力は省略)
    
    # PATHの設定
    $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.profile
    $ echo 'eval "$(rbenv init - bash)"' >> ~/.profile
    $ source ~/.profile
    
    # rbenv-doctorで状態確認
    $ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-doctor | bash
    Checking for `rbenv' in PATH: /home/kali/.rbenv/bin/rbenv
    Checking for rbenv shims in PATH: OK
    Checking `rbenv install' support: /home/kali/.rbenv/plugins/ruby-build/bin/rbenv-install (ruby-build 20220426)
    Counting installed Ruby versions: none
      There aren't any Ruby versions installed under `/home/kali/.rbenv/versions'.
      You can install Ruby versions like so: rbenv install 3.1.2
    Checking RubyGems settings: OK
    Auditing installed plugins: OK
    
    $ rbenv --version
    rbenv 1.2.0-14-gc6cc0a1
    

Rubyのインストール

  • build-essentialのインストール(Rubyのコンパイルに必要)

    $ sudo apt install -y build-essential
    # (出力は省略)
    
  • libssl-dev, zlib1g-devのインストール(Rubyのコンパイルに必要)

    $ sudo apt install -y libssl-dev zlib1g-dev
    # (出力は省略)
    
  • Rubyのインストール

    $ rbenv install -v 3.1.2
    # (中略)
    Installed ruby-3.1.2 to /home/kali/.rbenv/versions/3.1.2
    # (以後省略)
    
    # rubyコマンドで起動するバージョンを設定
    $ rbenv global 3.1.2
    
    $ ruby --version
    ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]
    

AWS EC2

作業例のユーザは、デフォルトの Linux システムユーザーアカウントにしています(Amazon Linux 2ならec2-user)。
(ついでに、Linuxユーザアカウントを追加作成する方法は、こちらに載っています。)

[EC2] Amazon Linux 2

OS情報

AMI名:amzn2-ami-kernel-5.10-hvm-2.0.20220419.0-x86_64-gp2
AMI ID:ami-0bcc04d20228d0cf6

$ cat /etc/os-release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"

rbenvのインストール

  • yumのリポジトリ情報の更新

    $ sudo yum update -y
    # (出力は省略)
    
  • gitのインストール

    $ sudo yum install -y git
    # (出力は省略)
     
    $ git --version
    git version 2.32.0
    
  • rbenv-installerの実行・rbenv-doctorで状態確認

    $ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
    # (出力は省略)
     
    # PATHの設定
    $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
    $ echo 'eval "$(rbenv init - bash)"' >> ~/.bash_profile
    $ source ~/.bash_profile
     
    # rbenv-doctorで状態確認
    $ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-doctor | bash
    Checking for `rbenv' in PATH: /home/ec2-user/.rbenv/bin/rbenv
    Checking for rbenv shims in PATH: OK
    Checking `rbenv install' support: /home/ec2-user/.rbenv/plugins/ruby-build/bin/rbenv-install (ruby-build 20220426)
    Counting installed Ruby versions: none
      There aren't any Ruby versions installed under `/home/ec2-user/.rbenv/versions'.
      You can install Ruby versions like so: rbenv install 3.1.2
    Checking RubyGems settings: OK
    Auditing installed plugins: OK
     
    $ rbenv --version
    rbenv 1.2.0-14-gc6cc0a1
    

Rubyのインストール

  • gccのインストール(Rubyのコンパイルに必要)

    $ sudo yum install -y gcc
    # (出力は省略)
    
    $ gcc --version
    gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-14)
    # (以後省略)
    
  • openssl-devel, zlib-develのインストール(Rubyのコンパイルに必要)

    $ sudo yum install -y openssl-devel zlib-devel
    # (出力は省略)
    
  • Rubyのインストール

    $ rbenv install -v 3.1.2
    # (中略)
    Installed ruby-3.1.2 to /home/ec2-user/.rbenv/versions/3.1.2
    # (以後省略)
    
    # rubyコマンドで起動するバージョンを設定
    $ rbenv global 3.1.2
    
    $ ruby --version
    ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]
    

[EC2] Ubuntu Server 22.04 LTS

OS情報

AMI名:ubuntu/images/hvm-ssd/ubuntu-jammy-22.04-amd64-server-20220420
AMI ID:ami-081ce1b631be2b337

$ cat /etc/os-release
PRETTY_NAME="Ubuntu 22.04 LTS"
NAME="Ubuntu"
VERSION_ID="22.04"
VERSION="22.04 (Jammy Jellyfish)"
VERSION_CODENAME=jammy
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=jammy

rbenvのインストール・Rubyのインストール

[WSL2] Ubuntu 22.04 LTSの手順と同じです。

[EC2] Ubuntu Server 20.04 LTS

OS情報

AMI名:ubuntu/images/hvm-ssd/ubuntu-focal-20.04-amd64-server-20220419
AMI ID:ami-0a3eb6ca097b78895

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.4 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.4 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

rbenvのインストール・Rubyのインストール

[WSL2] Ubuntu 22.04 LTSの手順と同じです。

[EC2] Ubuntu Server 18.04 LTS

OS情報

AMI名:ubuntu/images/hvm-ssd/ubuntu-bionic-18.04-amd64-server-20220411
AMI ID:ami-07d9583de36e83d10

$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.6 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.6 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic

rbenvのインストール・Rubyのインストール

[WSL2] Ubuntu 22.04 LTSの手順と同じです。

[EC2] Red Hat Enterprise Linux 8

OS情報

AMI名:RHEL-8.5_HVM-20220127-x86_64-3-Hourly2-GP2
AMI ID:ami-00c8dfcb0b542ee0c

$ cat /etc/os-release
NAME="Red Hat Enterprise Linux"
VERSION="8.5 (Ootpa)"
ID="rhel"
ID_LIKE="fedora"
VERSION_ID="8.5"
PLATFORM_ID="platform:el8"
PRETTY_NAME="Red Hat Enterprise Linux 8.5 (Ootpa)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:redhat:enterprise_linux:8::baseos"
HOME_URL="https://www.redhat.com/"
DOCUMENTATION_URL="https://access.redhat.com/documentation/red_hat_enterprise_linux/8/"
BUG_REPORT_URL="https://bugzilla.redhat.com/"

REDHAT_BUGZILLA_PRODUCT="Red Hat Enterprise Linux 8"
REDHAT_BUGZILLA_PRODUCT_VERSION=8.5
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux"
REDHAT_SUPPORT_PRODUCT_VERSION="8.5"

rbenvのインストール

[EC2] Amazon Linux 2の手順と同じですが、次のRubyのインストール手順がわずかに異なるので、rbenvのインストールについても記載しておきます。

  • yumのリポジトリ情報の更新

    $ sudo yum update -y
    # (出力は省略)
    
  • gitのインストール

    $ sudo yum install -y git
    # (出力は省略)
     
    $ git --version
    git version 2.27.0
    
  • rbenv-installerの実行・rbenv-doctorで状態確認

    $ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
    # (出力は省略)
     
    # PATHの設定
    $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
    $ echo 'eval "$(rbenv init - bash)"' >> ~/.bash_profile
    $ source ~/.bash_profile
     
    # rbenv-doctorで状態確認
    $ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-doctor | bash
    Checking for `rbenv' in PATH: /home/ec2-user/.rbenv/bin/rbenv
    Checking for rbenv shims in PATH: OK
    Checking `rbenv install' support: /home/ec2-user/.rbenv/plugins/ruby-build/bin/rbenv-install (ruby-build 20220426)
    Counting installed Ruby versions: none
      There aren't any Ruby versions installed under `/home/ec2-user/.rbenv/versions'.
      You can install Ruby versions like so: rbenv install 3.1.2
    Checking RubyGems settings: OK
    Auditing installed plugins: OK
    
    $ rbenv --version
    rbenv 1.2.0-14-gc6cc0a1
    

Rubyのインストール

  • gcc, makeのインストール(Rubyのコンパイルに必要)

    $ sudo yum install -y gcc make
    # (出力は省略)
    
    $ gcc --version
    gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4)
    # (以後省略)
    
    $ make --version
    GNU Make 4.2.1
    Built for x86_64-redhat-linux-gnu
    # (以後省略)
    
  • openssl-devel, zlib-develのインストール(Rubyのコンパイルに必要)

    $ sudo yum install -y openssl-devel zlib-devel
    # (出力は省略)
    
  • Rubyのインストール

    $ rbenv install -v 3.1.2
    # (中略)
    Installed ruby-3.1.2 to /home/ec2-user/.rbenv/versions/3.1.2
    # (以後省略)
    
    # rubyコマンドで起動するバージョンを設定
    $ rbenv global 3.1.2
    
    $ ruby --version
    ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]
    

[EC2] SUSE Linux Enterprise Server 15 SP3

OS情報

AMI名:suse-sles-15-sp3-v20211219-hvm-ssd-x86_64
AMI ID:ami-0057dcd449e124349

$ cat /etc/os-release
NAME="SLES"
VERSION="15-SP3"
VERSION_ID="15.3"
PRETTY_NAME="SUSE Linux Enterprise Server 15 SP3"
ID="sles"
ID_LIKE="suse"
ANSI_COLOR="0;32"
CPE_NAME="cpe:/o:suse:sles:15:sp3"
DOCUMENTATION_URL="https://documentation.suse.com/"

rbenvのインストール

  • zypperのリポジトリ情報の更新

    $ sudo zypper refresh
    # (出力は省略)
    
  • gitのインストール

    $ sudo zypper install -y git
    # (出力は省略)
    
    $ git --version
    git version 2.34.1
    
  • rbenv-installerの実行・rbenv-doctorで状態確認

    $ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
    # (出力は省略)
     
    # PATHの設定
    $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.profile
    $ echo 'eval "$(rbenv init - bash)"' >> ~/.profile
    $ source ~/.profile
     
    # rbenv-doctorで状態確認
    $ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-doctor | bash
    Checking for `rbenv' in PATH: /home/ec2-user/.rbenv/bin/rbenv
    Checking for rbenv shims in PATH: OK
    Checking `rbenv install' support: /home/ec2-user/.rbenv/plugins/ruby-build/bin/rbenv-install (ruby-build 20220426)
    Counting installed Ruby versions: none
      There aren't any Ruby versions installed under `/home/ec2-user/.rbenv/versions'.
      You can install Ruby versions like so: rbenv install 3.1.2
    Checking RubyGems settings: OK
    Auditing installed plugins: OK
    
    $ rbenv --version
    rbenv 1.2.0-14-gc6cc0a1
    

Rubyのインストール

  • devel_basisパターンをインストールする(Rubyのコンパイルに必要)

    $ sudo zypper install -y --type pattern devel_basis
    # (出力は省略)
    
  • libopenssl-develのインストール

    $ sudo zypper install -y libopenssl-devel
    # (出力は省略)
    
  • Rubyのインストール

    $ rbenv install -v 3.1.2
    # (中略)
    Installed ruby-3.1.2 to /home/ec2-user/.rbenv/versions/3.1.2
    # (以後省略)
    
    # rubyコマンドで起動するバージョンを設定
    $ rbenv global 3.1.2
    
    $ ruby --version
    ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]
    

[EC2] Debian 10

OS情報

AMI名:debian-10-amd64-20210329-591
AMI ID:ami-0ac97798ccf296e02

$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

rbenvのインストール

  • aptのリポジトリ情報の更新

    $ sudo apt update -y
    # (出力は省略)
    
  • gitのインストール

    $ sudo apt install -y git
    # (出力は省略)
    
    $ git --version
    git version 2.20.1
    
  • rbenv-installerの実行・rbenv-doctorで状態確認

    $ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-installer | bash
    # (出力は省略)
    
    # PATHの設定
    $ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.profile
    $ echo 'eval "$(rbenv init - bash)"' >> ~/.profile
    $ source ~/.profile
    
    # rbenv-doctorで状態確認
    $ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/HEAD/bin/rbenv-doctor | bash
    Checking for `rbenv' in PATH: /home/admin/.rbenv/bin/rbenv
    Checking for rbenv shims in PATH: OK
    Checking `rbenv install' support: /home/admin/.rbenv/plugins/ruby-build/bin/rbenv-install (ruby-build 20220426)
    Counting installed Ruby versions: none
      There aren't any Ruby versions installed under `/home/admin/.rbenv/versions'.
      You can install Ruby versions like so: rbenv install 3.1.2
    Checking RubyGems settings: OK
    Auditing installed plugins: OK
    
    $ rbenv --version
    rbenv 1.2.0-14-gc6cc0a1
    

Rubyのインストール

  • build-essentialのインストール(Rubyのコンパイルに必要)

    $ sudo apt install -y build-essential
    # (出力は省略)
    
  • libssl-dev, zlib1g-devのインストール(Rubyのコンパイルに必要)

    $ sudo apt install -y libssl-dev zlib1g-dev
    # (出力は省略)
    
  • Rubyのインストール

    $ rbenv install -v 3.1.2
    # (中略)
    Installed ruby-3.1.2 to /home/admin/.rbenv/versions/3.1.2
    # (以後省略)
    
    # rubyコマンドで起動するバージョンを設定
    $ rbenv global 3.1.2
    
    $ ruby --version
    ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]
    

rbenv installで、最近リリースされた新しいRubyのバージョンが候補に出て来ない場合

rbenv installでTab補完連打しても候補に出てこない、rbenv install --listでしっかり確認してもしっかりリストから抜けている、そんな場合は、ruby-buildを最新にする必要があります。

方法は簡単で、Linux/UNIXならgitで、macOSならHomebrewですぐです。ruby-build READMEの、Installation > Upgradingから引用します:

  • Linux/UNIX

    # As an rbenv plugin
    $ git -C "$(rbenv root)"/plugins/ruby-build pull
    
  • MacOS

    # Via Homebrew
    $ brew update && brew upgrade ruby-build
    

完了したら、rbenv install --listしてみてください。

rbenvのアップグレード方法

gitで新しいバージョンをpullするだけです。rbenv READMEの、Installation > Basic GitHub Checkout > Upgrading with Gitから引用します(プロンプト$は筆者が勝手につけています):

$ cd ~/.rbenv
$ git pull

アップグレードの前後で、rbenv --versionをすると変化がわかるでしょう。

(おまけ)Rubyのバージョン管理をするとどう嬉しいのか・rbenvでの方法

  1. コマンドrbenv global <バージョン>で、「(そのユーザが)単純にrubyコマンドを打った場合のバージョン」を指定できます

    • つまり、rbenv install <持ってないバージョン>で新しいRubyのバージョンをインストールしてみてrbenv globalコマンドでパッと試す、あるいは気に入らなければrbenv globalコマンドでパッと戻すということがとても気軽にできます

      こんな感じに...
      $ ruby --version
      ruby 2.7.6p219 (2022-04-12 revision c9c2245c0a) [x86_64-linux]
      
      # 3.1.2インストールしてあるし、使ってみよう
      $ rbenv global 3.1.2
      
      $ ruby --version
      ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]
      
  2. コマンドrbenv local <バージョン>で、「そのプロジェクトで使わせたいRubyのバージョン」を指定できます

    もう少し詳しい説明
    • Rubyの場合、「そのプロジェクト=そのプロジェクトのトップディレクトリ配下」と読みかえてよいです
    • プロジェクトのトップディレクトリでrbenv localコマンドを叩くと、「使わせたいRubyのバージョン」が書かれた.ruby-versionというファイルができます
    • .ruby-versionファイルが置いてあるディレクトリ配下ではどこでも、rubyコマンドを叩くと、.ruby-versionに指定されたバージョンのRubyで動きます(rbenvでRubyをインストールして使っているユーザの場合)
      • システムにまだインストールしていないバージョンが指定されている場合は、以下のように怒られます(もっているバージョンはrbenv versionsコマンドで確認できます。):

        [~/project/ruby/foo]$ pwd
        /home/ubuntu/project/ruby/foo
        
        # 現在インストール済みのバージョンを一覧
        [~/project/ruby/foo]$ rbenv versions
          2.7.6
        * 3.1.2 (set by /home/ubuntu/.rbenv/version)
        
        # 持っていないバージョン(例として3.1.0)が指定されている
        [~/project/ruby/foo]$ cat .ruby-version
        3.1.0
        
        [~/project/ruby/foo]$ ruby --version
        rbenv: version `3.1.0' is not installed (set by /home/ubuntu/project/ruby/foo/.ruby-version)
        
    • .ruby-versionファイルは、gitのリポジトリにチェックインするとよいでしょう
    • これのおかげで、

      • 「え、今のプロジェクトRuby3.1.2で開発してるんだけど、今新しいRubyをインストールすると実行バージョン変わっちゃうよな...」というようなことを気にせずに、システムに別のRubyのバージョンを気軽にインストールできます!

        プロジェクト配下のRubyバージョンを指定する様子
        # globalではRuby 3.1.2で設定
        [~]$ ruby --version
        ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux]
        
        # foo/ディレクトリ(プロジェクトのトップディレクトリ)で、Ruby 2.7.6を設定
        [~]$ mkdir foo/
        [~]$ cd foo/
        [~/foo]$ rbenv local 2.7.6
        [~/foo]$ ruby --version
        ruby 2.7.6p219 (2022-04-12 revision c9c2245c0a) [x86_64-linux]
        
        # foo/ディレクトリ配下ならば、Ruby 2.7.6が実行される
        [~/foo]$ mkdir bar/
        [~/foo]$ tree -Fa
        ./
        ├── .ruby-version
        └── bar/
        
        [~/foo]$ cd bar/
        [~/foo/bar]$ ruby --version
        ruby 2.7.6p219 (2022-04-12 revision c9c2245c0a) [x86_64-linux]
        
      • また、プロジェクト自体のRubyバージョンアップ対応のことはじめとしても、rbenv local <新しいバージョン>.ruby-versionファイルの更新というシンプルなところから始めることができます。
        (そのあとに、プログラムを実行して、出てくるエラーや警告に対処していく)

    • ちなみに、プロジェクトローカルのバージョン指定をやめたい時は、.ruby-versionファイルを削除するか、rbenv local --unsetコマンドを使えばよいです

参考

脚注
  1. Bash: .bashrcと.bash_profileの違いを今度こそ理解する (TechRacho) ↩︎

  2. bashの.profileや.bashrc等を実行する動作仕様 (/var/log/sgryjp.log) ↩︎

  3. Is "sudo apt-get update" mandatory before every package installation? (askubuntu - StackExchange) ↩︎

  4. APT-GET(8) (Debian Manpages) ↩︎

Discussion