安装 Ruby 版本管理器!

安装 Ruby 版本管理器!

所以我在安装新的 gem 时似乎总是会收到错误消息。我对 Ruby、Rails 和 RubyGems 都不熟悉,所以这很令人沮丧。我不确定我是否需要配置某些东西,或者我是否安装不正确……所以希望你能帮忙。以下是我遇到的一些问题示例:

#1:使用 sudo 与不使用 sudo

在大量的教程/文档中他们总是使用:

gem install gem-name

对我来说,这几乎总是会导致某种错误......直到我这样做......

sudo gem install gem-name

...然后 gem 通常可以正常安装。为什么人们gem install不用 就可以运行sudo

解决方案:

安装 Ruby 版本管理器!

说真的!我希望早点这样做。Ruby 版本管理器可以运行多个版本的 Ruby,每个版本都有自己的 gem 集,并且可以无缝地在不同版本之间切换。另外,您不必再使用任何版本sudo。另外,它非常容易安装,所以您应该这样做!


#2:“找不到头文件”

有时我会收到这样的消息,即使在sudo...下运行时也是如此。

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h

那有什么意思?

解决方案:

问题是它找不到 make 命令。它是在安装 XCode 时自动安装的。出于某种原因,尽管我安装了 XCode,但它找不到它。我下载了最新版本的 XCode并重新安装。现在当我运行which make它时,它会正确返回/usr/bin/make

使用 Lion 和新版本的 Xcode,从以下位置下载“Xcode 命令行工具”https://developer.apple.com/downloads


#3:“不安全的世界可写目录”

这是一个新的。

/Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/source.rb:352: warning: Insecure world writable dir /usr/local/bin in PATH, mode 040777

这看起来不太好。我需要做什么来修复它?

解决方案:

/usr/local/bin我安装的某些东西在某个时间点更改了我的目录(以及我的/usr/local和目录)的权限/usr/local/mysql。要将其改回:

sudo chmod 755 /usr/local/bin

#4:无法安装 bcrypt-ruby

最后,我尝试运行bundle install我的全新 Rails 3.0.0.beta4 应用程序,但出现以下错误:

Installing bcrypt-ruby (2.1.2) from .gem files at /Users/andrew/.bundle/ruby/1.8/cache with native extensions /Library/Ruby/Site/1.8/rubygems/installer.rb:483:in `build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h


Gem files will remain installed in /Users/andrew/.bundle/ruby/1.8/gems/bcrypt-ruby-2.1.2 for inspection.
Results logged to /Users/andrew/.bundle/ruby/1.8/gems/bcrypt-ruby-2.1.2/ext/mri/gem_make.out
    from /Library/Ruby/Site/1.8/rubygems/installer.rb:446:in `each'
    from /Library/Ruby/Site/1.8/rubygems/installer.rb:446:in `build_extensions'
    from /Library/Ruby/Site/1.8/rubygems/installer.rb:198:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/source.rb:170:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/installer.rb:34:in `run'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/spec_set.rb:12:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/spec_set.rb:12:in `each'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/installer.rb:21:in `run'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/installer.rb:6:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/cli.rb:91:in `install'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/task.rb:33:in `send'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/task.rb:33:in `run'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/invocation.rb:109:in `invoke'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/invocation.rb:116:in `call'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/invocation.rb:116:in `invoke'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor.rb:137:in `start'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor/base.rb:378:in `start'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/lib/bundler/vendor/thor.rb:124:in `start'
    from /Library/Ruby/Gems/1.8/gems/bundler-0.9.26/bin/bundle:13
    from /usr/bin/bundle:19:in `load'
    from /usr/bin/bundle:19

它似乎bcrypt-ruby正在尝试安装某种依赖项。那么我该如何让它工作呢?我怎么知道它失败的原因?

解决方案:

通过重新安装 XCode 解决了这个问题。


抱歉,我列出了这么多问题,但我真的想摆脱所有这些问题!

提前致谢!

答案1

由于我只能回答部分问题,因此最好将其作为单独的问题。

  1. sudo- 在 OS X 上,gems 安装在 下的目录中/Library。此处的任何内容都由 Mac 上的所有用户共享,因此要能够写入它,您需要 root 访问权限,而 sudo 会为您提供该访问权限。
    当人们快速解释事情(因为他们希望人们知道何时使用 sudo)或他们已设置 ruby​​ 以按照以下说明安装在用户目录中时,您会看到没有 sudo 的命令Ruby 文档

  2. 和 4.:找不到 ruby​​ 的头文件。
    我怀疑您没有安装 XCode,即 Apple 开发人员工具。它们位于您的 OS X DVD 上,或者可以从以下位置下载苹果如果您使用的是 OS X Lion,则请访问 App Store。

  3. /usr/local/bin- 很糟糕。
    运行/Applications/Utilities/Disk Utility.app,选择启动驱动器并修复权限。

答案2

我建议安装Ruby 版本管理器,并且不用担心sudo问题,并且可以轻松地在不同的ruby版本和gem集之间切换。

答案3

回复#4:

如果你缺少 XCode 并且有 Apple 开发者账户,你也可以只安装命令行工具(约 180MB) - 下载可在 ADC 网站上查看

答案4

权限错误的原因是因为你没有以root用户身份登录终端。

如果你已经拥有 root 权限,请在 Mac 的终端类型中启用该功能(不带 $)

$ su

如果你没有 root 用户,则需要使用以下步骤启用它

  1. 从 Apple 菜单中,选择系统偏好设置...
  2. 从查看菜单中选择用户和组。
  3. 单击锁并以管理员帐户身份进行身份验证。
  4. 单击“登录选项…”。
  5. 单击右下角的“编辑...”或“加入...”按钮。
  6. 单击“打开目录实用程序...”按钮。
  7. 单击“目录实用程序”窗口中的锁。
  8. 输入管理员帐户名和密码,然后单击“确定”。
  9. 从编辑菜单中选择启用 Root 用户。
  10. 在密码和验证字段中输入您想要使用的根密码,然后单击确定。

更多内容http://support.apple.com/kb/ht1528

至少在我被困了几个小时之后它还是有用的。

相关内容