如何在沒有 root 權限的情況下使用 RVM 安裝最新穩定版本的 Ruby?

如何在沒有 root 權限的情況下使用 RVM 安裝最新穩定版本的 Ruby?

我正在創建一個 bash 腳本來自動安裝最新穩定版本的 ruby​​,無需 root 權限。這是我到目前為止所擁有的:

#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.gzon 的最後一個文件https://cache.ruby-lang.org/pub/ruby/,您可以使用以下命令提取版本號:

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 安裝捲曲檢索文件列表並GNUsed 安裝sed刪除版本號,如中所述這個答案。你也可以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

相關內容