簡體   English   中英

無法在 Jekyll 中安裝 gem jekyll-content-security-policy-generator

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

我在 Raspberry Pi 4(運行我用來發布網站的 Jenkins 管道)上的 Jekyll 上安裝 gem 時遇到問題。

我正在嘗試安裝基於https://github.com/strongscot/jekyll-content-security-policy-generator的 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

[...]
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>'

谷歌搜索這個錯誤讓我想到了第二種方法,它是相同的,但它首先設置了一個配置標志

  1. 第二種方法
> 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>'

我已手動安裝該 gem ( sass-embedded ),甚至將其包含在 Gemfile 中,但問題仍然存在。 如果將上述標志設置為 false,則會出現 GLIBC 錯誤。

這怎么能解決?

如果您需要有關該問題的更多詳細信息,請在評論中告訴我; 我會相應地更新問題。

先感謝您。

好吧,我為此管理了一個骯臟的解決方案。 我嘗試手動安裝jekyll-content-security-policy-generator.gemspecsass-embedded但沒有成功(從 Github 克隆)。 請原諒我,因為我的測試不是很嚴格(實際上有點混亂),但最后,我遇到了這個錯誤:

> 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

為什么我想出這個 1.54 版本? 我不知道,但我正在嘗試安裝sass-converter的第一個版本 1.58.0 和后來的 1.57.1。 然后我又開始玩我項目的 Gemfile:

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/specifications/jekyll-sass-converter-3.0.0.gemspec

我已將 1.54 值替換為 1.57.1 並再次運行 bundle install 和 Jekyll build 命令(均按此順序)。 有效!

這是我最終的 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'

以及上面提到的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:

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