cygwin中rpm和rpmbuild的问题

时间:2014-01-06 23:26:36

标签: maven ant cygwin rpm rpmbuild

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

但是,当我尝试从命令行运行任一程序时,无论我给出什么输入,我都没有得到任何响应:

$ rpm -qa
$
$ rpmbuild
$

当我尝试使用调用rpm的build.xml文件运行ant时,我得到类似这样的内容:

$ 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>

关于我可能遗失的任何想法?

1 个答案:

答案 0 :(得分:0)

这不是ANT问题,rpm任务只调用底层OS rpmbuild命令。

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

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