MacOS 13.6.6下无法安装Jekyll的技术求助
安装Jekyll失败(MacOS 13.6.6)
在MacOS 13.6.6系统中安装Jekyll时持续失败,执行xcode-select --install、xcode-select --switch /Library/Developer/CommandLineTools及gem update --system均无法解决问题,核心报错为编译原生扩展时找不到stdio.h文件,完整报错信息如下:
Building native extensions. This could take a while... ERROR: Error installing jekyll: ERROR: Failed to build gem native extension. current directory: /usr/local/lib/ruby/gems/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser /usr/local/opt/ruby/bin/ruby extconf.rb creating Makefile current directory: /usr/local/lib/ruby/gems/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser make DESTDIR\= sitearchdir\=./.gem.20241203-56969-vts81m sitelibdir\=./.gem.20241203-56969-vts81m clean current directory: /usr/local/lib/ruby/gems/3.3.0/gems/http_parser.rb-0.8.0/ext/ruby_http_parser make DESTDIR\= sitearchdir\=./.gem.20241203-56969-vts81m sitelibdir\=./.gem.20241203-56969-vts81m compiling ruby_http_parser.c warning: unknown warning option '-Wno-cast-function-type'; did you mean '-Wno-bad-function-cast'? [-Wunknown-warning-option] warning: unknown warning option '-Wmisleading-indentation'; did you mean '-Wbinding-in-condition'? [-Wunknown-warning-option] In file included from ruby_http_parser.c:1: In file included from /usr/local/Cellar/ruby/3.3.6/include/ruby-3.3.0/ruby.h:38: In file included from /usr/local/Cellar/ruby/3.3.6/include/ruby-3.3.0/ruby/ruby.h:25: /usr/local/Cellar/ruby/3.3.6/include/ruby-3.3.0/ruby/defines.h:16:10: fatal error: 'stdio.h' file not found #include <stdio.h> ^~~~~~~~~ 2 warnings and 1 error generated. make: *** [ruby_http_parser.o] Error 1 make failed, exit code 2 Gem files will remain installed in /usr/local/lib/ruby/gems/3.3.0/gems/http_parser.rb-0.8.0 for inspection. Results logged to /usr/local/lib/ruby/gems/3.3.0/extensions/x86_64-darwin-22/3.3.0/http_parser.rb-0.8.0/gem_make.out Successfully installed bundler-2.5.23 Parsing documentation for bundler-2.5.23 Done installing documentation for bundler after 0 seconds 1 gem installed
当前Gem环境信息:
RubyGems Environment: - RUBYGEMS VERSION: 3.5.23 - RUBY VERSION: 3.3.6 (2024-11-05 patchlevel 108) [x86_64-darwin22] - INSTALLATION DIRECTORY: /usr/local/lib/ruby/gems/3.3.0 - USER INSTALLATION DIRECTORY: /Users/engrpckg/.local/share/gem/ruby/3.3.0 - RUBY EXECUTABLE: /usr/local/opt/ruby/bin/ruby - GIT EXECUTABLE: /usr/bin/git - EXECUTABLE DIRECTORY: /usr/local/lib/ruby/gems/3.3.0/bin - SPEC CACHE DIRECTORY: /Users/engrpckg/.cache/gem/specs - SYSTEM CONFIGURATION DIRECTORY: /usr/local/Cellar/ruby/3.3.6/etc - RUBYGEMS PLATFORMS: - ruby - x86_64-darwin-22 - GEM PATHS: - /usr/local/lib/ruby/gems/3.3.0 - /Users/engrpckg/.local/share/gem/ruby/3.3.0 - /usr/local/Cellar/ruby/3.3.6/lib/ruby/gems/3.3.0 - GEM CONFIGURATION: - :update_sources => true - :verbose => true - :backtrace => true - :bulk_threshold => 1000 - REMOTE SOURCES: - https://rubygems.org/ - SHELL PATH: - /usr/local/lib/ruby/gems/3.3.0/bin - /usr/local/Cellar/ruby/3.3.6/bin - /usr/local/bin - /System/Cryptexes/App/usr/bin - /usr/bin - /bin - /usr/sbin - /sbin - /Library/TeX/texbin - /opt/X11/bin - /Library/Apple/usr/bin - /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin - /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin - /var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin - /Users/engrpckg/Applications/iTerm.app/Contents/Resources/utilities
已尝试的操作:
- 执行
xcode-select --install安装Command Line Tools - 执行
xcode-select --switch /Library/Developer/CommandLineTools切换工具路径 - 执行
gem update --system更新RubyGems
解决建议
重新安装Command Line Tools并重置路径
先卸载现有工具再重装:sudo rm -rf /Library/Developer/CommandLineTools xcode-select --install安装完成后确认路径:
xcode-select -p预期输出应为
/Library/Developer/CommandLineTools设置SDK路径环境变量
编译时找不到头文件通常是SDK路径未正确识别,添加以下环境变量到你的shell配置文件(/.zshrc或/.bashrc):export SDKROOT=$(xcrun --show-sdk-path) export CFLAGS="-isysroot $SDKROOT"生效配置:
source ~/.zshrc # 或source ~/.bashrc之后再尝试安装Jekyll:
gem install jekyll检查Ruby版本兼容性
Ruby 3.3.x与部分旧版gem(如http_parser.rb-0.8.0)可能存在兼容性问题,可尝试降级Ruby版本到3.2.x(用rbenv或rvm管理更方便):# 若使用rbenv rbenv install 3.2.5 rbenv global 3.2.5切换版本后重新安装Jekyll。
清理gem缓存并重新安装
清理缓存避免损坏文件影响安装:gem cleanup rm -rf /usr/local/lib/ruby/gems/3.3.0/gems/http_parser.rb-0.8.0 rm -rf /usr/local/lib/ruby/gems/3.3.0/extensions/x86_64-darwin-22/3.3.0/http_parser.rb-0.8.0然后重新执行安装命令。
手动指定编译器参数安装
直接在安装时传递CFLAGS参数:CFLAGS="-isysroot $(xcrun --show-sdk-path)" gem install jekyll
内容的提问来源于stack exchange,提问作者Jonah Robinson
相关产品推荐
相关产品推荐

