简体   繁体   English

无法在 Jekyll 中安装 gem jekyll-content-security-policy-generator

[英]Can't install gem jekyll-content-security-policy-generator in Jekyll

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).我在 Raspberry Pi 4(运行我用来发布网站的 Jenkins 管道)上的 Jekyll 上安装 gem 时遇到问题。

I'm trying to install the jekyll-content-security-policy-generator plugin based on https://github.com/strongscot/jekyll-content-security-policy-generator .我正在尝试安装基于https://github.com/strongscot/jekyll-content-security-policy-generator的 jekyll 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:这就是我的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

And this is what I have tried right now:这就是我现在尝试过的:

  1. 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.谷歌搜索这个错误让我想到了第二种方法,它是相同的,但它首先设置了一个配置标志

  1. 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.我已手动安装该 gem ( sass-embedded ),甚至将其包含在 Gemfile 中,但问题仍然存在。 If a set the above flag to false, the GLIBC error appears.如果将上述标志设置为 false,则会出现 GLIBC 错误。

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.gemspec and sass-embedded manually without success (cloning from Github).我尝试手动安装jekyll-content-security-policy-generator.gemspecsass-embedded但没有成功(从 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:请原谅我,因为我的测试不是很严格(实际上有点混乱),但最后,我遇到了这个错误:

> jenkins@retropie:/tmp/balandisinteriorismo.com$
> JEKYLL_ENV=production /var/lib/jenkins/.rbenv/shims/jekyll build
/var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/3.1.0/rubygems/specification.rb:1453:in `rescue in block in activate_dependencies': Could not find 'sass-embedded' (~> 1.54) among 128 total gem(s) (Gem::MissingSpecError)
Checked in 'GEM_PATH=/var/lib/jenkins/.local/share/gem/ruby/3.1.0:/var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0' at: /var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/specifications/jekyll-sass-converter-3.0.0.gemspec, execute `gem env` for more information

Why did I come up with this 1.54 version?为什么我想出这个 1.54 版本? I don't know, but I was trying to install first version 1.58.0 and later 1.57.1 of sass-converter .我不知道,但我正在尝试安装sass-converter的第一个版本 1.58.0 和后来的 1.57.1。 Then I started playing again with the Gemfile of my project:然后我又开始玩我项目的 Gemfile:

bundle install
JEKYLL_ENV=production /var/lib/jenkins/.rbenv/shims/jekyll build

Whatever, having a look at:无论如何,看看:

/var/lib/jenkins/.rbenv/versions/3.1.3/lib/ruby/gems/3.1.0/specifications/jekyll-sass-converter-3.0.0.gemspec

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.).我已将 1.54 值替换为 1.57.1 并再次运行 bundle install 和 Jekyll build 命令(均按此顺序)。 It worked!有效!

This is my final Gemfile:这是我最终的 Gemfile:

group :jekyll_plugins do
    # (other jekyll plugins)
    gem 'sass-embedded', '~> 1.57.1'
    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'

And the content of the gemspec above mentioned:以及上面提到的gemspec的内容:

# -*- encoding: utf-8 -*-
# stub: jekyll-sass-converter 3.0.0 ruby lib

Gem::Specification.new do |s|
  s.name = "jekyll-sass-converter".freeze
  s.version = "3.0.0"

  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
  s.require_paths = ["lib".freeze]
  s.authors = ["Parker Moore".freeze]
  s.date = "2022-12-21"
  s.email = ["parkrmoore@gmail.com".freeze]
  s.homepage = "https://github.com/jekyll/jekyll-sass-converter".freeze
  s.licenses = ["MIT".freeze]
  s.required_ruby_version = Gem::Requirement.new(">= 2.6.0".freeze)
  s.rubygems_version = "3.3.26".freeze
  s.summary = "A basic Sass converter for Jekyll.".freeze

  s.installed_by_version = "3.3.26" if s.respond_to? :installed_by_version

  if s.respond_to? :specification_version then
    s.specification_version = 4
  end

  if s.respond_to? :add_runtime_dependency then
    s.add_runtime_dependency(%q<sass-embedded>.freeze, ["~> 1.57.1"])
    s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
    s.add_development_dependency(%q<rake>.freeze, [">= 0"])
    s.add_development_dependency(%q<rspec>.freeze, [">= 0"])
    s.add_development_dependency(%q<rubocop-jekyll>.freeze, ["~> 0.12.0"])
  else
    s.add_dependency(%q<sass-embedded>.freeze, ["~> 1.57.1"])
    s.add_dependency(%q<bundler>.freeze, [">= 0"])
    s.add_dependency(%q<rake>.freeze, [">= 0"])
    s.add_dependency(%q<rspec>.freeze, [">= 0"])
    s.add_dependency(%q<rubocop-jekyll>.freeze, ["~> 0.12.0"])
  end
end

Jenkins output: Jenkins output:

15:34:29 + JEKYLL_ENV=production /var/lib/jenkins/.rbenv/shims/jekyll build
15:34:31 Resolving dependencies...
15:34:32 Configuration file: /var/lib/jenkins/jobs/Paloma Avellán Web/workspace/_config.yml
15:34:32             Source: /var/lib/jenkins/jobs/Paloma Avellán Web/workspace
15:34:32        Destination: /var/lib/jenkins/jobs/Paloma Avellán Web/workspace/_site
15:34:32  Incremental build: disabled. Enable with --incremental
15:34:32       Generating... 
15:34:33 Converting style attribute to inline style, inserted into HEAD.

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM