Как установить последнюю стабильную версию Ruby с RVM без прав root?

Как установить последнюю стабильную версию Ruby с RVM без прав root?

Я создаю скрипт 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.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 Установить завитокчтобы получить список файлов иГНУsed Установить 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

Связанный контент