繁体   English   中英

如何以其他用户身份运行用户安装的Ruby gem?

[英]How do I run a user-installed Ruby gem as a different user?

我设置了一个钩子,使其可以像我的普通用户一样正常运行,并使用gem install --user-install在该用户下安装了必需的gem。 现在,我想以其他用户身份运行该挂钩,但是当我尝试使用该挂钩时,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>'

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

export GEM_HOME=/home/user/.gem/ruby/1.9.1
$GEM_HOME/bin/jekyll help

与其尝试为一个用户安装并在另一个用户下运行,不如为所有用户安装。

在共享环境主机上,如果您具有“ sudo”功能,或者您是系统管理员,则可以执行常规的sudo gem install ...以针对每个人进行全局安装。

普通的Ruby安装就是这样。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM