文章

配置记录

由于原来电脑故障,HEXO 的博客源文件丢失,导致博客断更很久,并且无法恢复。 经调研,jekyll 博客生成更加便捷,且能直接以源文件方式发布,非常符合我想法 决定研究一下,使用 jekyll 重新重拾博客,记录工作和生活

过程记录

jekyll 首页有安装体验命令,不料第一步就直接卡死了。

1
2
3
4
5
6
7
gem install jekyll bundler
jekyll new my-awesome-site
cd my-awesome-site
bundle install
bundle exec jekyll serve

# => 打开浏览器 http://localhost:4000

报错如下:意思是没有 gems 文件夹的写入权限

1
2
3
➜  ~ gem install jekyll bundler
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.

随后查了一下 RubyGems 官网 发现版本已经差了很多,决定升级版本先。 按官网升级操作后依旧报上面错误。就想到同时同时升级一下 Ruby 本身,遂去 Ruby 官网 查看,发现最新版 3.1.2, 与我当前版本也差很多。我当前版本如下

1
2
➜  ~ ruby -v
ruby 2.6.8p205 (2021-07-07 revision 67951) [universal.x86_64-darwin21]

官方介绍要使用三方工具更新 ruby, 因为系统原生工具预装版本都比较老,遂使用 homebrew 来安装 Ruby。命令如下

1
2
3
4
➜  ~ brew install ruby
Updating Homebrew...

// 这个命令之后就直接开始了 Homebrew 自己的更新。 我这些软件看来都是老古董版本了 😭,登录挺长时间算是更新完了

Ruby 安装完成后有如下提示,核心意思是 ruby 本身在系统中预置了,为了不和系统预置版本冲突放到单独的位置,使用此版本需要自己配置环境变量,直接按提示配置即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
By default, binaries installed by gem will be placed into:
  /usr/local/lib/ruby/gems/3.0.0/bin

You may want to add this to your PATH.

ruby is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

If you need to have ruby first in your PATH, run:
  echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc

For compilers to find ruby you may need to set:
  export LDFLAGS="-L/usr/local/opt/ruby/lib"
  export CPPFLAGS="-I/usr/local/opt/ruby/include"

For pkg-config to find ruby you may need to set:
  export PKG_CONFIG_PATH="/usr/local/opt/ruby/lib/pkgconfig"

完了,pod 不能用了

经过上边一波操作,jekyll 是安装了,但是影响到了 cocoapods 的使用。报下面的错误

