debian mkdeb打包一个普通的错误导致的诡异现象

116 阅读1分钟

在执行dpkg打包前的一个提示:

/../../linux/misc/myPkg.tmp.mkdeb
cp: cannot stat 'misc/mkdeb2': No such file or directory
make: *** No rule to make target 'install'.  Stop.
find: ‘misc/debsrc/’: No such file or directory
/../../linux/misc/myPkg.tmp.mkdeb: line 20: [: xxxxx: integer expression expected
sed: can't read misc/debsrc/DEBIAN/control: No such file or directory
sed: can't read misc/debsrc/DEBIAN/preinst: No such file or directory
sed: can't read misc/debsrc/DEBIAN/preinst: No such file or directory
sed: can't read misc/debsrc/DEBIAN/preinst: No such file or directory
sed: can't read misc/debsrc/DEBIAN/control: No such file or directory
sed: can't read misc/debsrc/DEBIAN/control: No such file or directory
sed: can't read misc/debsrc/DEBIAN/postinst: No such file or directory
sed: can't read misc/debsrc/DEBIAN/postrm: No such file or directory
sed: can't read misc/debsrc/DEBIAN/postinst: No such file or directory
/../../linux/misc/myPkg.tmp.mkdeb: line 44: cd: misc/debsrc: No such file or directory
dpkg-deb: error: failed to open package info file './DEBIAN/control' for reading: No such file or directory
/../../linux/misc/myPkg.tmp.mkdeb: line 45: cd: OLDPWD not set

一直觉得上面这个很诡异,一度怀疑是后面的sh *.mkdeb执行产生的错误比它上面的命令输出要先输出,难道shell也有输出缓冲,但是顺序不可能调倒的啊。

最终通过屏蔽sh *.mkdeb 以及删除myPkg.tmp.mkdeb尝试发现了问题:

 if "$debShell" != "" ]; then

     do others.

fi

这个$debShell的左边缺少了一个中括号,在shell里面当作执行这个sh脚本了。

总结:不要怀疑计算机的诡异输出,必有原因。