指定 Rubygems 的自定义位置以通过包类型安装

Specify custom location for Rubygems to install via package type

我已将 Ruby 安装在自定义位置(在 Ubuntu 框上,使用 ruby-install 安装到 /opt/rubies 中),当涉及到声明时这个:

  package { 'bundler':
    ensure   => 'installed',
    provider => 'gem',
    require =>  Exec["Install Ruby"],
  }

它们失败了(或者安装了错误版本的 Ruby),因为它在错误的地方寻找 Rubygems 的 gem 命令 (/usr/bin) .我可以想出几种方法来解决这个问题:

  1. 告诉 package 我想使用哪个版本的 gem,但我在 the docs for that 中没有看到任何内容。
  2. 将正确的 bin 目录添加到 PATH,但我不知道哪个用户是 运行 配置者,因此不知道在哪里更改 PATH。还是我应该随 Ruby 安装一起更改路径?
  3. 改为使用 exec 声明。

显然,使用 package 非常方便,因此我更愿意继续使用它。任何帮助或见解将不胜感激。

如果您想继续使用 package,您有两个选择:

  • 您可以更改运行 Puppet 代理的 PATH
  • 您可以使用所需的 gem 路径对提供程序进行子类化。像 this,除了你不需要替换 uninstall 方法,所以你可以丢失那部分。然后,您将 provider => gem 更改为 provider => whatever_provider_name_you_chose