I have an issue while installing a gem on Jekyll, on a Raspberry Pi 4 (which runs a Jenkins pipeline that I use to publish a website).
I'm trying to install the jekyll-content-security-policy-generator plugin based on https://github.com/strongscot/jekyll-content-security-policy-generator.
But I am stuck installing it and I can't figure it out how to make it work.
This is what my Gemfile looks like:
# 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
And this is what I have tried right now:
- First approach
> bundle install
[...]
Bundle complete! 6 Gemfile dependencies, 42 gems now installed.
> JEKYLL_ENV=production /var/lib/jenkins/.rbenv/shims/jekyll build
ERROR: It looks like you're trying to use Nokogiri as a precompiled native gem on a system
with an unsupported version of glibc.
/lib/arm-linux-gnueabihf/libm.so.6: version `GLIBC_2.29' not found (required by /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/nokogiri-1.14.1-arm-linux/lib/nokogiri/3.1/nokogiri.so) - /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/nokogiri-1.14.1-arm-linux/lib/nokogiri/3.1/nokogiri.so
If that's the case, then please install Nokogiri via the `ruby` platform gem:
gem install nokogiri --platform=ruby
or:
bundle config set force_ruby_platform true
Please visit https://nokogiri.org/tutorials/installing_nokogiri.html for more help.
/var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/nokogiri-1.14.1-arm-linux/lib/nokogiri/extension.rb:7:in `require_relative': /lib/arm-linux-gnueabihf/libm.so.6: version `GLIBC_2.29' not found (required by /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/nokogiri-1.14.1-arm-linux/lib/nokogiri/3.1/nokogiri.so) - /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/nokogiri-1.14.1-arm-linux/lib/nokogiri/3.1/nokogiri.so (LoadError)
from /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/nokogiri-1.14.1-arm-linux/lib/nokogiri/extension.rb:7:in `<top (required)>'
from /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/nokogiri-1.14.1-arm-linux/lib/nokogiri.rb:8:in `require_relative'
from /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/nokogiri-1.14.1-arm-linux/lib/nokogiri.rb:8:in `<top (required)>'
from /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/bundler-2.4.6/lib/bundler/runtime.rb:60:in `require'
from /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/bundler-2.4.6/lib/bundler/runtime.rb:60:in `block (2 levels) in require'
from /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/bundler-2.4.6/lib/bundler/runtime.rb:55:in `each'
from /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/bundler-2.4.6/lib/bundler/runtime.rb:55:in `block in require'
from /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/bundler-2.4.6/lib/bundler/runtime.rb:44:in `each'
from /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/bundler-2.4.6/lib/bundler/runtime.rb:44:in `require'
from /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/bundler-2.4.6/lib/bundler.rb:195:in `require'
from /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/jekyll-4.3.2/lib/jekyll/plugin_manager.rb:53:in `require_from_bundler'
from /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/jekyll-4.3.2/exe/jekyll:11:in `<top (required)>'
from /var/lib/jenkins/.rbenv/versions/3.1.3/bin/jekyll:25:in `load'
from /var/lib/jenkins/.rbenv/versions/3.1.3/bin/jekyll:25:in `<main>'
Googling this error led me to the second approach, which is the same, but it sets a configuration flag first.
- Second approach
> bundle config set force_ruby_platform true
> bundle install
> JEKYLL_ENV=production /var/lib/jenkins/.rbenv/shims/jekyll build
/var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/bundler-2.4.6/lib/bundler/definition.rb:524:in `materialize': Could not find sass-embedded-1.57.1 in locally installed gems (Bundler::GemNotFound)
from /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/bundler-2.4.6/lib/bundler/definition.rb:197:in `specs'
from /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/bundler-2.4.6/lib/bundler/definition.rb:254:in `specs_for'
from /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/bundler-2.4.6/lib/bundler/runtime.rb:18:in `setup'
from /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/bundler-2.4.6/lib/bundler.rb:170:in `setup'
from /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/jekyll-4.3.2/lib/jekyll/plugin_manager.rb:52:in `require_from_bundler'
from /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/gems/jekyll-4.3.2/exe/jekyll:11:in `<top (required)>'
from /var/lib/jenkins/.rbenv/versions/3.1.3/bin/jekyll:25:in `load'
from /var/lib/jenkins/.rbenv/versions/3.1.3/bin/jekyll:25:in `<main>'
I have installed that gem manually (sass-embedded) and even included it in the Gemfile, but the problem persists. If a set the above flag to false, the GLIBC error appears.
How can this be fixed?
Let me know in a comment in case you need more details on the issue; I will update the question accordingly.
Thank you in advance.
Well I've managed a dirty solution for this. I tried to install
jekyll-content-security-policy-generator.gemspecandsass-embeddedmanually without success (cloning from Github). Forgive me as I wasn't very strict on my testing (actually a little chaotic), but in the end, I ended up with this error:Why did I come up with this 1.54 version? I don't know, but I was trying to install first version 1.58.0 and later 1.57.1 of
sass-converter. Then I started playing again with the Gemfile of my project:Whatever, having a look at:
I've replaced the 1.54 values by 1.57.1 and run again the bundle install and Jekyll build command (both, in that order!). It worked!
This is my final Gemfile:
And the content of the gemspec above mentioned:
Jenkins output: