Windows 11下安装Charlock_holmes依赖报错求助
安装charlock_holmes gem时遇到ICU依赖错误的解决求助
错误详情
执行安装命令时出现以下错误:
$ gem install charlock_holmes -- --with-icui18nlib=icuin --with-icudatalib=icudt Temporarily enhancing PATH for MSYS/MINGW... Building native extensions with: '--with-icui18nlib=icuin --with-icudatalib=icudt' This could take a while... ERROR: Error installing charlock_holmes: ERROR: Failed to build gem native extension. current directory: C:/Ruby31-x64/lib/ruby/gems/3.1.0/gems/charlock_holmes-0.7.7/ext/charlock_holmes C:/Ruby31-x64/bin/ruby.exe -I C:/Ruby31-x64/lib/ruby/site_ruby/3.1.0 extconf.rb --with-icui18nlib\=icuin --with-icudatalib\=icudt checking for -licuin... no *************************************************************************************** *********** icu required (brew install icu4c or apt-get install libicu-dev) *********** *************************************************************************************** *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --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 --without-make-prog --srcdir=. --curdir --ruby=C:/Ruby31-x64/bin/$(RUBY_BASE_NAME) --with-icu-dir --without-icu-dir --with-icu-include --without-icu-include=${icu-dir}/include --with-icu-lib --without-icu-lib=${icu-dir}/lib --with-icu-i18n-dir --without-icu-i18n-dir --with-icu-i18n-include --without-icu-i18n-include=${icu-i18n-dir}/include --with-icu-i18n-lib --without-icu-i18n-lib=${icu-i18n-dir}/lib --with-icu-i18n-config --without-icu-i18n-config etc
已尝试的操作
- 下载icu4c 71.1版本安装,并在安装gem时指定
--with-icu-lib参数指向安装路径 - 执行以下命令安装依赖后重试:
ridk exec pacman -S mingw-w64-x86_64-icu icu-devel icu gem install charlock_holmes -- --with-icui18nlib=icuin --with-icudatalib=icudt
可行解决方案
针对Windows环境(RubyInstaller+MSYS2),按以下步骤操作:
激活MSYS2环境
打开Ruby自带的终端(开始菜单 > Ruby 3.1-x64 > Start Command Prompt with Ruby),或手动执行ridk enable确保MSYS2环境生效。重装适配架构的ICU库
先清理已安装的可能不兼容的包,再安装正确的x64版本:ridk exec pacman -Rns mingw-w64-x86_64-icu icu-devel icu ridk exec pacman -S mingw-w64-x86_64-icu注:
mingw-w64-x86_64-icu已包含编译所需的头文件和库,无需额外安装其他ICU相关包。指定ICU路径安装gem
找到MSYS2中ICU的默认安装路径(通常为C:\Ruby31-x64\msys64\mingw64),执行以下命令安装,无需手动指定单个库文件:gem install charlock_holmes -- --with-icu-dir=C:/Ruby31-x64/msys64/mingw64版本兼容调整
charlock_holmes 0.7.7与高版本ICU(如71.1)可能存在兼容问题,可尝试安装69.x版本的ICU:ridk exec pacman -U https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-icu-69.1-1-any.pkg.tar.zst安装完成后再执行步骤3的gem安装命令。
检查环境变量
确保C:\Ruby31-x64\msys64\mingw64\bin在系统PATH中,避免编译时找不到库文件。
内容的提问来源于stack exchange,提问作者Hollow
相关产品推荐
相关产品推荐

