当尝试从我的终端在我的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版本管理系统,即rbenv
或rvm
,作为普通用户,使用它安装Ruby,并使用它管理已安装的Ruby版本。
如果两者都不可能或不可行,请检查Gems安装的目录权限,并确保它们与您期望的一致。就我个人而言,每当我使用Rails时,我都会尽一切努力使用Ruby版本管理系统。