루비/jekyll 설치, bundle update



새 PC에서 jekyll로 만든 이 사이트(surinkim.github.io)를 clone하고 로컬에서 띄울 때 필요한 절차를 기록했다.

1.ruby 설치

RubyInstaller를 내려받아 설치한다. 오른쪽에 추천하는 버전이 소개돼있다. Ruby+Devkit 2.6.X(x64)를 설치했다.

2.jekyll 설치

여기를 참고해서 jekyll을 설치한다.

gem install bundler jekyll

해당 페이지에 따로 나오지 않았지만, jekyll 설치 후에는 bundle update를 실행해줘야 아래 2-2) 패키지 버전 문제가 발생하지 않는다.

2-1) 패키지 수동 설치

아래처럼 GemNotFound에러가 나면 해당 패키지를 수동 설치해 준다.

PS D:\work\github_surinkim\surinkim.github.io> jekyll serve .
Traceback (most recent call last):
        12: from d:/Ruby26-x64/bin/jekyll:23:in `<main>'
        11: from d:/Ruby26-x64/bin/jekyll:23:in `load'
        ...
         2: from D:/Ruby26-x64/lib/ruby/2.6.0/bundler/spec_set.rb:85:in `materialize'
         1: from D:/Ruby26-x64/lib/ruby/2.6.0/bundler/spec_set.rb:85:in `map!'
D:/Ruby26-x64/lib/ruby/2.6.0/bundler/spec_set.rb:91:in `block in materialize': Could not find public_suffix-3.0.1 in any of the sources (Bundler::GemNotFound)

PS D:\work\github_surinkim\surinkim.github.io> gem install public_suffix -v 3.0.1
Fetching public_suffix-3.0.1.gem
Successfully installed public_suffix-3.0.1
Parsing documentation for public_suffix-3.0.1
Done installing documentation for public_suffix after 0 seconds
1 gem installed

2-2) 패키지 버전 문제

다른 패키지들은 위처럼 수동 설치로 해결됐는데, ffi 같은 경우는 필요한 패키지 버전을, 로컬에 설치된 루비 버전에는 설치할 수 없다고 나온다. 이런;;

PS D:\work\github_surinkim\surinkim.github.io> jekyll serve .
        12: from d:/Ruby26-x64/bin/jekyll:23:in `<main>'
        ...
         1: from D:/Ruby26-x64/lib/ruby/2.6.0/bundler/spec_set.rb:85:in `map!'
D:/Ruby26-x64/lib/ruby/2.6.0/bundler/spec_set.rb:91:in `block in materialize': Could not find ffi-1.9.18-x64-mingw32 in any of the sources (Bundler::GemNotFound)
PS D:\work\github_surinkim\surinkim.github.io> gem install ffi -v 1.9.18
Fetching ffi-1.9.18-x64-mingw32.gem
ERROR:  Error installing ffi:
        The last version of ffi (= 1.9.18) to support your Ruby & RubyGems was 1.9.18. Try installing it with `gem install ffi -v 1.9.18`
        ffi requires Ruby version >= 2.0, < 2.5. The current ruby version is 2.6.6.146.

다행히 bundle update로 해결할 수 있다는 글을 보고 실행했더니,

PS D:\work\github_surinkim\surinkim.github.io> bundle update
Fetching gem metadata from https://rubygems.org/..........
Fetching gem metadata from https://rubygems.org/.
Resolving dependencies...
Using public_suffix 4.0.5 (was 3.0.1)
Using addressable 2.7.0 (was 2.5.2)
...
Using ffi 1.13.1 (x64-mingw32) (was 1.9.18)
...

패키지들이 모두 업데이트 되면서 ffi도, 로컬에 설치된 루비 버전에 맞는 1.13.1로 업데이트가 됐다.

헌데, 지금까지는 jekyll serve . 명령만으로 실행이 됐는데, 이번에는 아래 에러가 뜬다.

PS D:\work\github_surinkim\surinkim.github.io> jekyll serve .
Traceback (most recent call last):
        10: from d:/Ruby26-x64/bin/jekyll:23:in `<main>'
		...
         1: from D:/Ruby26-x64/lib/ruby/2.6.0/bundler/runtime.rb:31:in `block in setup'
D:/Ruby26-x64/lib/ruby/2.6.0/bundler/runtime.rb:319:in `check_for_activated_spec!': You have already activated jekyll-sass-converter 2.1.0, but your Gemfile requires jekyll-sass-converter 1.5.2. Prepending `bundle exec` to your command may solve this. (Gem::LoadError)

에러 메시지에 나와있는 대로 bundle exec jekyll serve .으로 실행하니 사이트가 잘 뜬다. Gemfile을 수정하는 등의 방법으로 1.5.2를 명시해서 쓰면 해결이 되지 않을까 하는데.. 뭐, 단어 2개 더 타이핑하는 게 힘든 일도 아니고.. 이 정도면 됐다.