升级到macOS后,Mojave gem更新失败

时间:2018-09-26 09:48:39

标签: macos rubygems

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

current directory: /Library/Ruby/Gems/2.3.0/gems/libxml-ruby-3.1.0/ext/libxml

/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby -r ./siteconf20180926-80978-eoqfjh.rb extconf.rb 检查/ opt / include / libxml2,/ opt / local / include / libxml2,/ usr / local / include / libxml2,/ usr / include / libxml2中的libxml / xmlversion.h ...否 * extconf.rb失败* 由于某些原因(可能缺少必要)而无法创建Makefile 库和/或标题。检查mkmf.log文件以获取更多详细信息。你可以 需要配置选项。

提供的配置选项:     --with-opt-dir     --without-opt-dir     --with-opt-include     --without-opt-include = $ {opt-dir} / include     --with-opt-lib     --without-opt-lib = $ {opt-dir} / lib     --with-make-prog     --with-make-prog     --srcdir =。     --curdir     --ruby = /系统/库/框架/Ruby.framework/版本/2.3/usr/bin/$(RUBY_BASE_NAME)     --with-xml2-config     --without-xml2-config     --with-xml2-dir     --without-xml2-dir     --with-xml2-include     --without-xml2-include = $ {xml2-dir} / include     --with-xml2-lib     --without-xml2-lib = $ {xml2-dir} / lib  extconf失败:需要libxml2。

Install the library or try one of the following options to extconf.rb:

  --with-xml2-config=/path/to/xml2-config
  --with-xml2-dir=/path/to/libxml2
  --with-xml2-lib=/path/to/libxml2/lib
  --with-xml2-include=/path/to/libxml2/include

要查看此扩展为何无法编译,请检查mkmf.log,该文件可在此处找到:

/Library/Ruby/Gems/2.3.0/extensions/universal-darwin-18/2.3.0/libxml-ruby-3.1.0/mkmf.log

extconf失败,退出代码1

宝石文件将保留安装在/Library/Ruby/Gems/2.3.0/gems/libxml-ruby-3.1.0中进行检查。 结果记录到/Library/Ruby/Gems/2.3.0/extensions/universal-darwin-18/2.3.0/libxml-ruby-3.1.0/gem_make.out 更新nokogiri 构建本机扩展。这可能需要一段时间... 错误:执行gem时...(Gem :: FilePermissionError)     您没有对/ usr / bin目录的写权限。

3 个答案:

答案 0 :(得分:41)

该错误是由于macOS Mojave已停止将标准头文件放置在/usr/include中,而仅将它们保留在XCode目录中。

您可以通过运行ls /usr/include进行验证,并且很可能该目录已不存在。相反,通过运行xcode-select --install的常规技巧无法解决问题。

解决方法是运行Apple提供的旧版安装程序,该程序会将头文件安装到/usr/include

sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

答案 1 :(得分:2)

如果您使用自制软件,建议的方法是告诉pkg-config在哪里可以找到libxml2库:

brew reinstall libxml2
export PKG_CONFIG_PATH="/usr/local/opt/libxml2/lib/pkgconfig"

答案 2 :(得分:0)

此外,您可能已经过时了bundle的配置,这样就可以了。运行bundle config build.nokogiri --use-system-libraries,它会警告您并显示您当前拥有的配置。我遵循了所有指南,并重新安装了所有gems甚至ruby几次,只是发现配置已设置为使用不再存在的路径。