如何在安装Rails时修复"您没有写入/ usr/bin目录的权限"错误?

Ray*_*Ray 100 ruby-on-rails-3

我正在尝试在运行OS X 10.6.3,Ruby 1.8.7和Rails 2.3.5的全新MacBook Pro上安装Rails 3,我想知道我是否已经自己洗了.到目前为止,我已经运行了这些命令:

$ gem update --system
$ gem install arel tzinfo builder memcache-client rack rack-test rack-mount erubis mail text-format thor bundler i18n
$ gem install rails --pre
Run Code Online (Sandbox Code Playgroud)

但是,当我运行最后一个命令时,我收到此错误:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /usr/bin directory.
Run Code Online (Sandbox Code Playgroud)

我认为它希望我运行命令,sudo以便它可以写入/usr/bin/rails.但如果我这样做,我不会覆盖我的Rails 2.3.5可执行文件吗?我不想那样做.相反,我想保留两个版本的Rails.我怎么做?

小智 377

使用-n参数来安装cocoapods:

sudo gem install cocoapods -n /usr/local/bin
Run Code Online (Sandbox Code Playgroud)

  • 除非您指定-n/usr/local/bin,否则在MacOS上失败.谢谢你的解决方案 (15认同)
  • 为什么我们甚至需要这个呢? (7认同)
  • 根据http://guides.rubygems.org/command-reference/#gem-install,-n指定二进制文件所在的目录。在Mac上,我还需要`-n / usr / local / bin`。在使用-n选项(实际上是/ usr / local / bin)之前,我运行了“哪个容器”来确定其现有位置。 (3认同)
  • -n是什么意思? (2认同)
  • 我敢肯定RVM很棒,但这是一个更好的答案,可以直接解决眼前的问题,而不必让我失望。 (2认同)

Fra*_*eau 32

使用-n/usr/local/bin标志确实有效,但每次我想再次更新包时我都必须回到这个页面.所以我想出了一个永久的解决方案.

对于有兴趣永久修复此问题的人:

创建一个〜/ .gemrc文件

vim .gemrc
Run Code Online (Sandbox Code Playgroud)

添加以下内容:

:gemdir:
   - ~/.gem/ruby
install: -n /usr/local/bin
Run Code Online (Sandbox Code Playgroud)

现在,您可以在没有-n标志的情况下正常运行命令.

请享用!

  • 这对我有用=> vim〜/ .gemrc (2认同)

小智 31

sudo gem install cocoapods --pre -n /usr/local/bin
Run Code Online (Sandbox Code Playgroud)

这适合我.


小智 27

您可以使用 sudo gem install -n /usr/local/bin cocoapods

这适合我.


Tar*_*lel 14

我建议使用RVM,它允许你使用gem配置文件安装多个版本的Ruby/Rails,并且基本上保持所有宝石彼此包含.您可能想查看类似的帖子如何在OSX上安装Ruby on Rails 3


Sub*_*med 8

在 macOS High Sierra 上,这解决了我的问题:

sudo gem update --system -n /usr/local/bin/gem
Run Code Online (Sandbox Code Playgroud)


And*_*itt 6

要修复您的特定错误,您需要以sudo身份运行该命令,即:

sudo gem install rails --pre
Run Code Online (Sandbox Code Playgroud)

  • 不。使用 rvm 或 rbenv ...不要只是 sudo。 (2认同)

小智 5

正确安装 RVM 后,此错误击中了我。解决方法:重新启动终端。

参考RailsCast 的 RVM 安装教程。