¿Cómo instalar la última versión estable de Ruby con RVM sin privilegios de root?

¿Cómo instalar la última versión estable de Ruby con RVM sin privilegios de root?

Estoy creando un script bash para instalar automáticamente la última versión estable de Ruby sin privilegios de root. Esto es lo que tengo hasta ahora:

#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

Necesito encontrar la última versión estable de Ruby para configurar RUBY_VERSIONla variable.

Respuesta1

Suponiendo que la última versión estable es siempre el último archivo con un nombre de archivo como ruby-2.5.1.tar.gzenhttps://cache.ruby-lang.org/pub/ruby/, puedes extraer el número de versión con:

curl -s https://cache.ruby-lang.org/pub/ruby/ | sed -nr '1h;1!H;$!d;x;s/.*ruby-([0-9.]+).tar.gz.*/\1/p'

Este enfoque utilizacurl Instalar rizopara recuperar la lista de archivos yÑUsed instalar sedpara recortar el número de versión como se explica enesta respuesta SO. También puedes usar grepconmiradas alrededoren cambio, incluso puede ser un poco más rápido:

curl -s https://cache.ruby-lang.org/pub/ruby/ | grep -oP '(?<=ruby-)\d\.\d\.\d(?=.tar.gz)' | tail -1

Simplemente agregue una línea configurando la RUBY_VERSIONvariable a su script:

#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

Ejecución de ejemplo

$ 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

información relacionada