Fedora 40下使用Vagrant遇Nokogiri相关错误求助
解决Fedora 40下Vagrant与Nokogiri依赖问题
核心原因
Fedora 40的系统Ruby环境与RVM安装的Ruby(3.2.2)存在路径冲突,导致gem原生扩展未正确编译,尤其是Nokogiri这类依赖系统库的gem;同时系统自带gem包与RVM管理的gem包路径混淆,加剧了加载错误。
解决步骤
1. 切换到RVM管理的Ruby环境
确保使用RVM的Ruby,避免系统Ruby干扰:rvm use 3.2.2 --default rvm gemset use global2. 安装Nokogiri编译依赖
Fedora下需先安装编译所需的系统原生库:sudo dnf install -y gcc ruby-devel zlib-devel libxml2-devel libxslt-devel3. 批量修复未编译的gem扩展
直接修复所有提示未构建扩展的gem,而非单独安装Nokogiri:gem pristine bcrypt_pbkdf-1.1.0 bigdecimal-3.1.5 debug-1.9.1 ed25519-1.3.0 ffi-1.15.5 io-console-0.7.1 json-2.7.1 nokogiri-1.16.5 psych-5.1.2 racc-1.7.3 ruby-libvirt-0.7.14. 重新安装Vagrant(若通过gem安装)
若Vagrant是通过gem安装的,彻底重装避免残留问题:gem uninstall vagrant gem install vagrant5. 验证修复效果
执行Vagrant命令测试是否恢复正常:vagrant --version
额外建议
- 日常开发尽量保持单一Ruby环境,避免混用系统Ruby与RVM Ruby
- 若问题仍存在,可创建独立RVM gemset隔离Vagrant环境:
rvm gemset create vagrant_env rvm use 3.2.2@vagrant_env gem install vagrant
内容的提问来源于stack exchange,提问作者Btu Vuj
相关产品推荐
相关产品推荐

