
Я создаю скрипт 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