无法在 MacO 上安装 Rails。错误消息:无法构建 gem 本机扩展

Can't install Rails on MacOs. Error messages: Failed to build gem native extensions

尝试从我的终端安装 Rails 时,在我的 Mac OS Big Sur 上,输入“sudo gem install rails”我收到错误消息:“无法构建本机扩展”。我安装了 ruby 2.6.3。我尝试安装 Xcode,正如我在论坛中看到的那样,但它仍然不起作用。我不知道该怎么办:

这里,终端报错:

% sudo gem 安装 rails 构建本机扩展。这可能需要一段时间... 错误:安装 rails 时出错: 错误:无法构建 gem 本机扩展。

current directory: /Library/Ruby/Gems/2.6.0/gems/nio4r-2.5.8/ext/nio4r

/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/ruby -I /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/2.6.0 -r 。 /siteconf20211119-69718-1dr6qis.rb extconf.rb 检查 unistd.h... *** extconf.rb 失败 *** 由于某种原因无法创建 Makefile,可能是缺少必要的 图书馆 and/or headers。查看 mkmf.log 文件以获取更多详细信息。你可以 需要配置选项。

我遇到过不止一次类似的问题。

我可以想到三个可能的原因和解决方案,但您的问题可能根源不同。

1。 Ruby 版本不匹配

您以为您使用的是 Ruby 2.6.3。但实际上 ruby 您的 gem 命令识别的是不同版本的 Ruby。 使用 ruby --version 检查并确保它是正确的。

如果您在以前的版本中 Ruby 中有 Rails,并且您已经升级了 Ruby,那么可能会出现此类错误,具体取决于您的操作方式package management 系统处理此案。 如果是这样,请尝试先卸载 Rails 然后重新安装。

2。安装问题Ruby

由于某种原因,您尝试使用的 Ruby (2.6.3) 尚未正确安装。然后,一个简单的解决方案是重新安装 Ruby,确保它已正确安装。

这在很大程度上取决于您使用的系统,但是如果您使用的是 rbenv

rbenv uninstall 2.6.3
rbenv install 2.6.3
rbenv rehash

应该完成这项工作。然后您可以重新安装 Rails.

3。权限问题(目录写入等)

在你的情况下,你 运行 sudo gem install rails,这可能意味着你已经安装了 Ruby 和 Gems,包括 Rails,而你的 Railsapp目录在普通用户下

我知道安装 Ruby 和 Gems 通常比 运行 和 Rails 相同的用户更安全(不过请注意,这在实践中可能并非不可能一些特定的环境)。当用户不同时,可能会遇到各种权限问题,安装 Rails 应用程序也有问题 – 这是可能的,但根据我的经验并不简单。

因此,我的建议是,如果可能且对您来说可行,删除所有已安装的 Ruby 并以拥有​​ Rails 应用程序目录,不使用 sudo。例如,如果您正在使用rbenv,请卸载rbenv,删除所有与rbenv相关的目录,然后以普通用户从头开始重新安装rbenv。或者,如果您使用的是系统默认 Ruby,我建议安装 Ruby 版本的 management 系统,即 rbenv 或 [=20] =],作为普通用户,用它安装Ruby(s),并用它管理安装的Ruby版本。

如果两者都不可能或不可行,请检查安装 Gems 的目录权限,并确保它们与您期望的一致。就个人而言,每当我使用 Rails.

时,我都会尽一切努力使用 Ruby 版本的 management 系统