如何在没有 root 权限的情况下使用 RVM 安装 Ruby 的最新稳定版本?

如何在没有 root 权限的情况下使用 RVM 安装 Ruby 的最新稳定版本?

我正在创建一个 bash 脚本,用于在没有 root 权限的情况下自动安装 ruby​​ 的最新稳定版本。这是我目前所拥有的:

#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.gz假设最后一个稳定版本始终是文件名为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 安装 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

相关内容