另一种在Windows10下使用Jekyll的方法
周日 31 三月 2019最近准备继续记博客,需要安装Jekyll环境。
手头既有Mac也有PC,考虑到上班期间带的是PC,所以还是要在Windows下配置一个Jekyll环境。
按照Jekyll官网的方法,是去安装RubyInstaller。但是,RubyInstaller本身是基于MSYS2的,我的PC已经装了MSYS2,不想再多搞一套,于是决定基于MSYS2安装Ruby和Jekyll。
MSYS2类似Cygwin(其实就是一个Cygwin分支),可以让用户在Windows下使用UNIX环境的套件。这里先介绍一下相关概念:
-
Pacman是一套流行于Arch Linux下的软件包管理软件。
-
MinGW是一套在Windows使用的GNU工具链,MinGW-w64是新一代MinGW,同时支持32位和64位。
-
MSYS是为帮助MinGW在Windows下使用,随MinGW提供的一套基本的POSIX操作环境。它是基于较旧的Cygwin项目创建的一个分支。MSYS2和MSYS并不是同一个项目的不同版本,它们各为独立项目。
MSYS2集成了Pacman和MinGW-w64。
我们在中国使用MSYS2,最好设置一下国内的镜像,网上的文章基本都是让用中科大的镜像,但目前他们的东西有点问题,只好改用清华的镜像。可惜了,实际上中科大离我很近。
按照页面上的说明设置好镜像,并执行:
pacman -Syu
在最后提示关闭MSYS2时,点窗口的X进行关闭,再去MSYS2安装目录里运行一下autorebase.bat。然后打开MSYS2,执行一下更新:
pacman -Su
之后就安装一系列软件,我这里是:
pacman -S vim git base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-ruby mingw-w64-x86_64-ruby-native-package-installer
之所以是使用mingw64/mingw-w64-x86_64-ruby,而不是msys/ruby,是因为我先用它试了一番,在Gem安装Jekyll时总是有个库编不过去。我没有深究下去,先这么着吧,以后有空再找找解决方法。
安装了这个版本的Ruby之后,需要将shell type设为mingw64进入MSYS2环境,也就是从“MSYS2 MinGW 64-bit”而不是“MSYS2 MSYS”进。前者会把/mingw64/bin加入到PATH里,而此版本Ruby安装在/mingw64/bin中。
然后,我用Gem安装Bundler和Jekyll:
gem install bundler jekyll
我已经有个很久没写过的旧博客,需要升级一下,所以进入博客的目录,执行了一下:
bundle update
据说升级Gem是一件很折腾人的事情,Ruby程序员往往一次升级单个Gem,一次性bundle update,容易出问题。我也是反复在bundle install和bundle update之间折腾,才搞定了这件事。具体可以查一下bundle install和bundle update之间的区别。
升级完成之后,就可以继续用Jekyll写博客了。
PS:
我为了复习怎么用Jekyll,粗略的看了一下Jekyll Step by Step Tutorial。它在第一步里讲使用jekyll serve来运行Jekyll,这和我们平常使用bundle exec jekyll serve的方式有点不一样。实际上在第十步里有解释怎么一回事。我也不是很熟悉Ruby,使用Jekyll的很多人估计也是这样。反正Bundler大概是一个处理相同Gem的不同版本被同时引用的工具,我们记得用它就行了。
另外,这一篇虽然标题是Windows10,并不是说不适用于之前的Windows版本,我只是没有试过。