1
2
3
4
➜  ~ pod -v
/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems.rb:283:in `find_spec_for_exe': can't find gem cocoapods (>= 0.a) with executable pod (Gem::GemNotFoundException)
	from /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0/rubygems.rb:302:in `activate_bin_path'
	from /usr/local/bin/pod:23:in `<main>'

看样子系统的 ruby 文件还是 2.6.0 ,本来尝试修改重装一下 cocoapods, 发现问题并不能解决

1
2
3
➜  sudo gem update --system
➜  sudo gem install cocoapods
➜  pod -v  // 还是一样的错误

所以想到删除系统的 Ruby.framework 然后彻底重装。发现由于系统文件 /System/Library/Frameworks/Ruby.framework 的保护机制,无法删除,重新想方法,尝试用 rvm 来管理 ruby 版本. 参考官网其安装命令如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
➜  \curl -sSL https://get.rvm.io | bash -s stable

Downloading https://bitbucket.org/mpapis/rvm/get/1.29.12.tar.gz
Downloading https://bitbucket.org/mpapis/rvm/downloads/1.29.12.tar.gz.asc
Found PGP signature at: 'https://bitbucket.org/mpapis/rvm/downloads/1.29.12.tar.gz.asc',
but no GPG software exists to validate it, skipping.
Installing RVM to /Users/quxiaoyou/.rvm/
    Adding rvm PATH line to /Users/quxiaoyou/.profile /Users/quxiaoyou/.mkshrc /Users/quxiaoyou/.bashrc /Users/quxiaoyou/.zshrc.
    Adding rvm loading line to /Users/quxiaoyou/.profile /Users/quxiaoyou/.bash_profile /Users/quxiaoyou/.zlogin.
Installation of RVM in /Users/quxiaoyou/.rvm/ is almost complete:

  * To start using RVM you need to run `source /Users/quxiaoyou/.rvm/scripts/rvm`
    in all your open shell windows, in rare cases you need to reopen all shell windows.
Thanks for installing RVM 🙏
Please consider donating to our open collective to help us maintain RVM.

👉  Donate: https://opencollective.com/rvm/donate

安装好 rvm 后,需要设置 ruby 版本。 经验证,cocoapods 只能在默认 ruby 版本下安装并使用

1
2
3
4
5
6
7
8
9
rvm automount   // 挂载所有的 ruby 版本,包含系统和自己下载的

rvm list  // 查看当前所有 ruby 版本

rvm list known  // 查看远端所有的 ruby 版本

rvm install {远端版本的版本号}  // 安装远端 ruby 版本, 卸载命令 remove

rvm use ext-ruby-2.6.8 --default    // 切换某版本为默认版本

核心来了,cocoapods 不能用是因为 pod 和 ruby 版本不对应,经实践,只有将系统 ruby 版本设置为默认版本并卸载和重装 cocoapods 才行

1
2
3
4
rvm use ext-ruby-2.6.8 --default
sudo gem uninstall cocoapods
gem install cocoapods
pod -v  // OK,已经可以正常使用 pod 命令了

安装主题

我选择的主题 chirpy, 我采用的是直接 clone 源码,本地安装的方式,因为我原来的博客暂时不想直接删除,并且主题满足我的需要。

  1. git clone https://github.com/cotes2020/jekyll-theme-chirpy.git
  2. cd jekyll-theme-chirpy
  3. bundle
  4. bundle exec jekyll s

好了,可以去 http://127.0.0.1:4000/ 看效果了

配置和发布

配置

配置主题的一些用户/头像/社交媒体链接等,可以直接在网站目录下找到 _config.yml 打开并配置即可,我只配置了下面几项,其余尽量保持原样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
lang: zh-CN

title: xiaoyouPrince                          # the main title

tagline: 芝兰生于空谷,不以无人而不芳   # it will display as the sub-title

description: >-                        # used by seo meta and the atom feed
  这里是晓友(xiaoyouPrince) 的博客,用来记录一些技术和想法,主要专注于 Swift 和 iOS 开发.

# fill in the protocol & hostname for your site, e.g., 'https://username.github.io'
url: 'https://xiaoyouPrince.github.io'

github:
  username: xiaoyouPrince             # change to your github username

twitter:
  username: xiaoyouprince            # change to your twitter username

social:
  # Change to your full name.
  # It will be displayed as the default author of the posts and the copyright owner in the Footer
  name: xiaoyouPrince
  email: xiaoyouPrince@gmail.com             # change to your email address
  links:
    # The first element serves as the copyright owner's link
    - https://twitter.com/xiaoyouprince      # change to your twitter homepage
    - https://github.com/xiaoyouPrince       # change to your github homepage
    # Uncomment below to add more social links
    # - https://www.facebook.com/username
    # - https://www.linkedin.com/in/username

# the avatar on sidebar, support local or CORS resources
avatar: ./assets/img/favicons/favicon.ico

发布

编辑文件,命名规范 YYYY-MM-DD-TITLE.EXTENSION 并放到 _post 文件夹中。

编辑文件头部如下

1
2
3
4
5
6
7
---
title: TITLE
date: YYYY-MM-DD HH:MM:SS +/-TTTT
categories: [TOP_CATEGORIE, SUB_CATEGORIE]
tags: [TAG]     # TAG names should always be lowercase
layout: post	# 这个在本主题中已经默认,可以不用写,但是最好还是写上,万一以后换主题呢
---

编辑好了,就在终端,在网站根目录下执行启动本地服务的命令

1
bundle exec jekyll s

参考

https://github.com/cotes2020/jekyll-theme-chirpy
https://chirpy.cotes.page/posts/write-a-new-post/

本文由作者按照 CC BY 4.0 进行授权