[jekyll/rbenv] rvm을 활용한 rbenv 설치하기
[jekyll/ rbenv/ ruby 관련 과거 포스트]
- 목표: til 깃헙래포 개편
- 운영체제: mac OS
- 사용쉘: zsh
- 참고: https://github.com/rbenv/rbenv
- How to update your rbenv ruby version
- How to update your rbenv version with git
기존에 .rbenv를 설치했다면 지운다.
$ rm -rf ~/.rbenv
brew 로 rbenv와 ruby-build 를 설치
$ brew install rbenv ruby-build
쉘에 값 추가하기
zshrc에 .rbenv 값 매핑한다.
$ echo 'eval "$(~/.rbenv/bin/rbenv init - zsh)"' >> ~/.zshrc
[ bash shell 이용할 경우 ]
- bashrc에 .rbenv 값 매핑하기
$ echo 'eval "$(~/.rbenv/bin/rbenv init - bash)"' >> ~/.bashrc
- ubuntu외 다른 플랫폼일 경우에는 .bash_profile 에 주입
echo 'eval "$(~/.rbenv/bin/rbenv init - bash)"' >> ~/.bash_profile
루비설치
# 안정적인 버젼
$ rbenv install -l
# 모든 로컬 버젼
$ rbenv install -L
# 3.2.0 루비버젼 설치 (특정 루비버젼 설치)
$ rbenv install 3.2.0
rbenv install -l 명령어 결과중 가장 최근 버젼을 설치하는 것을 권장한다.
ruby 3.2.0 버젼을 설치수행하다가 그런데 다음과 같은 에러가 나왔다.
mac OS 업데이트하면서 개편할 때마다 발생하는 에러이다.
문제발생 1: xcrun: error: invalid active developer path
그러므로 mac os가 개편되면, rbenv를 동작시키는데 필요한 xcode도 같이 업데이트 시키는 것이 좋다.
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
[ 문제1 해결방법 ]
$ xcode-select --install
그러면 사용자 동의내역창이 나오며, 사용자 동의란에 체크하고 넘어가면 소프트웨어를 다운로드 실행한다.
그러면 시스템설정 > 소프트웨어 업데이트 를 하려면 재부팅 이 필요하다.
문제발생3: To eliminate this warning, please install libyaml and reinstall your ruby. cannot load such file --psych
해결과정
에러문 해석하기
1) install libyaml
2) reinstall ruby
3) cannot load such file -- psych
1) libyaml 패키지 설치
# libyaml 설치
$ brew install libyaml
2) rvm 설치
# gnupg 설치 - gpg 키로 rvm을 설치 가능하게 만들어주는 라이브러리
$ brew install gnupg
# rvm 설치 (rvm.io/rvm/install 을 참고하여 gpg 키를 설치한다)
# gpg --keyserver hkp://<서버주소>:80 --recv-keys <키값>
$ gpg --keyserver hkp://pool.sks-keyservers.net:80 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
gpg 로 키서버 정상동작은 아무것도 안뜨고 그대로 있다. 아래사진의 경우가 정상동작이다.
[ gpg명령어로 rvm 설치하다가 발생한 에러: gpg: keyserver receive failed: Server indicated a failure ]
원인: 공식사이트에 있는 gpg키값을 그대로 복사했음
$ gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
해결: 서버주소에 hkp://<키서버주소>:80 을 붙이면 된다.
$ gpg --keyserver hkp://pool.sks-keyservers.net:80 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
3) 새로운 터미널 창을 띄워서 다음과 같이 명령어를 입력하자
$ \curl -sSL https://get.rvm.io | bash
해당 명령어를 실행하면, rvm 설치를 하게되면 "Thanks for installing RVM 🙏" 가 뜨면 rvm이 정상설치가 되었다는 의미이다.
gpg 서버에 접속한 터미널도 종료시킨다.
4) 새로운 터미널을 띄워서 rvm list 명령어를 입력한다.
그러면 rvm이 없다는 응답메시지를 받는다.
5) rvm으로 ruby 최신버젼 설치
# rvm install 최신버젼 설치
$ rvm install ruby --latest
6) 설치 이후에 rvm list 명령어를 입력한다.
[에러해결 참고]
[ xcrun: error 해결방법 ]
[ ruby install 중 missing psych 에러 해결법 ]
[ rvm 설치 ]
rvm.io 공식사이트
[ rvm 맥os에서 설치하는 방법 ]
[ gpg: keyserver receive failed: Server indicated a failure 에러 해결방법 ]
[rubygem update 참고자료]
rvm으로 libyaml을 설치하기
$ rvm pkg install libyaml
open ssl 설치
$ rvm pkg install openssl
ruby 버젼 default 시키기
$ rvm alias create default 3.1.3
다시 rbenv 명령어를 사용하여 설치해보자 (3.1.3 버젼을 설치했다)
$ rbenv install 3.1.3
# 3.1.3 버젼을 global 로 설정한다
$ rbenv global 3.1.3
# rbenv versions 확인
$ rbenv versions
rbenv 버젼이 세팅되어있지 않다면, system에 표기된다.
rbenv를 다시 rehash 시킨다.
$ rbenv rehash
설치된 루비정보를 확인할 수 있다.
zshrc에 값을 매핑한다.
# bash
$ echo 'export PATH="$HOME/.rvm/rubies/ruby-3.1.3/bin:$PATH"' >> ~/.bashrc
# zsh
$ echo 'export PATH="$HOME/.rvm/rubies/ruby-3.1.3/bin:$PATH"' >> ~/.zshrc
gem 설치
$ gem env home
현재 gem 환경 조회
$ gem env
그러나 아래 문제들이 생겨서 결국은 rvm으로 설치하지 않고 기존 방식대로 설치를 해서 진행을 했다.
1. gem 설치하다가 발생한 에러
$ gem install bundler
invalid gem: package is corrupt, exception while verifying: wrong number of arguments (given 2, expected 1)
gem update하기
$ gem install rubygems-update
$ update rubygems
$ gem update --system
bundle을 업그레이드 하다가 발생한 문제
bundle upgrade /Users/ek/.rvm/rubies/ruby-3.1.3/lib/ruby/site_ruby/3.1.0/rubygems.rb:284:in `find_spec_for_exe': Could not find 'bundler' (2.4.6) required by your /Users/ek/Documents/github/loveAlakazam/til/TIL_ver2/TIL_2/Gemfile.lock. (Gem::GemNotFoundException) To update to the latest version installed on your system, run `bundle update --bundler`. To install the missing version, run `gem install bundler:2.4.6`
그러나 실제로는 내가 해결하려는 에러의 해결방법은 rvm을 쓸 필요 없단걸 많은 삽질끝에 깨달았다.
오랜 삽질끝에 결국은 다시 롤백하고 이전에 했던 방식대로 진행했고, 다른 방법으로 해결했다.
해결방안도 참.. 허무하다. 내가 몇시간동안 한건 뭐지라는 생각도 들었지만 그래도 해결해서 안도는 된다.
마치며
사실은 til 블로그에 테마를 적용하는 중에
Gemfile에 jekyll-include-cache와 jekyll-feed 플러그인을 yaml로 추가후에 bundle을 실행하다가 에러가 발생해서
이에러에 대한 해결책을 찾으려고 했다. rvm을 이용해서 새로운 루비를 설치하는게 아니었다.
내가 적용할 테마의 Gemfile에서 jekyll버젼을 4.2.3에서 3.7로 다운그레이드했다.
그리고 bundler를 업데이트를 했더니 허무하게 됐다.
# Gemfile
source "https://rubygems.org"
# jekyll의 버젼을 4.2.3 -> 3.7 로 변경했다.
gem "jekyll", "~> 3.7"
...
$ bundle update
$ bundle
지금 포스팅은 정답은 아니지만 그래도 rvm을 이용하여 설치해보는 방법에 대해서 실습을 해봤다.
시간이 많이 걸리고 번잡한 환경세팅이지만 그래도 이런게 있구나 하면서 새로 알게됐다.
rvm 세팅중에 떠오른 생각은 이전에 경험한 python의 가상환경 virtualenv ,pipenv 과 유사하다.
버젼이 다른 환경이 존재할 수 있고, 각 환경을 맞춰서 실행해주도록 하는 것이 가상머신 이다.
rvm이라는 가상머신으로 루비환경을 세팅할 수 있음을 새로 배운것 같다.