루트 권한 없이 RVM을 사용하여 마지막 안정 버전의 Ruby를 설치하는 방법은 무엇입니까?

루트 권한 없이 RVM을 사용하여 마지막 안정 버전의 Ruby를 설치하는 방법은 무엇입니까?

루트 권한 없이 마지막 안정 버전의 Ruby를 자동으로 설치하는 bash 스크립트를 만들고 있습니다. 이것이 내가 지금까지 가지고 있는 것입니다:

#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마지막 안정 버전은 항상 on 과 같은 파일 이름을 가진 마지막 파일이라고 가정합니다 .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 sed 설치설명된 대로 버전 번호를 잘라내려면이 SO 답변. 당신은 또한 사용할 수 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

관련 정보