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'
Reference
이 문제에 관하여(Ruby 2.2의 구축 종속성 수정), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/bernd/fpm-cookery/issues/154텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)