1

我已经设置了一个钩子,因为它作为我的普通用户之一运行良好,并且在该用户下使用gem install --user-install. 现在我想以不同的用户身份运行该钩子,但是当我尝试它时,ruby 找不到已安装的 gem:

$ /home/user/.gem/ruby/1.9.1/bin/jekyll
/usr/lib/ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find jekyll (>= 0) amongst [rack-1.5.2, rack-protection-1.5.0, ruby-openid-2.1.8, sinatra-1.0, tilt-1.3.6] (Gem::LoadError)
    from /usr/lib/ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
    from /usr/lib/ruby/1.9.1/rubygems.rb:1210:in `gem'
    from /home/user/.gem/ruby/1.9.1/bin/jekyll:18:in `<main>'
4

2 回答 2

1

您需要让 Ruby 知道其 gem 的安装位置。环境GEM_HOME对此进行控制,因此您可以执行以下操作:

export GEM_HOME=/home/user/.gem/ruby/1.9.1
$GEM_HOME/bin/jekyll help
于 2013-06-22T16:22:35.700 回答
0

不要尝试为一个用户安装并在另一个用户下运行,而是为所有用户安装。

在共享环境主机上,如果您具有“sudo”功能,或者系统管理员,您可以sudo gem install ...为所有人进行正常的全局安装。

一个普通的 Ruby 安装就是这样工作的。

通常,作为开发人员,我们希望在自己的个人沙箱中运行 Ruby,因此我们可以更改和安装 Ruby 版本并加载不同版本的 gem,而不会影响盒子上的其他人。

一旦代码准备好进行测试和生产,我们希望它在一个共享环境中,所以我们只有一个 Ruby 安装在所有应用程序之间共享,这些应用程序通常以同一个用户身份运行。即使这些应用程序以不同的用户身份运行,它们仍然使用相同的 Ruby。

他们通过默认环境和路径执行此操作。如果这没有意义,请与系统管理员联系。

于 2013-06-23T11:21:37.543 回答