当runnig rpmbuild带命令
时rpmbuild -v -ba --sign --clean ~/rpmbuild/SPECS/myspecfile.spec
我得到了这个输出:
Enter pass phrase:
Pass phrase is good.
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.6akVI6
+ umask 022
+ cd /home/rpmbuilder/rpmbuild/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ $'\r'
**: command not foundwXWF: line 30:**
error: Bad exit status from /var/tmp/rpm-tmp.6akVI6 (%prep)
所以我编辑了临时文件 /var/tmp/rpm-tmp.6akVI6 ,搜索了第30行,并在那里找到了一个字符: 的 ^ M
如果我执行临时文件,我会得到相同的错误,但它会执行30之后的所有行,这与在该行上断开并且不会继续执行的rpmbuild不同:
sudo sh /var/tmp/rpm-tmp.6akVI6
+ umask 022
+ cd /home/rpmbuilder/rpmbuild/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ $'\r'
**: command not foundkVI6: line 30:**
+ cd /home/rpmbuilder/rpmbuild/BUILD
+ rm -rf mysource-1.0.0
+ /usr/bin/gzip -dc /home/rpmbuilder/rpmbuild/SOURCES/mysource-1.0.0.tar.gz
+ /bin/tar -xvvf -
drwxrwxrwx 0/0 0 2014-11-04 17:10 mysource-1.0.0/
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd mysource-1.0.0
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ exit 0
如果我编辑文件并删除第30行( ^ M ),我可以运行脚本而不会出错:
sudo sh /var/tmp/rpm-tmp.6akVI6
+ umask 022
+ cd /home/rpmbuilder/rpmbuild/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ cd /home/rpmbuilder/rpmbuild/BUILD
+ rm -rf mysource-1.0.0
+ /usr/bin/gzip -dc /home/rpmbuilder/rpmbuild/SOURCES/mysource-1.0.0.tar.gz
+ /bin/tar -xvvf -
drwxrwxrwx 0/0 0 2014-11-04 17:10 mysource-1.0.0/
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd mysource-1.0.0
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ exit 0
这表明由于第30行的单个字符,rpmbuild正在停止。
任何提示为什么会发生这种情况?
答案 0 :(得分:1)
在here中找到答案 看来文件保存在windows上,得到那个字符,它是DOS行的结尾。 我在Windows上创建了我的spec文件,因此我编辑了它并执行了建议的命令:
:set fileformat=unix
并重新运行rpmbuild并且它有效。