Ubuntu 下 jekyll 环境搭建

无论是在 Linux 下还是在 Win 下,搭建 jekyll 环境都想让人吐血

1. 使用最新阿里云镜像源

请确保使用最新的阿里云镜像源,否则将出现无法安装 ruby-dev 的情况,因为使用旧版软件源,软件列表上的依赖关系是老版本的,而内核版本却是最新的,因此 ruby-dev 的依赖会与内核版本冲突,会发生类似下方描述得错误

下列软件包有未满足的依赖关系:
 libc6-i386 : 依赖: libc6 (= 2.15-0ubuntu10.5) 但是 2.19-0ubuntu6 已经安装
 libgcc1:i386 : 依赖: libc6:i386 (>= 2.2.4) 但无法安装它
 libselinux1:i386 : 依赖: libc6:i386 (>= 2.8) 但无法安装它
                    依赖: libpcre3:i386 但无法安装它

所以你需要更新软件源,同时 sudo apt-get update 更新软件列表

2. 安装 Ruby 工具

真搞不懂 Ruby 开发的人为什么要把 Ruby 环境搞得那么复杂 (╬▔皿▔)凸;服了他们了;

为了防止出现未知的错误,先安装 Ruby-dev:

sudo apt-get install ruby-dev

接着补全安装全套 ruby:

sudo apt-get install ruby-full

3. 安装所需构建工具及依赖

apt-get install make gcc g++ libxslt-dev libxml2-dev build-essential -y

4. 更新 Gem 软件源

zohar@Titan:~$ gem source -l
*** CURRENT SOURCES ***

https://rubygems.org/
zohar@Titan:~$ gem source -r
ERROR:  While executing gem ... (OptionParser::MissingArgument)
    missing argument: -r
zohar@Titan:~$ gem source -r 'https://rubygems.org/'
https://rubygems.org/ removed from sources
zohar@Titan:~$ gem source -l
*** CURRENT SOURCES ***

zohar@Titan:~$ gem source --add https://gems.ruby-china.com
https://gems.ruby-china.com added to sources
  • gem source -l 可以查看已有的软件源

  • gem source -r 'https://rubygems.org/' 移除默认境外软件源

  • gem source --add https://gems.ruby-china.com 设置默认软件源为国内镜像地址

4. 安装 bundler

sudo gem install bundler

5. 安装 jekyll

sudo gem install jekyll

6. gem 安装依赖工具

进入 jekyll 工程目录

git clone ....
cd zoharyips.github.io

或者新建一个工程

jekyll new myblog && cd myblog

安装项目所需依赖,如果没有 Gemfile 这个配置文件就不用:

bundle install

此时如果出现错误:

root@hostname:/opt/metasploit-framework# bundle install
Traceback (most recent call last):
    2: from /usr/local/bin/bundle:23:in `'
    1: from /usr/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
/usr/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)
root@hostname:/opt/metasploit-framework#

目前我遇到过有两种错误的可能:

  1. ruby 版本与 bundle 版本冲突

    返回第一步,卸载 bundler、ruby,更新软件列表后重装。

  2. ruby 版本与项目中 Gem 文件指定的版本冲突

    项目中如果有 Gemfile.lock 请删除之,因为这是之前构建的信息,重新构建会重新生成此文件。

运行服务:bundle exec jekyll serve

成功运行😎

successfully_running

直接访问 http://127.0.0.1:4000 即可直接浏览博客,这是即时更新的,因此非常利于修改博客

7. 疑难杂症

Invalid US-ASCII character

Conversion error: Jekyll::Converters::Scss encountered an error while converting 'assets/css/style.scss': Invalid US-ASCII character "\xE2" on line 5
jekyll 3.8.5 | Error:  Invalid US-ASCII character "\xE2" on line 5

找到 gem 安装的 sass 模块,一般在 /var/lib/gems/2.5.0/gems/ 下,修改 lib/sass.rb 文件,在所有 require 后添加:

Encoding.default_external = Encoding.find('utf-8')
正在加载今日诗词....

Access Statistics

Table of Contents