Назад | Перейти на главную страницу

Перезагрузить исходный код поставщика гемов Puppet

Итак, у меня Puppet Enterprise 2.7 на «главном» узле, puppetentmaster. Работая над созданием новых рецептов для установки Ruby 2.0 на «клиентском» узле, я заметил, что если я заставлю клиента начать использовать gem 2.0, я столкнусь с такими ошибками, как:

err: /Stage[main]/_ruby::Mysql_gem/Package[mysql]/ensure: change from absent to 2.8.1 failed: Could not update: Execution of '/usr/bin/gem install -v 2.8.1 --include-dependencies --no-rdoc --no-ri mysql' returned 1: ERROR:  While executing gem ... (OptionParser::InvalidOption)
    invalid option: --include-dependencies
 at /etc/puppetlabs/puppet/environments/ci/modules/_ruby/manifests/mysql_gem.pp:29

Я проследил --include-dependencies к https://github.com/puppetlabs/puppet/commit/2284e837939628f81149e62fdc0f314ff077a776, с тех пор он был удален, поэтому я удалил его из кода поставщика Puppet на главном сервере в /opt/puppet/lib/site_ruby/1.8/puppet/provider/package/gem.rb:

  def install(useversion = true)
    command = [command(:gemcmd), "install"]
    command << "-v" << resource[:ensure] if (! resource[:ensure].is_a? Symbol) and useversion
    # JOE HAS BEEN HERE - see http://projects.puppetlabs.com/issues/19741,
    # https://github.com/puppetlabs/puppet/commit/2284e837939628f81149e62fdc0f314ff077a776
    # Always include dependencies
    # command << "--include-dependencies"

К сожалению, код для gem.rb необъяснимо где-то в кеше - я перезапустил все службы, которые, как мне кажется, перезапускались безрезультатно, я по-прежнему получить --include-dependencies опция включена.

Как заставить этот код провайдера перезагружаться на мастере, чтобы удалить --include-dependencies при использовании gem провайдер?

Вам нужно изменить источник на марионеточном клиенте, а не на мастере.