ルート権限なしで RVM を使用して Ruby の最新の安定バージョンをインストールするにはどうすればよいでしょうか?

ルート権限なしで RVM を使用して Ruby の最新の安定バージョンをインストールするにはどうすればよいでしょうか?

私は、ルート権限なしで Ruby の最新の安定バージョンを自動的にインストールする bash スクリプトを作成しています。 これまでのところ、次のようになっています。

#Install GPG Keys
curl -sSL https://rvm.io/mpapis.asc | gpg2 --import

#Install RVM
curl -sSL https://get.rvm.io | bash -s -- --ignore-dotfiles
echo "source $HOME/.rvm/scripts/rvm" >> ~/.bash_profile

#Set environment
source $HOME/.rvm/scripts/rvm

#Install Ruby
rvm install $RUBY_VERSION

変数を設定するには、最新の安定した Ruby バージョンを見つける必要がありますRUBY_VERSION

答え1

最後の安定バージョンは常に次のようなファイル名の最後のファイルであると仮定しますruby-2.5.1.tar.gzruby-lang.org の ruby​​-cache ファイルをアップロードします。次のようにしてバージョン番号を抽出できます。

curl -s https://cache.ruby-lang.org/pub/ruby/ | sed -nr '1h;1!H;$!d;x;s/.*ruby-([0-9.]+).tar.gz.*/\1/p'

このアプローチではcurl curlをインストールするファイルリストを取得し、GNUsed sedをインストールするバージョン番号を切り取るには、このSOの答え.grepと一緒に使うこともできますルックアラウンドむしろ、少し速くなるかもしれません:

curl -s https://cache.ruby-lang.org/pub/ruby/ | grep -oP '(?<=ruby-)\d\.\d\.\d(?=.tar.gz)' | tail -1

RUBY_VERSIONスクリプトに変数を設定する行を追加するだけです:

#Get version number of latest stable Ruby version
RUBY_VERSION=$(curl -s https://cache.ruby-lang.org/pub/ruby/ | sed -nr '1h;1!H;$!d;x;s/.*ruby-([0-9.]+).tar.gz.*/\1/p')

#Install Ruby
rvm install $RUBY_VERSION

実行例

$ curl -s https://cache.ruby-lang.org/pub/ruby/ | sed -nr '1h;1!H;$!d;x;s/.*ruby-([0-9.]+).tar.gz.*/\1/p'
2.5.1
$ curl -s https://cache.ruby-lang.org/pub/ruby/ | grep -oP '(?<=ruby-)\d\.\d\.\d(?=.tar.gz)' | tail -1
2.5.1

関連情報