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_VERSION
la 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.gz
enhttps://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
para recuperar la lista de archivos yÑUsed
para recortar el número de versión como se explica enesta respuesta SO. También puedes usar grep
conmiradas 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_VERSION
variable 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