윈도우즈에서의 Jekyll

윈도우즈가 공식적으로 지원되는 플랫폼은 아니지만, 몇 가지만 손보면 Jekyll 을 실행할 수 있습니다. 이 페이지의 목적은 윈도우즈 사용자에 의해서 발굴된 정보들을 모아두는 것입니다.

Jekyll 설치하기

RubyInstaller 를 통한 설치

가장 쉬운 방법은 RubyInstaller for Windows 를 사용하는 것입니다.

RubyInstaller 는 윈도우즈 기반으로 루비 언어와 실행 환경, 중요 문서 등을 포함하고 있습니다. 여기서는 RubyInstaller-2.4 또는 그 이상의 버전을 다루고 있으며, 예전 버전은 따로 Devkit 설치를 필요로 합니다.

  1. RubyInstaller 다운로드 페이지에서 Ruby+Devkit 버전을 다운로드 받아 설치하세요. 설치 시 기본 옵션을 사용하세요.
  2. 설치 마법사의 마지막 단계에서 ridk install 절차를 수행하세요. Native 확장기능으로 젬을 설치하기 위해 필요한 절차입니다. 이에 관련된 추가 정보는 RubyInstaller 문서에서 찾을 수 있습니다.
  3. 시작 메뉴에서 명령 프롬프트 창을 열고, 환경변수 PATH 를 적절히 설정하세요. Jekyll 과 Bundler 를 설치합니다: gem install jekyll bundler
  4. Jekyll 이 올바르게 설치되었는지 확인합니다: jekyll -v

끝났습니다. 이제 Jekyll 을 사용할 수 있습니다!

윈도우즈 10 에서 Bash 를 통한 설치

버전 1607 또는 그 이상의 윈도우즈 10 을 사용중인 상황에서, Jekyll 을 사용하는 또 다른 방법은 Windows Subsystem for Linux 를 설치하는 것입니다.

반드시 Windows Subsystem for Linux 가 활성화되어 있어야 합니다.

모든 패키지 / 저장소의 정보가 최신인지 먼저 확인합시다. 새 명령어 프롬프트를 열고, 다음과 같이 입력합니다:

bash

명령어 프롬프트가 Bash 로 바뀌게 됩니다. 이제 저장소 목록과 패키지를 업데이트해야 합니다.

sudo apt-get update -y && sudo apt-get upgrade -y

이제 루비를 설치할 수 있습니다. 여기서 우리는 우분투에 최적화된 버전의 루비를 제공하는 BrightBox 의 저장소를 사용할 것입니다.

sudo apt-add-repository ppa:brightbox/ruby-ng
sudo apt-get update
sudo apt-get install ruby2.5 ruby2.5-dev build-essential dh-autoreconf

이제 루비 젬들을 업데이트합시다:

gem update

이제 남은것은 Jekyll 을 설치하는 것 뿐입니다.

gem install jekyll bundler

(중요: sudo 사용 안함.)

다음 명령으로 Jekyll 이 올바르게 설치되었는지 확인합니다:

jekyll -v

이제 끝났습니다!

시간 정보가 올바르게 관리되는지 확인하려면 _posts 폴더를 살펴보면 됩니다. 마크다운 파일의 파일명에 현재 날짜가 포함되어 있어야 합니다.

일반 사용자 계정 이슈

만약 `jekyll new` 명령으로 "Your user account isn't allowed to install to the system RubyGems" 와 같은 에러가 발생한다면, 문제해결에서 "관리자 권한 없이 Jekyll 실행하기" 부분을 살펴보세요.

윈도우즈에서 사용하는 우분투용 Bash 는 지금도 개발이 진행중인 관계로, 문제가 발생할 가능성이 있습니다.

인코딩

만약 UTF-8 인코딩을 사용한다면, 문서 안에 BOM 헤더를 사용하지 않아야 합니다. 그렇지 않으면 Jekyll 에 아주, 아주 안 좋은 일이 벌어집니다. 이는 특히, 윈도우즈에서 Jekyll 을 사용하는 것에 연관된 문제입니다.

그리고, 사이트 생성 단계에서 “Liquid Exception: Incompatible character encoding” 에러가 발생하는 경우엔, 콘솔창의 코드 페이지를 UTF-8 로 바꿔야 할 수도 있습니다. 다음과 같이 입력하면 됩니다:

chcp 65001

타임존 관리

윈도우즈에서는 루비 인터프리터가 IANA 타임존 정보를 처리하는데 필요한 정보 원천이 없기 때문에, 대신 환경변수 TZ 를 사용하며 그 기본값은 UTC/GMT 00:00 입니다. 윈도우즈 사용자들도 POSIX 형식의 타임존 설정을 통해 블로그의 타임존을 지정할 수 있었지만, DST 규칙에 따라 시간을 조정해야한다는 부분이 사용자 친화적이지 않았습니다.

이제 Jekyll 은 공식적으로 인정된 IANA 타임존 데이터베이스에 근거하여 타임존을 자체적으로 설정하는 루비 젬을 사용합니다. 윈도우즈에서 개발환경을 활성화 하기 위해, Jekyll v3.4 또는 그 이상의 버전에서는 ‘새로’ 블로그를 생성할 때 기본적으로 Gemfile 에 다음과 같은 내용이 추가되며, 이전에 생성된 사이트에서는 Gemfile 을 수정(하고 설치)해야 할 필요가 있습니다:

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
TZInfo 2.0 비호환

TZInfo 라이브러리 버전 2.0 에서 타임존 오프셋 계산방법을 변경했습니다. 이로 인해 윈도우즈에서 Jekyll 3.x 로 사이트를 생성할 때 포스트의 날짜와 시간에 오류가 발생합니다.

따라서 Gemfilegem 'tzinfo', '~>1.2' 를 추가해서 이 타임존 라이브러리의 버전을 1.2 로 고정시킬 것을 권장합니다.

자동 재생성

생성이나 미리보기 시에 --watch 스위치를 설정하면 Jekyll 은 루비 젬 listen 을 사용하여 변경사항을 감지합니다. 유닉스 시스템에는 listen 이 기본 지원되지만, 윈도우즈에서도 호환되려면 추가로 다른 루비 젬이 더 필요할 수 있습니다.

윈도우즈에서 자동 재생성 기능에 무언가 문제가 있다면, 사이트의 Gemfile 에 다음 내용을 추가합니다:

gem 'wdm', '~> 0.1.1', :install_if => Gem.win_platform?

반드시 Ruby+Devkit 버전 RubyInstaller 를 사용하고 MSYS2 빌드 도구를 설치해야지만 wdm 젬을 정상적으로 설치할 수 있습니다.