在全新虚拟机编译Ruby遇configure错误:无法运行/bin/sh tool/config.sub
configure: error: cannot run /bin/sh tool/config.sub的问题 遇到这种情况我太懂了——在全新FreeBSD虚拟机上编译Ruby时踩这个坑真的很闹心,尤其是试了常规的autoreconf --install还没用的情况。咱们一步步来排查解决:
第一步:确认Git子模块已拉取
Ruby源码仓库里的tool/目录内容是作为Git子模块存在的,直接git clone默认不会拉取这些子模块,这就会导致config.sub这类文件缺失。进入你的Ruby源码目录,执行:git submodule update --init --recursive这会把所有依赖的子模块内容拉取完整,包括
tool/下的配置脚本。第二步:安装FreeBSD必备的编译依赖
FreeBSD默认的基础工具链可能缺少生成配置文件所需的组件,先把这些依赖装上:pkg install autoconf automake libtool bash这些包会提供
autoreconf、config.sub生成工具,以及更兼容的bash环境。第三步:彻底重新生成配置文件
之前的autoreconf --install可能不够彻底,试试带强制参数的命令,确保所有必要的配置文件都被生成并替换:autoreconf -fvi其中
-f强制覆盖现有文件,-v显示详细过程,-i安装缺失的辅助脚本。第四步:解决Shell兼容性问题
FreeBSD默认的/bin/sh和Ruby配置脚本可能存在兼容性问题,你可以直接用bash来运行configure:bash ./configure或者干脆把默认Shell换成bash(需要先装了bash):
chsh -s /usr/local/bin/bash重新登录后再运行
./configure。额外清理:重置配置缓存
如果之前跑过configure留下了缓存文件,可能会干扰新的配置过程,先删掉这些缓存:rm -rf config.cache autom4te.cache
做完这些步骤后,再重新运行./configure应该就能正常进行了。
内容的提问来源于stack exchange,提问作者bertramscharpf

