The official ruby snap is available

Ruby の公式 snap パッケージをリリースしました。

https://snapcraft.io/ruby

snap は canonical が開発している新しいパッケージシステムです。独自のファイルシステムを利用して、バイナリの動作に必要なライブラリを全てパッケージングして配布することができます。snap を利用することで、 yum や apt のような Linux ディストリビューションのパッケージシステムを利用した時に、任意のバージョンをユーザーが自由に使うことができない問題を解決しました。

Ubuntu 16.04 以降のディストリビューションなら以下のコマンドで snap ruby を使うことができます。

sudo snap install ruby --classic

Ubuntu 以外のディストリビューションで snap を利用する場合の準備については https://docs.snapcraft.io/installing-snapd/6735 を参照してください。

Ruby の snap パッケージは channel と呼ばれる機能を用いて、現在メンテナンスしているバージョンを配信しています。例えば、2018/11 現在 channel を指定しない場合は 2.5.3 がインストールされますが、2.4 を利用したい場合は以下のように指定します。

sudo snap install ruby --classic --channel=2.4/stable

snap の機能を使うと複数の Ruby のバージョンを利用することができます。例えば、Ruby 2.3 に切り替えるには以下のコマンドを実行します。

sudo snap switch ruby --channel=2.3/stable
sudo snap refresh

また、snap の制限事項として、RubyGems は $HOME/.gem にインストールされるように GEM_HOME と GEM_PATH を設定しています。そのため、rails や rspec などのコマンドを bundle exec を用いずに実行したい場合は以下の行を .bashrc などに設定する必要があります。

eval `ruby.env`

$HOME/.gem は複数のバージョンで共有されるため、バージョンを切り替えて利用した場合、C 拡張などは gem pristine --extensions コマンドを用いて再コンパイルする必要があります。

この ruby snap は 11/6-8 にロンドンの canonical オフィスで開催された snapcraft summit で初めて公式バージョンをリリースしました。不具合やフィードバックは https://github.com/ruby/snap.ruby で受け付けています。お楽しみください。