Ich erstelle ein Bash-Skript, um die letzte stabile Version von Ruby automatisch ohne Root-Rechte zu installieren. Das habe ich bisher:
#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
Ich muss die letzte stabile Ruby-Version finden, um RUBY_VERSION
Variablen festzulegen.
Antwort1
Vorausgesetzt, die letzte stabile Version ist immer die letzte Datei mit einem Dateinamen wie ruby-2.5.1.tar.gz
aufhttps://cache.ruby-lang.org/pub/ruby/können Sie die Versionsnummer wie folgt extrahieren:
curl -s https://cache.ruby-lang.org/pub/ruby/ | sed -nr '1h;1!H;$!d;x;s/.*ruby-([0-9.]+).tar.gz.*/\1/p'
Dieser Ansatz verwendetcurl
zum Abrufen der Dateiliste undGNUsed
die Versionsnummer auszuschneiden, wie indiese SO-AntwortSie können auch grep
mit verwendenUmschauungenstattdessen kann es sogar etwas schneller sein:
curl -s https://cache.ruby-lang.org/pub/ruby/ | grep -oP '(?<=ruby-)\d\.\d\.\d(?=.tar.gz)' | tail -1
RUBY_VERSION
Fügen Sie Ihrem Skript einfach eine Zeile hinzu, die die Variable festlegt :
#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
Beispielausführung
$ 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