2014-01-06 34 views
1

我刚刚第一次安装了cygwin,所以我很新。在安装过程中,我包含了rpm和rpmbuild,因为我需要这些来运行我的ant脚本。cygwin中rpm和rpmbuild的问题

然而,当我尝试在命令行中运行任何程序,我没有得到任何回应,不管输入什么我给它:

$ rpm -qa 
$ 
$ rpmbuild 
$ 

当我尝试运行蚂蚁与一个build.xml文件呼叫转,我得到的是这样的:

$ ant rpm 
Buildfile: [mypath]/build.xml 

rpm-prep: 
... 
[standard prep output] 
... 
rpm: 
    [copy] Copying 4116 files to [mypath]\.rpm\SOURCES\DataTransformation_UI-1.4.0 
    [copy] Copied 274 empty directories to 16 empty directories under [mypath]\.rpm\SOURCES\DataTransformation_UI-1.4.0 
     [tar] Building tar: [mypath]\.rpm\SOURCES\DataTransformation_UI-1.4.0.tar.gz 
    [copy] Copying 1 file to [mypath]\.rpm\SPECS 
     [rpm] Building the RPM based on the DataTransformation_UI.spec file 
    [rpm] '[cygwinpath]\cygwin\bin\rpmbuild.exe' failed with exit code -1073741819 

BUILD SUCCESSFUL 
Total time: 1 minute 30 seconds 

这里,[mypath中]是我的build.xml文件驻留在本地路径,[cygwinpath]是我安装了Cygwin。

如果你有兴趣,这里是build.xml文件。看起来相当标准,虽然我也没有使用任何太多:

<project name="DataTransformation_UI" basedir="." default="main"> 
     <property file="${basedir}/build.properties" /> 

    <property name="VERSION"  value="3.0.0"/> 
    <!-- ============================ RPM Prep Target ======================== --> 
    <target name="rpm-prep" description="Set up the local RPM TopDir build environment"> 
    <delete includeEmptyDirs="true" failonerror="false"> 
     <fileset dir="${rpm.TopDir}/"/> 
    </delete> 
    <mkdir dir="${rpm.TopDir}/"/> 
    <mkdir dir="${rpm.TopDir}/BUILD"/> 
    <mkdir dir="${rpm.TopDir}/RPMS"/> 
    <mkdir dir="${rpm.TopDir}/SOURCES"/> 
    <mkdir dir="${rpm.TopDir}/SPECS"/> 
    <mkdir dir="${rpm.TopDir}/SRPMS"/> 
    </target> 

    <!-- ========================= RPM Build Target ======================== --> 
    <target name="rpm" depends="rpm-prep" description="Creates Tarball and Builds rpm."> 
    <copy todir="${rpm.TopDir}/SOURCES/${rpm.Name}-${rpm.Version}"> 
     <fileset dir="./" casesensitive="no"> 
     <include name="*.*"/> 
     <include name="**/*"/> 
     </fileset> 
    </copy> 
    <tar destfile="${rpm.TopDir}/SOURCES/${rpm.Name}-${rpm.Version}.tar.gz" 
            longfile="gnu" compression="gzip"> 
      <tarfileset dir="${rpm.TopDir}/SOURCES/${rpm.Name}-${rpm.Version}" prefix="${rpm.Name}-${rpm.Version}"> 
     <include name="**/**"/> 
     <include name="*.*"/> 
     </tarfileset> 
    </tar> 
    <delete includeEmptyDirs="true" failonerror="false"> 
     <fileset dir="${rpm.TopDir}/SOURCES/${rpm.Name}-${rpm.Version}"/> 
    </delete> 
    <copy file="${basedir}/${rpm.Name}.spec" todir="${rpm.TopDir}/SPECS" /> 
    <rpm specFile="${rpm.Name}.spec" topDir="${rpm.TopDir}" command="-ba --define 'rpmversion ${rpm.Version}' --define 'rpmrelease ${rpm.Release}${rpm.AutoRelease}' 
     --define 'webwarname ${rpm.Web.Warname}' --define 'rpmname ${rpm.Name}'"/> 
    </target> 
</project> 

任何想法可能会失踪?

回答

0

这不是一个ANT问题,rpm任务只是调用底层操作系统rpmbuild命令。

这看起来像是由rpmbuild命令生成的内部错误。谷歌搜索发现以下链接,其中有评论报告相同的问题。

http://crlog.info/2012/09/11/building-rpms-on-windows/

+0

它看起来像如果我试图通过Maven来使用的rpmbuild这会工作。但是,如果仔细观察ant输出,ant似乎直接引用rpmbuild.exe,而不是rpmbuild或rpmbuild.bat。这似乎与Maven协同工作,因为Maven只是叫rpmbuild,尽管我不能确定这一点。 – jchess