우분투에 Jekyll 설치하기

Jekyll이 뭐에요?

Jekyll 은 아주 심플하고 블로그 지향적인 정적 사이트 생성기입니다. 

Jekyll 은 다양한 포맷의 원본 텍스트 파일을 템플릿 디렉토리로부터 읽어서, 
(Markdown 등의) 변환기와 Liquid 렌더러를 통해 가공하여, 
당신이 즐겨 사용하는 웹 서버에 곧바로 게시할 수 있는, 완성된 정적 웹사이트를 만들어냅니다. 

그리고 Jekyll 은 GitHub Pages 의 내부 엔진이기도 합니다. 

다시 말해, Jekyll 을 사용하면 자신의 프로젝트 페이지나 블로그, 웹사이트를 무료로 GitHub 에 호스팅 할 수 있다는 뜻입니다.

- https://jekyllrb-ko.github.io/docs/home/ 독스 홈

설치 요약

$ sudo apt-get install ruby-dev libffi-dev build-essential curl # 디펜던시 설치
$ curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash - # node 설치하는데 필요한 작업
$ sudo apt-get install -y nodejs # 노드 설치
$ sudo gem install bundler # bundler 설치
$ sudo gem install jekyll # Jekyll 설치
# 끝

삽질기

Jekyll을 구동하기 위해서 필요한 준비물들은 다음과 같다

  • Ruby
  • RubyGems
  • NodeJS
  • Python2.7

Ubuntu 16.04 LTS 기준으로 깔아야할건 node 정도..?인 것 같다. 요약에 정리해뒀으니 참고.

터미널을 열고 gem install jekyll 입력

$ gem install jekyll
Fetching: public_suffix-3.0.1.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /var/lib/gems/2.3.0 directory.

?? permissions 인거보니 권한 문제인가?

$ sudo gem install jekyll
[sudo] password for cenox: 
Fetching: public_suffix-3.0.1.gem (100%)
Successfully installed public_suffix-3.0.1
Fetching: addressable-2.5.2.gem (100%)
Successfully installed addressable-2.5.2
Fetching: colorator-1.1.0.gem (100%)
Successfully installed colorator-1.1.0
Fetching: http_parser.rb-0.6.0.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing jekyll:
	ERROR: Failed to build gem native extension.

    current directory: /var/lib/gems/2.3.0/gems/http_parser.rb-0.6.0/ext/ruby_http_parser
/usr/bin/ruby2.3 -r ./siteconf20180211-5751-1ga2lxd.rb extconf.rb
mkmf.rb can't find header files for ruby at /usr/lib/ruby/include/ruby.h

extconf failed, exit code 1

Gem files will remain installed in /var/lib/gems/2.3.0/gems/http_parser.rb-0.6.0 for inspection.
Results logged to /var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/http_parser.rb-0.6.0/gem_make.out

뭔가 디펜던시 부족같다. 구글링해보니, 해당버전에 맞는 dev툴을 깔아야하는 것 같아서 sudo apt-get install ruby-dev로 설치해보았다.

$ sudo gem install jekyll
Building native extensions.  This could take a while...
Successfully installed http_parser.rb-0.6.0
Fetching: eventmachine-1.2.5.gem (100%)
Building native extensions.  This could take a while...
Successfully installed eventmachine-1.2.5
Fetching: em-websocket-0.5.1.gem (100%)
Successfully installed em-websocket-0.5.1
Fetching: concurrent-ruby-1.0.5.gem (100%)
Successfully installed concurrent-ruby-1.0.5
Fetching: i18n-0.9.4.gem (100%)
Successfully installed i18n-0.9.4
Fetching: rb-fsevent-0.10.2.gem (100%)
Successfully installed rb-fsevent-0.10.2
Fetching: ffi-1.9.21.gem (100%)
Building native extensions.  This could take a while...
ERROR:  Error installing jekyll:
	ERROR: Failed to build gem native extension.

    current directory: /var/lib/gems/2.3.0/gems/ffi-1.9.21/ext/ffi_c
/usr/bin/ruby2.3 -r ./siteconf20180211-6065-11helf5.rb extconf.rb
checking for ffi.h... no
checking for ffi.h in /usr/local/include,/usr/include/ffi... no
checking for shlwapi.h... no
checking for rb_thread_blocking_region()... no
checking for rb_thread_call_with_gvl()... yes
checking for rb_thread_call_without_gvl()... yes
creating extconf.h
creating Makefile

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/ffi-1.9.21/mkmf.log

current directory: /var/lib/gems/2.3.0/gems/ffi-1.9.21/ext/ffi_c
make "DESTDIR=" clean

current directory: /var/lib/gems/2.3.0/gems/ffi-1.9.21/ext/ffi_c
make "DESTDIR="
Running autoreconf for libffi
/var/lib/gems/2.3.0/gems/ffi-1.9.21/ext/ffi_c/libffi/autogen.sh: 2: exec: autoreconf: not found
libffi.mk:6: '"/var/lib/gems/2.3.0/gems/ffi-1.9.21/ext/ffi_c/libffi-x86_64-linux-gnu"/.libs/libffi_convenience.a' 타겟에 대한 명령이 실패했습니다
make: *** ["/var/lib/gems/2.3.0/gems/ffi-1.9.21/ext/ffi_c/libffi-x86_64-linux-gnu"/.libs/libffi_convenience.a] 오류 127

make failed, exit code 2

Gem files will remain installed in /var/lib/gems/2.3.0/gems/ffi-1.9.21 for inspection.

또 다른 오류다. Output중에 please check the mkmf.log which can be found here: 라는걸 보고 cat /var/lib/gems/2.3.0/extensions/x86_64-linux/2.3.0/ffi-1.9.21/mkmf.log 명령어로 살펴봤다.

"gcc -E -I/usr/include/x86_64-linux-gnu/ruby-2.3.0 -I/usr/include/ruby-2.3.0/ruby/backward -I/usr/include/ruby-2.3.0 -I. -Wdate-time -D_FORTIFY_SOURCE=2   -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -fPIC -I/usr/include/ffi conftest.c -o conftest.i"
conftest.c:3:17: fatal error: ffi.h: 그런 파일이나 디렉터리가 없습니다

중간에 이런 내용이 있는데, ffi의 부재같다. sudo apt-get install libffi-dev로 설치해보았다. 그리고 다시 jekyll 설치 시도

$ sudo gem install jekyll
Building native extensions.  This could take a while...

... 중략

Done installing documentation for ffi, rb-inotify, sass-listen, sass, jekyll-sass-converter, ruby_dep, listen, jekyll-watch, kramdown, liquid, mercenary, forwardable-extended, pathutil, rouge, safe_yaml, jekyll after 23 seconds
16 gems installed

성공했다!