Cygwin下安装Jekyll

在Archlinux用着用着虚拟机,XP系统突然崩溃重启不来了,当时正赶着要用Windows系统,所以一气之下把系统重做为Windows 7了,这是好长时间以前的事了,当时就想着用Cygwin装了Jekyll来用,结果没成功,今天又试了一次,好歹是成功了,记录一下。

安装Jekyll之前要先安装Ruby,这里使用的是通过rvm来安装Ruby,在安装之前要使得Cygwin已安装了patchzlib-developensslopenssl-devellibyaml-devellibyaml0_2sqlite3makelibtoolgcc-coreautoconfautomakebisonm4mingw64-i686-gccmingw64-x86_64-gcccygwin32-readline1

安装Ruby,安装方法可见这里,主要步骤为: 安装rvm

    curl -L https://get.rvm.io | bash -s stable --ruby

安装ruby

    rvm list known
    rvm install 2.1
    rvm use 2.1 --default

安装jekyll

    gem update --system
    gem list
    gem install jekyll

安装jekyll会出现错误,错误主要是由于ffi-1.9.3.gem的安装问题:

    .
    .
    .
    compiling ffi.c
    compiling Function.c
    Function.c: 在函数'callback_invoke'中:
    Function.c:479:9: 警告:
    传递'rb_thread_call_with_gvl'的第1个参数时在不兼容的指针类型间转换 [默认启用]
             rb_thread_call_with_gvl(callback_with_gvl, &cb);
	     ^
    .
    .
    .
    linking shared-object ffi_c.so
    Call.o: 在函数'call_blocking_function'中:
    /home/$USER/.rvm/gems/ruby-2.1.1/gems/ffi-1.9.3/ext/ffi_c/Call.c:294:
    对'ffi_call'未定义的引用
    /home/$USER/.rvm/gems/ruby-2.1.1/gems/ffi-1.9.3/ext/ffi_c/Call.c:294:(.text+0xa4):
    relocation truncated to fit: R_X86_64_PC32 against undefined symbol
    'ffi_call'
    .
    .
    .
    collect2: 错误: ld 返回 1
    Makefile:232: recipe for target 'ffi_c.so' failed
    make: *** [ffi_c.so] Error 1
    .
    .
    .

解决方法见这里,也即:在Cygwin中安装libffi6libffi-develcygwin32-libffipkg-config并将PKG_CONFIG_PATH指向为”/lib/pkgconfig”

    export PKG_CONFIG_PATH="/lib/pkgconfig"

这样就可以安装成功Jekyll了。

安装完Jekyll后在博客目录运行jekyll serve会发现Liquid抛出异常:

  .
  .
  .
  Generating... Liquid Exception: No such file or directory - C:\Windows\System32\cmd.exe in 
  .
  .
  .

解决方法在这里,即设置一下COMSPEC变量:

    export COMSPEC=/cygdrive/c/Windows/System32/cmd.exe

好了,这样就可以运行jekyll serve了。在Cygwin中安装Jekyll的事情到此就结束了。

  1. 这里uname -a查看Cygwin版本为”CYGWIN_NT-6.1”,cygcheck -V为”cygcheck (cygwin) 1.7.28”。 

Qing Fan 10 March 2014
blog comments powered by Disqus