This post contains a guide on how to setup Jekyll in Windows (tested in Windows 10 Enterprise (64-bit) and Windows 7 Ultimate (32-bit)).
Run the following command in Windows command prompt under administrator.
@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"
Close the command prompt.
Run the following commands in Windows command prompt under administrator.
choco install ruby -y
Since I’ve already got my own Gemfile
and Gemfile.lock
files, I install Jekyll and all other dependencies using bundler
. Please note that the version of bundler
should match the version indicated in the Gemfile.lock
file (otherwise, you may get some error message saying can't find gem bundler (>= 0.a) with executable bundler (Gem::GemNotFoundException)
).
gem install bundler -v 1.14.6
# Move to the folder that contains `Gemfile` and `Gemfile.lock`
bundle install
The content of my file Gemfile
source 'https://rubygems.org'
gem 'jekyll'
gem 'rouge'
gem 'kramdown'
gem 'rake'
gem 'jekyll-scholar'
gem 'pygments.rb'
gem 'jekyll-sitemap'
gem 'jekyll-feed'
gem 'jekyll-email-protect'
The content of my file Gemfile.lock
GEM
remote: https://rubygems.org/
specs:
addressable (2.5.1)
public_suffix (~> 2.0, >= 2.0.2)
bibtex-ruby (4.4.3)
latex-decode (~> 0.0)
citeproc (1.0.5)
namae (~> 0.8)
citeproc-ruby (1.1.6)
citeproc (>= 1.0.4, < 2.0)
csl (~> 1.4)
colorator (1.1.0)
csl (1.4.5)
namae (~> 0.7)
csl-styles (1.0.1.7)
csl (~> 1.0)
ffi (1.9.18)
ffi (1.9.18-x64-mingw32)
ffi (1.9.18-x86-mingw32)
forwardable-extended (2.6.0)
jekyll (3.4.3)
addressable (~> 2.4)
colorator (~> 1.0)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 1.1)
kramdown (~> 1.3)
liquid (~> 3.0)
mercenary (~> 0.3.3)
pathutil (~> 0.9)
rouge (~> 1.7)
safe_yaml (~> 1.0)
jekyll-email-protect (1.0.3)
jekyll-feed (0.9.2)
jekyll (~> 3.3)
jekyll-sass-converter (1.5.0)
sass (~> 3.4)
jekyll-scholar (5.9.1)
bibtex-ruby (~> 4.0, >= 4.0.13)
citeproc-ruby (~> 1.0)
csl-styles (~> 1.0)
jekyll (~> 3.0)
jekyll-sitemap (1.1.1)
jekyll (~> 3.3)
jekyll-watch (1.5.0)
listen (~> 3.0, < 3.1)
kramdown (1.13.2)
latex-decode (0.2.2)
unicode (~> 0.4)
liquid (3.0.6)
listen (3.0.8)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
mercenary (0.3.6)
multi_json (1.12.1)
namae (0.11.3)
pathutil (0.14.0)
forwardable-extended (~> 2.6)
public_suffix (2.0.5)
pygments.rb (1.1.2)
multi_json (>= 1.0.0)
rake (12.0.0)
rb-fsevent (0.9.8)
rb-inotify (0.9.8)
ffi (>= 0.5.0)
rouge (1.11.1)
safe_yaml (1.0.4)
sass (3.4.23)
unicode (0.4.4.4)
unicode (0.4.4.4-x86-mingw32)
PLATFORMS
ruby
x64-mingw32
x86-mingw32
DEPENDENCIES
jekyll
jekyll-email-protect
jekyll-feed
jekyll-scholar
jekyll-sitemap
kramdown
pygments.rb
rake
rouge
BUNDLED WITH
1.14.6
Download rubygems-update-2.6.7.gem to the folder %USERPROFILE%\Downloads
(indeed you can save it to any folder you like). Then, open a command prompt as administrator and move to the folder using the cd
command, and run the following
gem install --local rubygems-update-2.6.7.gem
update_rubygems --no-ri --no-rdoc
After this, run gem --version
to see the new update version.
Then, uninstall rubygems-update
gem using the command
gem uninstall rubygems-update -x
unicode
gemI got the following error
ERROR: Error installing jekyll:
The 'unicode' native gem requires installed build tools.
Please update your PATH to include build tools or download the DevKit
from 'http://rubyinstaller.org/downloads' and follow the instructions
at 'http://github.com/oneclick/rubyinstaller/wiki/Development-Kit'
To fix this, first you need to check the installed Ruby (which version?) and your OS (32-bit or 64-bit?) to download the suitable development kit. Then, extract the file to some folder, in my case %USERPROFILE%\DevKit
. Then, move to this folder in the command prompt under administrator, and run the followings.
ruby dk.rb init # For generating the config.yml file
ruby dk.rb install
In case you use Windows 64-bit, before running the commands, you need to edit the file dk.rb
(say, using Notepad++) by changing the REG_KEYS
array to
REG_KEYS = [
'Software\RubyInstaller\MRI',
'Software\RubyInstaller\Rubinius',
'Software\Wow6432Node\RubyInstaller\MRI'
]
Then, just simply run bundle install
again.
apt-cyg install git gcc-core gcc-g++ make zlib-devel curl autoconf libiconv libiconv-devel rsync patch unzip openssh openssl-devel libxml2-devel libxslt-devel libffi-devel libgdbm-devel libreadline-devel
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
~/.rbenv/bin/rbenv init
mkdir -p "$(rbenv root)"/plugins
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build
rbenv install --list # lists all available versions of Ruby
rbenv install 2.3.0 # installs Ruby 2.3.0 to ~/.rbenv/versions
rbenv global 2.3.0
rbenv rehash
curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
Download and install OpenSSH for Windows.
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
When you’re prompted to Enter a file in which to save the key
press Enter
. This accepts the default file location (which is indeed %USERPROFILE%\.ssh\id_rsa
).
Then, add the contents of the file id_rsa.pub
(open with Notepad++) to GitHub.
Move to the folder %USERPROFILE%\.ssh
in command prompt and run
ssh-agent /bin/sh
ssh-add id_rsa
See here.
ssh -T git@github.com
Download Gpg4win and install. To generate and use your PGP key, see this article.
Download Git for Windows from here and install it.
git config --global user.name "<your-name>"
git config --global user.email "your_email@example.com"
git config --global gpg.program "C:\Program Files (x86)\GnuPG\bin\gpg.exe"
git config --global user.signingkey <your-gpg-key-id>
To set up the git repo for my personal page, I use the follwing commands:
mkdir %USERPROFILE%\hoanganhduc.github.io # create the directory for my repo
xcopy /E /Y /F _site\* %USERPROFILE%\hoanganhduc.github.io # Copy all Jekyll generated files to the folder
cd %USERPROFILE%\hoanganhduc.github.io # Move to the folder
git init
git remote add origin git@github.com:hoanganhduc/hoanganhduc.github.io.git
git add --all .
git commit -S -m "%date%-%time% - commit"
git push -f origin master
In case you’ve already have the GitHub repo and just want to update, use the command git pull origin master
after git remote add origin git@github.com:hoanganhduc/hoanganhduc.github.io.git
. If you get the error gpg: signing failed: Inappropriate ioctl for device
, then use export GPG_TTY=$(tty)
before git commit -S -m "%date%-%time% - commit"
.
For conventional reason, I create a simple BAT
file named make.bat
to generate and upload the webpage.
jekyll build --config _config.yml && xcopy /E /Y /F _site\* %USERPROFILE%\hoanganhduc.github.io && cd %USERPROFILE%\hoanganhduc.github.io && git add --all . && git commit -S -m "%date%-%time% - commit" && git push -f origin master