Я создаю скрипт 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
чтобы вырезать номер версии, как описано вэтот ТАК ответ. Вы также можете использовать 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