如何在Mac OS X上无需使用sudo安装gems
如何在Mac OS X上无需使用sudo安装gems
我已经阅读了很多帖子,但到目前为止都没有解决问题的方法。在OSX(El Capitan Beta)上,我如何为自己的用户安装一个gem?帖子建议使用-user-install
参数,但我根本无法调用gem
命令,因为它会抛出权限错误。\n我按照\"在OSX 10.10 Yosemite上以用户身份安装gem\"的步骤进行,但仍然无法调用gem
命令。\n我安装了Homebrew,按照上述指南安装了rbenv,使用rbenv安装了一个Ruby版本,并检查它是否正确加载,但是指南中的最后一步是调用gem install
,而我仍然无法执行这个命令。\n在安装了rbenv
后调用gem
命令会出现以下错误:\n
/Users/Me/.rbenv/versions/2.1.5/lib/ruby/2.1.0/rubygems/stub_specification.rb:71:in `initialize': Permission denied @ rb_sysopen - /Users/Ne/.rbenv/versions/2.1.5/lib/ruby/gems/2.1.0/speci
\nrbenv环境变量:\n
RBENV_VERSION=2.1.5 RBENV_ROOT=/Users/Me/.rbenv RBENV_HOOK_PATH=:/Users/Me/.rbenv/rbenv.d: /usr/local/etc/rbenv.d: /etc/rbenv.d: /usr/lib/rbenv/hooks PATH=/Users/Me/.rbenv/versions/2.1.5/bin: /usr/local/Cellar/rbenv/0.4.0/libexec: /Users/Me/.rbenv/plugins/rbenv-env/bin: /Users/Me/.rbenv/shims: /usr/local/heroku/bin: /usr/local/sbin: /usr/local/bin: /usr/local/share/npm/bin: /Applications/Atom.app/Contents/Resources/app/apm/bin: /Users/Me/.bin: /Applications/Atom.app/Contents/Resources/app/apm/node_modules/atom-package-manager/bin: /usr/local/bin:/usr/bin: /bin: /usr/sbin:/sbin: /opt/X11/bin: /usr/local/MacGPG2/bin RBENV_DIR=/Users/Me/.rbenv/plugins
\n\"brew and gem both throws \'Permission denied\' error whenever I run it\"看起来相关,但除了使用其他方法之外,没有解决方案,我可能不得不尝试其他方法。
一、问题的出现原因:
在Mac OS X上安装gems时需要使用sudo命令,这是因为默认情况下,Mac OS X会将gems安装到系统级别的目录中,而这需要管理员权限。然而,使用sudo命令来安装gems可能会导致一些问题,比如权限问题,以及可能会影响到其他项目的gems。
二、解决方法:
为了避免使用sudo命令安装gems,可以使用bundler工具来管理gems,并进行本地安装。
具体的解决方法如下:
1. 确保已经安装了bundler,如果没有安装,可以通过以下命令安装:
gem install bundler
2. 在项目根目录下创建一个Gemfile文件,该文件用于指定项目所需的gems和版本。可以使用以下命令创建Gemfile:
bundle init
3. 打开Gemfile文件,将所需的gems和版本添加到文件中。例如:
gem 'rails', '6.0.3'
4. 运行以下命令来安装gems到本地:
bundle install --path vendor/bundle
5. 这将在项目根目录下创建一个vendor/bundle文件夹,并将gems安装到该文件夹中。
6. 在项目的.gitignore文件中添加以下内容,以忽略vendor/bundle文件夹:
vendor/bundle/
通过以上步骤,就可以在Mac OS X上无需使用sudo命令来安装gems了。通过使用bundler进行本地安装,可以确保gems只会影响到当前项目,并且不会影响到其他项目的gems。
在Mac OS X上安装gems时出现权限问题的原因是需要使用sudo命令。为了解决这个问题,可以尝试以下方法:
1. 使用Homebrew进行安装:Homebrew是在OSX上广受开发者欢迎的选择,不需要使用sudo命令。可以执行brew install ruby
命令进行安装。
2. 使用沙箱环境:可以尝试使用RVM和rbenv等沙箱环境,也可以避免使用sudo命令进行gems安装。
如果以上方法仍然无法解决权限问题,可以尝试以下步骤:
1. 检查是否已经安装了Homebrew、RVM或rbenv等工具。
2. 确保在终端中使用正确的命令进行安装。
3. 检查系统中是否有其他程序或进程正在使用gems,可能会导致权限错误。
通过以上方法,应该能够解决在Mac OS X上安装gems时出现的权限问题。
问题的原因是没有正确初始化rbenv,导致shims无法使用。解决方法是按照文档的步骤进行设置,确保执行了以下操作:
1. 将~/.rbenv/bin添加到$PATH中,以便使用rbenv命令行工具。
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
2. 将rbenv init添加到shell中,以启用shims和自动补全。
$ echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
3. 重新启动shell,使路径更改生效。
$ type rbenv
#=> "rbenv is a function"
如果仍然遇到问题,可以尝试删除.rbenv目录并重新安装ruby来解决。
在这个的问题中,有一个类似的问题,并提到了删除.rbenv目录并重新安装ruby的解决方法。此外,还强调了在$PATH中同时包含.rbenv/shims和.rbenv/bin的重要性。
此外,还提到了在安装rbenv时遵循官方文档的指示,并根据特定环境的需要进行设置。不要盲目地将shims添加到$PATH中,因为可能会错过rbenv init所做的其他操作。
以上是解决在Mac OS X上无法使用gem命令而需要sudo的问题的方法。