0

我在 CentOS 5 上安装了 REE 以完成一项非常特殊的任务(使用 rails 2.3.10 和 ruby​​ 1.8),我真的需要隔离它

在这种情况下,我不会使用 bundler 或 smth。

如果我通过手动设置每个 gem,一切正常

/opt/ree/bin/gem install agem

但是当我跑步时

/opt/ree/bin/rake gems:install

为这个命令项目做准备 - 所有(或大多数,我没有检查每个依赖项)gem 通过 /usr/bin/gem 安装到公共 gem 路径中,我不需要它们中的任何一个

这是一个问题,我不想手动安装所有 gem。smb 有没有遇到过这个问题并且可能知道解决方案?

4

2 回答 2

1

真正帮助我的解决方案是暂时/usr/bin/gem用符号链接替换/opt/ree/bin/gem

这个替换/opt/ree/bin/rake gems:intall按预期工作 - 所有必需的 gem 都安装到 REE 路径 - 返回/usr/bin/gem原始 gem 可执行文件使系统再次稳定

这不是很干净的解决方案,但它很有效,所以在危急情况下它可以像锤子一样使用。

于 2011-05-01T19:16:42.013 回答
0

环境中的某个地方有一个GEM_HOME变量,或者调用的运行时 ruby​​ 不是 ree。因此,我建议至少尝试 3 件事:

  • 从一个几乎空的环境开始(env -i sh例如运行)并再次运行 rake 命令,看看这是否仍然在公共 gem 路径中安装 gems。小心,因为env -i是一个空的环境,你可能会看到来自 ruby​​gems 的抱怨(因为没有HOME设置或没有设置其他内容)......
  • 检查 shebang 行(rake 程序的第一行)是否真的表示您的 REE 二进制文件而不是其他内容
  • 最后,使用 REE 二进制文件运行 rake/opt/ree/bin/ruby /opt/ree/bin/rake gems:install

这应该让您知道出了什么问题。总而言之,我认为环境问题可能是这件事最可能的罪魁祸首

于 2011-04-26T21:50:45.140 回答