Azure DevOps中Jekyll站点构建失败求助
解决Azure DevOps上Jekyll构建的strscan.so加载失败问题
排查步骤和解决办法
先确认Ruby本身是否正常
strscan是Ruby标准库的一部分,报错找不到它(错误码126)大概率是Ruby安装不完整或者依赖的系统库缺失。先在构建脚本里加个验证步骤:ruby -e "require 'strscan'; puts 'strscan加载成功'"如果这一步就报错,直接换Ruby安装方式——别用Azure DevOps自带的版本,改用RubyInstaller完整包。在脚本里先卸载现有Ruby,再安装3.1.5版本的RubyInstaller,记得勾选安装DevKit和VC++运行时组件。
清掉旧Gem缓存,重新安装依赖
旧的Gem缓存可能和新Ruby版本不兼容,先彻底清理:gem clean bundle clean --force删除项目根目录的
Gemfile.lock,重新执行bundle install,确保所有Gem都是基于当前Ruby版本编译的。补装VC++运行时库
Win2019虚拟机可能缺少Ruby所需的VC++ 2019运行时,在构建脚本开头添加安装步骤:choco install vcredist2019 -y如果使用的是自托管代理,安装完成后最好重启代理服务,让环境变更生效。
换个Ruby版本尝试
虽然Azure DevOps仅提供3.0.7和3.1.5可选,试试锁定3.0.7版本——可能3.1.5和Win2019环境存在兼容性问题:
在Gemfile里指定版本:ruby '~> 3.0.7'然后重新安装依赖再执行构建。
对比本地与Azure的环境差异
本地用Ruby 3.2.2能正常构建,说明代码本身无问题,重点排查环境差异:- 用Dependency Walker工具查看本地Ruby的strscan.so依赖的DLL,再在Azure VM上确认这些DLL是否存在;
- 在构建脚本中输出
PATH、RUBY_HOME等环境变量,和本地的配置对比,排查是否有路径或变量缺失。
内容的提问来源于stack exchange,提问作者David Jones
相关产品推荐
相关产品推荐

