2014-10-29 155 views
0

我正尝试在Cent OS 6.5上创建一个二进制RPM文件,但在准备阶段出现错误。我的规格文件在准备一节以下命令:RPM构建依赖关系错误

%prep 
%setup -q 
wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm 
rpm -ivh epel-release-6-8.noarch.rpm 
yum -y install python-pip 
pip install ws4py request 

但是当我运行:

rpmbuild -v -bb --clean SPECS/ttsdk.spec 

我得到以下输出:

Preparing...    ########################################### [100%] 
    package epel-release-6-8.noarch is already installed 
error: Bad exit status from /var/tmp/rpm-tmp.Kkbk09 (%prep) 


RPM build errors: 
    Bad exit status from /var/tmp/rpm-tmp.Kkbk09 (%prep 

现在看来似乎是失败因为这个软件包已经安装好了,这不会是我期望的行为。我可以俯视一下吗?也许一种方法,使已经安装的rpm命令不会失败,或让spec文件忽略不良的退出代码?如果需要完整的日志或更多的规格文件,请让我知道。

回答

1

尝试使用-U而不是-i

请尝试使用yum install ...而不是rpm

如果一切都失败,则将|| :添加到该行的末尾以始终使其返回true。

所有人都说这对于我在%prep期间要做的规范文件来说似乎是件坏事(并且需要以通常不鼓励的方式构建根)。

+0

伊丹,谢谢。前两个建议不起作用(尽管我切换到yum安装而不是rpm),但最后一个建议无效。我觉得这是一个解决方法?对我来说,已经安装的软件包会导致失败,这似乎很奇怪。另外,关于以root身份进行构建,这将成为一种RPM,旨在将其部署到应该进行全新安装的虚拟机上,所以在遵守警告的同时,我不担心会将任何东西搞乱! – 2014-10-30 12:42:46

+0

@MarkS根建设问题不是部署问题。这是一个构建问题。你相信spec文件和构建过程不会做他们不应该到你的构建系统的事情。比如尝试安装软件包等等。 =)'yum install $ pkg.rpm'似乎返回0,它说在CentOS 5上我没有什么可做的,但是'rpm -U'似乎失败了(我同意这有点奇怪)。你可以尝试'--replacepkgs'到'rpm',但是那样做更多,那么你真的需要这种情况。在尝试安装之前,您也可以测试该软件包。 – 2014-10-30 22:51:08