Linux或WSL本地运行和调试基于Jekyll的Github Pages

以Windows 10 WSL(Ubuntu 16.04)为例

由Jeza Chen 发表于 November 20, 2019 ,并更新于July 26, 2020

最近需要在WSL本地运行和调试Github Pages的网页,虽然之前在Linux系统也弄过,但一些细节已经忘了差不多,写这篇文章备忘一下。

前提环境

  • Linux系统或Windows 10的WSL;

Ruby的安装

更新系统资源包

在终端中输入命令 sudo apt-get update

安装Ruby基本构建工具

在终端中输入命令 sudo apt-get install build-essential

安装ruby-install

  1. 输入命令 wget -O ruby-install-0.6.1.tar.gz https://github.com/postmodern/ruby-install/archive/v0.6.1.tar.gz,下载压缩包。

  2. 输入命令tar -xzvf ruby-install-0.6.1.tar.gz,解压该压缩包。

  3. 输入命令cd ruby-install-0.6.1,进入压缩后的目录。

  4. 输入命令sudo make install,安装ruby-install。

  5. 输入命令ruby-install -V,观察ruby-install是否安装成功,如果显示”ruby-install: 0.6.1”的字样,则说明安装成功。

安装ruby

  1. 输入命令ruby-install ruby 2.4.1,开始安装ruby。

更新于2020-06-03: 最近发现这个命令在不开代理的情况下无法正常工作,因为github部分页面在国内无法访问了; 如果是Linux系统,请需要配置好相应的代理; 如果是WSL,且Windows上已经配置了代理,可以参考这篇文章

安装chruby插件

  1. 为了能够使用ruby须安装chruby插件,相应步骤和ruby-install大致相同:

    1. wget -O chruby-0.3.9.tar.gz https://github.com/postmodern/chruby/archive/v0.3.9.tar.gz
    2. tar -xzvf chruby-0.3.9.tar.gz
    3. cd chruby-0.3.9/
    4. sudo make install
  2. 为了能够在shell中能运行chruby,需要在相应的配置文件写入一些信息,可以使用以下命令一步完成:

    cat >> ~/.$(basename $SHELL)rc <<EOF
    source /usr/local/share/chruby/chruby.sh
    source /usr/local/share/chruby/auto.sh
    EOF
    
  1. 为了使其立即生效,重新加载shell:exec $SHELL

  2. 此时在终端输入chruby,观察是否安装成功。如果出现”ruby-2.4.1”或类似的字样,则说明安装成功。

将该Ruby作为系统的默认Ruby

  1. 输入命令vim ~/.ruby-version,在vim程序中输入以下内容:

    ruby-2.4.1

    这个文件告诉chruby我们默认使用哪个Ruby。要改变我们使用的ruby版本,运行chruby ruby-2.4.1。

  2. 输入命令ruby -v,检测ruby的版本是否正确。

安装Bundler和Jekyll

输入命令gem install jekyll bundler,安装即可。

运行你的Github Pages

  1. 使用git克隆你的Github Pages项目,这里不再赘述。

  2. 进入仓库目录,输入bundle install,进行依赖库的下载工作。

    注:如果输入后没有反应,可能是访问国外的镜像源比较慢,此时使用Ctrl+C退出后在输入bundle config mirror.https://rubygems.org https://gems.ruby-china.com更改镜像源。

  3. 输入bundle exec jekyll serve,此时你的Github Pages已经运行在本地的4000端口,在浏览器上输入http://127.0.0.1:4000即可访问。

  4. 编辑网页的内容并保存后,程序会自动重新加载网页,不用自己手动操作,可以很方便地调试。

更新:另一种方法

这几天重新安装了Elementary OS,发现也有一个可行的途径。全程使用apt安装,无需自己编译。

  1. 输入sudo apt install ruby ruby-dev,安装最新版的ruby和开发包。

  2. 使用git同步博客到本地。需要保证仓库下已经有Gemfile文件。

  3. 打开终端,进入博客对应的目录,输入gem install bundler -v "$(grep -A 1 "BUNDLED WITH" Gemfile.lock | tail -n 1)"安装对应的Bundler版本。如果权限不够则在前面加上sudo

  4. 进入仓库目录,输入bundle install,进行依赖库的下载工作。

    注:如果输入后没有反应,可能是访问国外的镜像源比较慢,此时使用Ctrl+C退出后在输入bundle config mirror.https://rubygems.org https://gems.ruby-china.com更改镜像源。

  5. 输入bundle exec jekyll serve运行即可。

2022.08.02 更新:运行过程中bundle报错“jekyll was resolved to 4.2.0, which depends on …”问题的处理

参见:Stack Overflow的解答

只要删除Gemfile.lock文件,再运行bundle update更新即可。

2022.08.22 更新:运行过程中bundle报错“cannot load such file – webrick (LoadError)”问题的处理

参见:Github上的一个issue

只要运行bundle add webrick命令即可。