首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从系统中删除ruby gem

从系统中删除ruby gem
EN

Stack Overflow用户
提问于 2011-10-24 18:45:16
回答 1查看 1.1K关注 0票数 0
代码语言:javascript
复制
root@app1:~# gem -v
1.8.10

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

代码语言:javascript
复制
root@app1:~# sudo gem -v
1.3.7

现在,当我在root用户之外的其他用户上安装gem时

代码语言:javascript
复制
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

这出了什么问题?

下面是我使用no sudo时的gem env

代码语言:javascript
复制
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

下面是我使用sudo时的gem env

代码语言:javascript
复制
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 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-24 20:40:53

这里需要注意三件事:

  1. RVM通过维护几个环境变量来工作。作为一种安全措施,sudo会在用户切换期间清除其中的大部分,以防止攻击者将LD_PRELOAD等危险变量注入到提升的执行上下文中。如果您希望使用sudo并希望将您的RVM环境保留在新的shell中,请改用rvmsudo
  2. 您看到的作为根的gem环境是系统的缺省设置。这是因为,正如在第一点中所解释的,sudo在用户切换期间不会保留RVM的环境变量。
  3. 在gem安装过程中出现错误很可能是因为您没有正确的权限写入RVM目录。在全局安装过程中,RVM创建了一个名为rvm的组,并确保它的所有成员都可以写入RVm目录,这是安装rubies、创建gem和安装gem所必需的。确保您的用户在该组中。或者,您可以直接使用rvmsudo...
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7874429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档