无法在 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 系统
尝试从我的终端安装 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 系统