Debian源码编译Vim执行dpkg-buildpackage报--runstatedir=/run不识别错误
Debian源码构建Vim报--runstatedir参数不识别错误解决
问题根因
报错核心原因是当前使用的Vim 8.2.5106源码包内的configure脚本由低于2.70版本的旧版autoconf生成,不支持--runstatedir参数;而系统安装的≥10版本新版debhelper中,dh_auto_configure构建步骤会默认向configure命令追加--runstatedir=/run参数,直接触发参数不识别报错。
日志中提到的src/auto/config.h空文件警告是前次构建失败残留的中间文件,不影响本次报错根因,但不清理会导致后续打包校验异常。
排查验证步骤
- 确认debhelper版本:执行
dpkg -l debhelper,若输出的版本号≥10,即符合默认注入--runstatedir参数的触发条件。 - 确认configure脚本支持性:进入源码根目录执行
./configure --help | grep runstatedir,若无任何匹配输出,即可确认脚本不支持该参数。
解决方法
按操作复杂度从低到高选择即可:
- 方法1:临时降低debhelper兼容级别(最快生效)
- 先清理构建残留:执行
fakeroot dh_clean,删除失败构建生成的中间文件。 - 打开源码根目录下的
debian/compat文件,将文件内的数字修改为9(compat 9及更早版本不会默认注入--runstatedir参数)。 - 重新执行构建命令
dpkg-buildpackage -rfakeroot即可。
- 先清理构建残留:执行
- 方法2:添加构建规则过滤无效参数(不修改兼容级别)
- 先执行
fakeroot dh_clean清理残留。 - 打开源码根目录下的
debian/rules文件,在文件末尾追加以下内容(注意规则行首必须用Tab缩进,不能用空格):override_dh_auto_configure: dh_auto_configure -- $(filter-out --runstatedir=%, $(DEB_CONFIGURE_USER_FLAGS)) - 重新执行构建命令即可。
- 先执行
- 方法3:重新生成configure脚本适配新参数
- 先安装autotools依赖:
apt install autoconf automake libtool - 执行
fakeroot dh_clean清理残留后,在源码根目录执行autoreconf -fiv重新生成支持新参数的configure脚本。 - 重新执行构建命令即可。该方法可能触发其他autotools版本兼容问题,优先选择前两种方法。
- 先安装autotools依赖:
前置注意事项
正式构建前先执行apt build-dep vim安装全量Vim构建依赖,避免修复参数问题后触发缺依赖类报错。
内容的提问来源于stack exchange,提问作者F.Hand
相关产品推荐
相关产品推荐

