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

Как я могу использовать rubygem в провайдере марионеток в debian stable?

Я пытаюсь использовать поставщик марионеток, которому требуется рубиновый драгоценный камень.

Он запущен в стабильной версии Debian (хрипит), но я получаю следующую ошибку:

err: Could not run Puppet configuration client: no such file to load -- zabbixapi

Проблема, похоже, в том, что марионетка требует специально ruby1.8. Однако установленная версия rubygems предназначена для ruby1.9.1. Поэтому все драгоценные камни, которые устанавливаются, попадают в /var/lib/gems/1.9.1/gems/, который предположительно версии 1.8 Ruby не просматривается.

Как лучше всего сделать так, чтобы код марионетки требовал драгоценных камней? Я не особо беспокоюсь о том, какая версия рубина в конечном итоге будет использоваться, при условии, что она согласована между rubygems и puppet.

Хакерским решением этой проблемы является жесткое кодирование пути к требуемому драгоценному камню в пути загрузки Ruby.

file { '/etc/profile.d/rubylib.sh':
    content => 'export RUBYLIB=\'/var/lib/gems/1.9.1/gems/zabbixapi-2.4.0/lib\''
}

Это плохо по ряду причин:

  • Номера версий жестких кодов
  • Необходимо запустить марионетку несколько раз
  • Необходимо выходить из системы и возвращаться между запусками марионетки
  • Решает проблему на неправильном уровне абстракции

Однако я не нашел лучшего способа решить эту проблему, так что на данный момент это подойдет.