【问题标题】:bundle install hangs inexplicably捆绑安装莫名其妙地挂起
【发布时间】:2015-09-28 10:05:24
【问题描述】:

我在 RHEL 6 上,从源代码构建 Ruby 并安装到 /usr/local

我所在的服务器没有外部互联网访问权限,除了访问 Rubygems.org。这是它被允许建立的唯一外部联系。这是公司的安全限制,我无能为力,所以请不要说“使用 rvm”。如果可以的话,我会...

我需要以特定用户ciwasadm 的身份运行捆绑安装。但是当我这样做时,终端就会挂起。当我以我的用户名wannia1 运行bundle installgem 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 时卷曲 ruby​​gems.org 时会发生什么。你能以两个用户的身份卷曲网址吗?也许将 ruby​​gems.org 列入白名单的方法以某种方式与特定用户或组相关联?另一个要检查的随机事情是您在 sudo 时通过键入 which ruby​​ 并将其与其他用户进行比较来加载 ruby​​。也许你得到了不同版本的 ruby​​?

标签: ruby linux rubygems bundler rhel6


【解决方案1】:

我将在此处发布我的解决方案,希望它在未来对其他人有所帮助。

Bundler 挂起,因为它无法访问 ruby​​gems.org 服务器。这是因为需要代理,但尚未设置。

我能够在我的 bash shell 中运行 export http_proxy=<insert proxy info here>,然后能够拨出。

【讨论】:

  • 什么是代理..?
猜你喜欢
  • 2012-03-12
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
  • 1970-01-01
  • 2014-01-23
  • 2012-07-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多