Ruby 2.2의 구축 종속성 수정

4545 단어 fpm-cookery

묘사

Fedora 23은 기본적으로 루비 2.2를 사용합니다.Puppet 3은 루비 2.2와 호환되지 않으며 Puppet 4만 작동합니다.만약 내가 과거의 문제를 정확하게 읽었다면 fpm Coordy에 첨부된 puppet LIB 버전은 puppet 3에서 나온 것이다. 이것은build 를 처리하려고 시도할 때 다음과 같은 문제가 발생한 원인이라고 생각한다.

WARNING: Unable to load Puppet. Automatic dependency installation disabled.


시스템 허수아비를 사용하거나 레시피를 정의하는 방법을 제공할 수 있습니까?rb 우리 인형 버전이 필요해요?
~~ 그리고 제가 생각할 수 있는 유일한 해결 방법은 rvm 같은 것을 사용하여 docker 용기에 오래된 버전의 루비를 설치하고 사용하는 것입니다. 하지만 가능하다면 이런 상황을 피하고 싶습니다~~
편집: 몇몇 테스트를 통해, 나는 그것이 내가 생각하는 것처럼 rvm와 함께 일하게 할 수 없습니다.내가 발견한 유일한 해결 방법은sh(dnf 설치 #[packages])를 사용하는 것이다. 이 때문에 레시피는 현재Fedora(또는 다른 dnf가 설치된 시스템)에서만 사용할 수 있다.

토론 #1

@k4k - 다양한 Puppet 모듈을 불러오는 코드는 dependency_inspector.rb(표시v0.32.0의 세션에 있음):
begin
  require 'puppet'
  require 'puppet/resource'
  require 'puppet/transaction/report'

  # Init Puppet before using it
  Puppet.initialize_settings
rescue Exception
end
REPLirb, pry 등에서 이 코드를 실행하려고 하면 어떻게 됩니까?

토론 #2

오늘도 루비 2.3에서 이 문제를 만났다.내가 위에서 얻은 결과는:
irb(main):001:0> require 'puppet'
WARN: Unresolved specs during Gem::Specification.reset:
      json_pure (>= 0)
WARN: Clearing out unresolved specs.
Please report a bug if this causes problems.
NameError: uninitialized constant Syck
    from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/puppet-3.8.7/lib/puppet/vendor/safe_yaml/lib/safe_yaml/syck_node_monkeypatch.rb:42:in `<top (required)>'
    from /opt/chef/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /opt/chef/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/puppet-3.8.7/lib/puppet/vendor/safe_yaml/lib/safe_yaml.rb:197:in `<module:YAML>'
    from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/puppet-3.8.7/lib/puppet/vendor/safe_yaml/lib/safe_yaml.rb:132:in `<top (required)>'
    from /opt/chef/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /opt/chef/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/puppet-3.8.7/lib/puppet/vendor/require_vendored.rb:4:in `<top (required)>'
    from /opt/chef/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /opt/chef/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
    from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/puppet-3.8.7/lib/puppet/vendor.rb:40:in `require_libs'
    from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/puppet-3.8.7/lib/puppet/vendor.rb:53:in `load_vendored'
    from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/puppet-3.8.7/lib/puppet.rb:174:in `<module:Puppet>'
    from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/puppet-3.8.7/lib/puppet.rb:29:in `<top (required)>'
    from /opt/chef/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:133:in `require'
    from /opt/chef/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:133:in `rescue in require'
    from /opt/chef/embedded/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:40:in `require'
    from (irb):1
    from /opt/chef/embedded/bin/irb:11:in `<main>'
Puppet 4로 fpm cook을 잠깐 실행하려고 시도했지만, Hiera의 변화는 대체재로 충분해 보였다.
/opt/chef/embedded/lib/ruby/gems/2.3.0/gems/hiera-3.2.1/lib/hiera/util.rb:56:in `split_key': undefined method `split' for :arch:Symbol (NoMethodError)
    from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/hiera-3.2.1/lib/hiera/backend.rb:253:in `lookup'
    from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/hiera-3.2.1/lib/hiera.rb:116:in `lookup'
    from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/fpm-cookery-0.32.0/lib/fpm/cookery/hiera.rb:29:in `lookup'
    from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/fpm-cookery-0.32.0/lib/fpm/cookery/recipe.rb:233:in `applicator'
    from /opt/chef/embedded/lib/ruby/gems/2.3.0/gems/fpm-cookery-0.32.0/lib/fpm/cookery/recipe.rb:208:in `block in apply'

좋은 웹페이지 즐겨찾기