Nokogiri 安装错误并在 macOS 14 Sonoma 上失败

问题描述 投票:0回答:3

我正在尝试使用 Sonoma 14.4 和我的 ruby 项目在 x86 intel mac 上安装旧版本的 nokogiri (1.6.8.1),但我在捆绑安装或 gem 安装 nokogiri 时遇到问题

xml_document.c:46:25: error: incompatible function pointer types passing 'int (xmlNodePtr, xmlNodePtr, xmlDocPtr)' (aka 'int (struct _xmlNode *, struct _xmlNode *,
struct _xmlDoc *)') to parameter of type 'st_foreach_callback_func *' (aka 'int (*)(unsigned long, unsigned long, unsigned long)')
[-Wincompatible-function-pointer-types]
  st_foreach(node_hash, dealloc_node_i, (st_data_t)doc);
                        ^~~~~~~~~~~~~~
/Users/username/.rvm/rubies/ruby-2.7.8/include/ruby-2.7.0/ruby/st.h:141:57: note: passing argument to parameter here
int rb_st_foreach(st_table *, st_foreach_callback_func *, st_data_t);
                                                        ^

已尝试使用系统库(如 libxml2-dev 和 libxslt1-dev)、安装和更新 xcode 命令行权限等常见修复,但失败了。我也尝试过使用

gem install nokogiri -v '1.6.8.1' -- --with-cflags="-Wno-incompatible-function-pointer-types"

但没有效果。

在 m2 macbook 上也会遇到此错误(也在 Sonoma 上运行)。我相信这是 xcode 编译 gem 中的 c 文件的问题。

有关更多详细信息,该项目正在 ruby 2.7.8 上运行。经过我自己的尝试和错误,我只能安装nokogiri版本1.11及以上,但我需要使用版本1.6来完成这个项目

任何可能导致解决此问题的帮助或指示将不胜感激! :)

ruby xcode macos rvm nokogiri
3个回答
2
投票

我遇到了同样的问题,然后通过捆绑器安装 libxslt 和 libxml2 成功,然后一起提供所有参数:

gem install nokogiri -v 1.8.5 -- \
--use-system-libraries \
--with-xslt-dir=/usr/local/opt/libxslt \
--with-xml2-dir=/usr/local/opt/libxml2 \
--with-cflags="-Wno-incompatible-function-pointer-types"

0
投票

我刚刚遇到了这个问题,运行

brew install llvm@15
为我解决了这个问题。希望有帮助


0
投票

试试这个命令,经过多次尝试后它有助于安装nokogiri。 “-Wno-int-conversion”在这里玩了把戏。 gem install nokogiri -v '1.6.8.1' --source 'https://artifactory.roving.com/artifactory/gems/' -- --with-cflags="-Wno-inknown-function-pointer-types -Wno -int 转换”

© www.soinside.com 2019 - 2024. All rights reserved.