如果没有sudo,Bundler无法安装任何gem [英] Bundler cannot install any gems without sudo

查看:123
本文介绍了如果没有sudo,Bundler无法安装任何gem的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试安装Rails应用程序,每次使用bundle时,如果没有sudo,它将失败.我目前的情况是,只要对所有内容使用sudo(包括滑轨),一切都可以正常工作.我认为这是不正确的.

I'm trying to install a rails app and every time I use bundle it fails without sudo. My current situation is that everything works as long as use sudo for everything, including rails. I don't think this is correct.

例如:

$ bundle update
Updating git://github.com/refinery/refinerycms.git
Fetching gem metadata from https://rubygems.org/.......
Fetching gem metadata from https://rubygems.org/..
Resolving dependencies...
Enter your password to install the bundled RubyGems to your system: 
Using rake (10.0.4) 
Using i18n (0.6.1) 
Using multi_json (1.7.2) 
Using rack-cache (1.2) 
Using rack-test (0.6.2) 
Installing hike (1.2.2) 
Errno::EACCES: Permission denied - /usr/local/rvm/gems/ruby-1.9.3-p194/build_info/hike-1.2.2.info
An error occurred while installing hike (1.2.2), and Bundler cannot continue.
Make sure that `gem install hike -v '1.2.2'` succeeds before bundling.

但是我按照它说的去做,就可以了:

But then I do what it says and it works:

$ gem install hike -v '1.2.2' 
Successfully installed hike-1.2.2
Parsing documentation for hike-1.2.2
Installing ri documentation for hike-1.2.2
Done installing documentation for hike after 0 seconds
1 gem installed

对于不同的宝石,此图案会反复重复.我不明白为什么会这样呢?如果我使用sudo,捆绑包将更新而不会出现此错误.但是目前的情况是,我需要使用sudo进行所有操作,包括rake...rails server等.有些不正确.

This pattern repeats again and again for different gems. I don't get it. Why is this happening? If I use sudo bundle will update without this error. But the current situation is that I need sudo for everything, including rake... or rails server, etc. Something isn't right.

其他详细信息:我正在使用OSX 10.8.3 ...

Additional details: I'm on OSX 10.8.3...

$ ruby -v
ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-darwin11.4.0]
$ gem -v
2.0.3
$ rvm -v
rvm 1.19.6 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

$ which ruby
/usr/local/rvm/rubies/ruby-1.9.3-p194/bin/ruby
$ which gem
/usr/local/rvm/rubies/ruby-1.9.3-p194/bin/gem
$ which rvm
/usr/local/rvm/bin/rvm

更新

我可以毫无错误地运行sudo bundle install,这可能会很有帮助.然后bundle install之后立即失败,并显示如上所示的错误.为什么会这样?

It may be informative that I can run sudo bundle install with no errors. Then immediately after bundle install fails with an error like you see above. Why is this?

Update2

/usr/local/rvm[master]$ ls -l
total 56
-rw-rw-r--   1 root  rvm   566 May  4 12:59 LICENCE
-rw-rw-r--   1 root  rvm  8929 May  4 12:59 README
-rw-rw-r--   1 root  rvm     7 May  4 12:59 RELEASE
-rw-rw-r--   1 root  rvm     7 May  4 12:59 VERSION
drwxrwsr-x   3 root  rvm   102 May  4 01:34 archives
drwxrwsr-x  35 root  rvm  1190 May  4 12:59 bin
drwxrwsr-x  11 root  rvm   374 May  4 12:59 config
drwxrwsr-x   6 root  rvm   204 Jan 10 19:55 contrib
drwxrwsr-x   5 root  rvm   170 Jan 10 19:55 environments
drwxrwsr-x   3 root  rvm   102 Jan 10 19:55 examples
drwxrwsr-x   5 root  rvm   170 Jan 10 19:52 gems
drwxrwxr-x   6 ESL   rvm   204 May  4 12:59 gemsets
drwxrwsr-x  92 root  rvm  3128 May  4 01:34 help
drwxrwsr-x  11 root  rvm   374 May  4 01:34 hooks
-rw-rw-r--   1 root  rvm    11 May  4 12:59 installed.at
drwxrwsr-x   4 root  rvm   136 Jan 10 19:54 lib
drwxrwsr-x   5 root  rvm   170 May  4 12:55 log
drwxrwsr-x   2 root  rvm    68 Jan 10 19:52 man
drwxrwsr-x   9 root  rvm   306 Jan 10 19:52 patches
drwxrwxr-x   4 ESL   rvm   136 May  4 12:59 patchsets
drwxrwsr-x   4 root  rvm   136 Jan 10 19:55 rubies
drwxrwsr-x  64 root  rvm  2176 May  4 01:34 scripts
drwxrwsr-x   3 root  rvm   102 May  4 01:34 src
drwxrwsr-x   2 root  rvm    68 Jan 10 19:52 tmp
drwxrwsr-x   8 root  rvm   272 May  4 12:59 user
drwxrwsr-x   4 root  rvm   136 Jan 10 19:52 usr
drwxrwsr-x   5 root  rvm   170 Jan 10 19:55 wrappers

推荐答案

您可以在不需要根权限的用户主文件夹中托管gems:

You may host gems in your user home folder, that does not need root permissions:

bundle install --path ~/.gem

为避免手动传递此参数,请在.bash_profile中添加export GEM_HOME=$HOME/.gem -这解决了Mac OS和其他* nix系统上的sudo问题.然后,您可能还需要访问提供可执行文件的gem(例如bundler),因此也要添加它:

To avoid passing this parameter manually add export GEM_HOME=$HOME/.gem to your .bash_profile -- this solves sudo issue on Mac OS and other *nix systems. You then also might need to have access to gems that provide executables (such as bundler), so add this too:

PATH=$PATH:$HOME/.gem/bin

或在某些情况下:

PATH=$PATH:$HOME/.gem/ruby/<version>/bin


ref: https://stackoverflow.com/a/5862327/322020

UPD:但是请记住,如果您开始使用具有相同环境变量的rbenv,则在使用太不同版本的Ruby时可能会导致问题,因此您可能希望临时unset GEM_HOME或在每次启动时添加自定义名称Ruby版本.

UPD: But keep in mind that if you start using rbenv having this environment variable be the same might cause problems when using too different versions of Ruby, so you might want to temporary unset GEM_HOME or prepend custom one each time you launch rbenv-ed Ruby.

这篇关于如果没有sudo,Bundler无法安装任何gem的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