dpkg-buildpackage unrecognition option: '--runstatementir=/run'



我想从源代码为debian构建vim包,当运行命令dpkg-buildpackage -rfakeroot

时,我得到了这个错误
dh_clean
dpkg-source -b .
dpkg-source: info: using source format '3.0 (quilt)'
dpkg-source: info: building vim using existing ./vim_8.2.5106.orig.tar.gz
dpkg-source: info: using patch list from debian/patches/series
dpkg-source: warning: newly created empty file 'src/auto/config.h' will not be represented in diff
dpkg-source: info: building vim in vim_8.2.5106-1.debian.tar.xz
dpkg-source: info: building vim in vim_8.2.5106-1.dsc
debian/rules build
dh build
dh_update_autotools_config
dh_autoreconf
dh_auto_configure
./configure --build=i686-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=${prefix}/lib/i386-linux-gnu --libexecdir=${prefix}/lib/i386-linux-gnu --runstatedir=/run --disable-maintainer-mode --disable-dependency-tracking
configure: error: unrecognized option: `--runstatedir=/run'
Try `auto/configure --help' for more information
dh_auto_configure: ./configure --build=i686-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=${prefix}/lib/i386-linux-gnu --libexecdir=${prefix}/lib/i386-linux-gnu --runstatedir=/run --disable-maintainer-mode --disable-dependency-tracking returned exit code 1
make: *** [debian/rules:18: build] Error 2
dpkg-buildpackage: error: debian/rules build subprocess returned exit status 2

如果我理解正确,问题是在一个标志`--runstatedir=/run'是无法识别的。我该如何解决这个问题?

在继续之前,您是否正确安装了所有构建依赖项?

看看:https://www.debian.org/doc/manuals/maint-guide/dreq.en.html#control,特别是在Build-Depends部分。

同时,您还可以启动命令dpkg-depcheck -d ./configure来查找一些丢失的包。

Vim包是定期更新的,最后一次提交是在2w以前,所以我很惊讶它不能编译。

请看:https://salsa.debian.org/vim-team/vim

我想你是在将vim从一个新发行版的debian源代码后移植到一个旧的发行版。

则是由debhelper->dh_auto_configure添加该参数。dh_auto_configure使用此参数运行<source_dir>/configure<source_dir>/configure是由autoconf生成的,在这种情况下,可能是debhelper->autoreconf,调用autoreconf->autoconf生成<source_dir>/configure。如果autoconf的版本不够最新,则生成的<source_dir>/configure缺乏对--runstatedir=/run的支持,因此您会看到此日志:

dh_autoreconf
dh_auto_configure
./configure --build=i686-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-silent-rules --libdir=${prefix}/lib/i386-linux-gnu --libexecdir=${prefix}/lib/i386-linux-gnu --runstatedir=/run --disable-maintainer-mode --disable-dependency-tracking
configure: error: unrecognized option: `--runstatedir=/run'

要解决这个问题,你可以升级你的autoconf包版本,但显然这不是你总是想要做的(你可能不得不反向移植很多依赖)。因此,不要让dh_auto_configure传递这个参数:
您可以在/usr/share/perl5/Debian/Debhelper/Buildsystem/autoconf.pm:

中看到这段perl代码:
push @opts, "--runstatedir=/run" if not compat(10);

所以只需修改vim中提取的debian源代码中的debian/compat,将其值降低为10,然后重新构建,现在dh_auto_configure在调用<source_dir>/configure时不会再尝试传递--runstatedir=/run

相关内容

  • 没有找到相关文章

最新更新