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



当尝试从我的终端在我的Mac OS Big Sur上安装Rails时,键入"sudogeminstallrails;我得到错误消息:";未能建立本机扩展";。我安装了ruby 2.6.3。我试着安装Xcode,正如我在论坛上看到的那样,但它仍然不起作用。我不知道该怎么办:

这里,终端中的错误:

%sudogem安装导轨正在构建本机扩展。这可能需要一段时间。。。错误:安装导轨时出错:错误:无法构建gem本机扩展。

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

/System/Library/framework/Ruby.framework/Versions/2.6/usr/bin/Ruby-I/System/Librare/Frameworks/Ruby.framework/Versions/2.6/usr/lib/Ruby/2.6.0-r/siteconf20211119-69718-1dr6qis.rb extconf.rb检查unistd.h…***extconf.rb失败***由于某些原因,无法创建Makefile,可能缺少必要的库和/或标头。有关详细信息,请查看mkmf.log文件。你可以需要配置选项。

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

我能想到三个潜在的原因和解决方案,尽管你的问题可能根源于不同的东西。

1.Ruby版本不匹配

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

如果您在以前的版本中使用Ruby中的Rails,并且从那时起升级了Ruby,那么可能会出现这种类型的错误,这取决于包管理系统如何处理这种情况。如果是这样,请先卸载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,作为超级用户,而Rails应用程序目录位于普通用户中。

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

因此,我的建议是,如果可能且实用的话,删除所有已安装的Ruby,并以拥有Rails应用程序目录的普通用户的身份重新安装它(=Ruby(,而不使用sudo。例如,如果使用rbenv,请卸载rbenv,删除所有与rbenv相关的目录,然后以普通用户身份从头开始重新安装rbenv。或者,如果您使用的是系统默认的Ruby,我建议您安装Ruby版本管理系统,即rbenvrvm,作为普通用户,使用它安装Ruby,并使用它管理已安装的Ruby版本。

如果两者都不可能或不可行,请检查Gems安装的目录权限,并确保它们与您期望的一致。就我个人而言,每当我使用Rails时,我都会尽一切努力使用Ruby版本管理系统。

最新更新