Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 从系统中删除红宝石_Ruby_Rubygems_Gem - Fatal编程技术网

Ruby 从系统中删除红宝石

Ruby 从系统中删除红宝石,ruby,rubygems,gem,Ruby,Rubygems,Gem,我使用rvm时得到1.8.10。但当我使用sudo时,我得到: root@app1:~# gem -v 1.8.10 现在,当我在root以外的其他用户上安装gem时 root@app1:~# sudo gem -v 1.3.7 这哪里出了问题 这是我不用sudo时的gem env test@app1:~$ gem install RedCloth Fetching: RedCloth-4.2.8.gem (100%) ERROR: While executing gem ... (Err

我使用rvm时得到1.8.10。但当我使用sudo时,我得到:

root@app1:~# gem -v
1.8.10
现在,当我在root以外的其他用户上安装gem时

root@app1:~# sudo gem -v
1.3.7
这哪里出了问题

这是我不用sudo时的gem env

test@app1:~$ gem install RedCloth
Fetching: RedCloth-4.2.8.gem (100%)
ERROR:  While executing gem ... (Errno::EACCES)
Permission denied - /usr/local/rvm/gems/ree-1.8.7-2011.03/cache/RedCloth-4.2.8.gem
这是我使用sudo时的gem env

root@app1:~# gem env
RubyGems Environment:
- RUBYGEMS VERSION: 1.8.10
- RUBY VERSION: 1.8.7 (2011-02-18 patchlevel 334) [x86_64-linux]
- INSTALLATION DIRECTORY: /usr/local/rvm/gems/ree-1.8.7-2011.03
- RUBY EXECUTABLE: /usr/local/rvm/rubies/ree-1.8.7-2011.03/bin/ruby
- EXECUTABLE DIRECTORY: /usr/local/rvm/gems/ree-1.8.7-2011.03/bin
- RUBYGEMS PLATFORMS:
- ruby
 - x86_64-linux
- GEM PATHS:
 - /usr/local/rvm/gems/ree-1.8.7-2011.03
 - /usr/local/rvm/gems/ree-1.8.7-2011.03@global
- GEM CONFIGURATION:
 - :update_sources => true
 - :verbose => true
 - :benchmark => false
 - :backtrace => false
 - :bulk_threshold => 1000
 - "gem" => "--no-rdoc --no-ri"
 - "install" => "--no-ri --no-rdoc --env-shebang"
 - :sources => ["http://gemcutter.org", "http://gems.rubyforge.org/",   "http://gems.github.com"]
 - "update" => "--no-ri --no-rdoc --env-shebang"
 - REMOTE SOURCES:
   - http://gemcutter.org
   - http://gems.rubyforge.org/
   - http://gems.github.com

这里需要注意三件事:

  • RVM通过维护几个环境变量来工作
    sudo
    在用户切换期间清除其中的大部分,作为安全措施,以防止攻击者将危险变量(如
    LD_PRELOAD
    )注入提升的执行上下文。如果要使用sudo并希望在新shell中保留RVM环境,请改用
    rvmsudo
  • 您视为root的gem环境是系统的默认环境。您之所以会这样,是因为,正如第一点所解释的,sudo在用户切换期间不保留RVM的环境变量
  • gem安装尝试期间的错误很可能是由于您没有正确的权限写入RVM目录。在全局安装过程中,RVM创建一个名为
    RVM
    的组,并确保其所有成员都可以写入RVM目录,该目录是安装rubies、创建Gemset和安装gems所必需的。确保您的用户在该组中。或者您可以使用
    rvmsudo
  • root@app1:~# sudo gem env
    RubyGems Environment:
      - RUBYGEMS VERSION: 1.3.7
      - RUBY VERSION: 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]
      - INSTALLATION DIRECTORY: /var/lib/gems/1.8
      - RUBY EXECUTABLE: /usr/bin/ruby1.8
      - EXECUTABLE DIRECTORY: /var/lib/gems/1.8/bin
      - RUBYGEMS PLATFORMS:
        - ruby
        - x86_64-linux
      - GEM PATHS:
        - /var/lib/gems/1.8
        - /root/.gem/ruby/1.8
      - GEM CONFIGURATION:
         - :update_sources => true
         - :verbose => true
         - :benchmark => false
         - :backtrace => false
         - :bulk_threshold => 1000
         - "gem" => "--no-rdoc --no-ri"
         - :sources => ["http://gemcutter.org", "http://gems.rubyforge.org/", "http://gems.github.com"]
         - "install" => "--no-ri --no-rdoc --env-shebang"
         - "update" => "--no-ri --no-rdoc --env-shebang"
      - REMOTE SOURCES:
         - http://gemcutter.org
         - http://gems.rubyforge.org/
         - http://gems.github.com