树莓派4的Jenkins环境中安装Jekyll插件遇阻求助
树莓派4 Jenkins流水线中Jekyll插件安装问题解决方案
问题背景
在树莓派4的Jenkins流水线(用于网站发布)中安装Jekyll插件jekyll-content-security-policy-generator时遇到阻碍,Gemfile内容如下:
# frozen_string_literal: true source "https://rubygems.org" # Use the latest version. gem 'jekyll', '~> 4.0' group :jekyll_plugins do # (other jekyll plugins) gem 'nokogiri' gem 'jekyll-content-security-policy-generator' gem 'jekyll_picture_tag', '~> 2.0' gem 'jekyll-seo-tag', '~> 2.8.0' gem 'jekyll-sitemap', '~> 1.4.0' end
已尝试的方法及问题
- 方法1:执行
bundle install显示安装完成,但运行构建命令JEKYLL_ENV=production /var/lib/jenkins/.rbenv/shims/jekyll build时触发GLIBC版本错误,提示系统缺少GLIBC_2.29,不支持预编译的Nokogiri原生gem。 - 方法2:执行
bundle config set force_ruby_platform true后重新安装,运行构建命令时出现Bundler::GemNotFound错误,提示找不到sass-embedded-1.57.1,手动安装并添加到Gemfile也无法解决;切换回原配置则再次触发GLIBC错误。
解决方案
1. 解决Nokogiri的GLIBC版本冲突
树莓派自带的Raspbian系统GLIBC版本偏低,预编译Nokogiri依赖高版本GLIBC,需强制安装纯Ruby版本的Nokogiri:
- 先安装编译依赖:
sudo apt-get update && sudo apt-get install build-essential patch ruby-dev zlib1g-dev liblzma-dev - 修改Gemfile,给Nokogiri添加平台限制:
gem 'nokogiri', platforms: [:ruby]
2. 解决sass-embedded缺失问题
sass-embedded无ARM平台预编译包,开启force_ruby_platform后Bundler找不到适配版本,需替换为纯Ruby的sass:
- 在Gemfile中添加强制依赖:
gem 'sass', '~> 3.7'
3. 完整操作流程
- 安装系统编译依赖(见步骤1)。
- 修改Gemfile,调整Nokogiri和sass配置:
# frozen_string_literal: true source "https://rubygems.org" # Use the latest version. gem 'jekyll', '~> 4.0' # 强制使用纯Ruby版本的sass,避免sass-embedded的ARM平台问题 gem 'sass', '~> 3.7' group :jekyll_plugins do # (other jekyll plugins) gem 'nokogiri', platforms: [:ruby] gem 'jekyll-content-security-policy-generator' gem 'jekyll_picture_tag', '~> 2.0' gem 'jekyll-seo-tag', '~> 2.8.0' gem 'jekyll-sitemap', '~> 1.4.0' end - 重置bundle配置,取消
force_ruby_platform的强制设置:bundle config unset force_ruby_platform - 重新执行安装:
bundle install - 运行Jekyll构建命令:
JEKYLL_ENV=production /var/lib/jenkins/.rbenv/shims/jekyll build
内容的提问来源于stack exchange,提问作者cabreracanal
相关产品推荐
相关产品推荐

