Ubuntu
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. 安装所需构建工具及依赖
sudo 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:~$
zohar@Titan:~$ gem source -r 'https://rubygems.org/'
https://rubygems.org/ removed from sources
zohar@Titan:~$
zohar@Titan:~$ gem source --add https://gems.ruby-china.com
https://gems.ruby-china.com added to sources
-
gem source -l
可以查看已有的软件源 -
gem source -r '[url]'
移除指定软件源 -
gem source --add [url]
添加软件源
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#
目前我遇到过有两种错误的可能:
-
ruby 版本与 bundle 版本冲突
返回第一步,卸载 bundler、ruby,更新软件列表后重装。
-
ruby 版本与项目中 Gem 文件指定的版本冲突
项目中如果有 Gemfile.lock 请删除之,因为这是之前构建的信息,重新构建会重新生成此文件。
运行服务:bundle exec jekyll serve
成功运行😎
直接访问 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')
CentOS 7 / Ubuntu 通用
1. 安装 RVM
RVM 是一个命令行工具,可以提供一个便捷的多版本Ruby 环境的管理和切换。
-
请求 RVM 密钥
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
-
下载 RVM 安装脚本
curl -sSL https://get.rvm.io -o rvm.sh
-
执行脚本安装 RVM
cat rvm.sh | bash -s stable
-
更新环境变量
source /usr/local/rvm/scripts/rvm # 查看运行版本 rvm -v
-
更换国内镜像源
echo "ruby_url=https://cache.ruby-china.com/pub/ruby" > ~/.rvm/user/db
2. 安装 Ruby
# 安装 ruby 依赖
rvm requirements
# 查看 ruby 可安装列表
rvm list known
# 安装 ruby
rvm install 2.7.0
# 如果安装了多个 ruby,指定默认的 ruby
rvm use 2.7.0 --default
# 查看运行版本
ruby -v
# 查看 gem 版本
gem -v
# gem 换源
gem source -r 'https://rubygems.org/'
> https://rubygems.org/ removed from sources
gem source --add https://gems.ruby-china.com
3. 安装 Bundler
gem install bundler
4. 安装 Jekyll
gem install jekyll
5. 运行 Jekyll
# 进入项目目录
cd workspace
bundle exec jekyll serve -P 80
6. 解决 ruby2.7 的大量无用输出
为 RUBY 设置运行选配置即可:
-
在运行命令时设置:
-
Ruby2.7 项目:
RUBYOPT='-W:no-deprecated -W:no-experimental' bundle exec ...
-
兼容低版本:
RUBYOPT='-W0' bundle exec ...
-
-
在用户环境变量设置:
- Ruby2.7 项目:
export RUBYOPT='-W:no-deprecated -W:no-experimental'
- 兼容低版本:
export RUBYOPT='-W0'
- Ruby2.7 项目: