Como instalar a última versão estável do Ruby com o RVM sem privilégios de root?

0

Estou criando um script bash para instalar automaticamente a última versão estável do Ruby sem privilégios de root. Isso é o que eu tenho até agora:

#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

Eu preciso encontrar a última versão estável do Ruby para definir a variável RUBY_VERSION .

    
por Facundo Chambo 06.06.2018 / 22:07

1 resposta

0

Supondo que a última versão estável é sempre o último arquivo com um nome de arquivo como ruby-2.5.1.tar.gz no link , você pode extrair o número da versão com:

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

Essa abordagem usa curl pararecuperaralistadearquivose GNU sed paracortaronúmerodaversão,conformeexplicadoem esta resposta SO . Você também pode usar grep com lookarounds em vez disso, pode até ser um pouco mais rápido:

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

Basta adicionar uma linha configurando a variável RUBY_VERSION ao seu 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.*//p')

#Install Ruby
rvm install $RUBY_VERSION

Exemplo de execução

$ curl -s https://cache.ruby-lang.org/pub/ruby/ | sed -nr '1h;1!H;$!d;x;s/.*ruby-([0-9.]+).tar.gz.*//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
    
por dessert 08.06.2018 / 14:23