【发布时间】:2015-09-28 10:05:24
【问题描述】:
我在 RHEL 6 上,从源代码构建 Ruby 并安装到 /usr/local。
我所在的服务器没有外部互联网访问权限,除了访问 Rubygems.org。这是它被允许建立的唯一外部联系。这是公司的安全限制,我无能为力,所以请不要说“使用 rvm”。如果可以的话,我会...
我需要以特定用户ciwasadm 的身份运行捆绑安装。但是当我这样做时,终端就会挂起。当我以我的用户名wannia1 运行bundle install 或gem install whatever 时,我可以连接到Rubygems.org 并获得我需要的任何东西。
由于某种原因,挂起仅在我被 sudo 编入 ciwasadm 时发生。两个用户的 Ruby 安装工作正常,我可以在命令行中运行 ruby 文件。我只是不明白为什么 bundler 有什么不同。
为ciwasadm 运行gem env 返回:
RubyGems Environment:
- RUBYGEMS VERSION: 2.4.8
- RUBY VERSION: 2.0.0 (2015-04-13 patchlevel 645) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/2.0.0
- RUBY EXECUTABLE: /usr/local/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/bin
- SPEC CACHE DIRECTORY: /home/ciwasadm/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /usr/local/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /usr/local/lib/ruby/gems/2.0.0
- /home/ciwasadm/.gem/ruby/2.0.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /usr/local/bin
- /sbin
- /bin
- /usr/sbin
- /usr/bin
- /opt/groovy-1.8.3/bin
为wannia 运行gem env 返回:
RubyGems Environment:
- RUBYGEMS VERSION: 2.4.8
- RUBY VERSION: 2.0.0 (2015-04-13 patchlevel 645) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/2.0.0
- RUBY EXECUTABLE: /usr/local/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/bin
- SPEC CACHE DIRECTORY: /home/wannia1/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /usr/local/etc
- RUBYGEMS PLATFORMS:
- ruby
- x86_64-linux
- GEM PATHS:
- /usr/local/lib/ruby/gems/2.0.0
- /home/wannia1/.gem/ruby/2.0.0
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- SHELL PATH:
- /usr/local/bin
- /usr/lib64/qt-3.3/bin
- /usr/local/bin
- /bin
- /usr/bin
- /usr/local/sbin
- /usr/sbin
- /sbin
- /opt/groovy-1.8.3/bin
- /home/wannia1/bin
【问题讨论】:
-
你说你不明白为什么 bundler 是不同的。好吧,捆绑器 gem 中有相当多的代码在您执行
bundle install时运行,并且其中可能有一些东西导致它挂起。我的第一个想法是在你的机器上编辑 bundler gem 的源文件并添加puts语句,这样你就可以在运行bundle install时看到一些有用的调试输出。如果您有条不紊地执行此操作,您可以找到代码挂起的确切行。您也可以尝试运行strace bundle install。 -
尝试将
--verbose选项添加到 bundler 以获得更详细的输出结果。也许这会提供更多线索?我要看的另一件事是当 sudo'd 为 ciwasadm 时卷曲 rubygems.org 时会发生什么。你能以两个用户的身份卷曲网址吗?也许将 rubygems.org 列入白名单的方法以某种方式与特定用户或组相关联?另一个要检查的随机事情是您在 sudo 时通过键入 which ruby 并将其与其他用户进行比较来加载 ruby。也许你得到了不同版本的 ruby?
标签: ruby linux rubygems bundler rhel6