如何使用源而不是tarball来构建rpm

时间:2012-01-09 11:30:41

标签: rpm rpmbuild

我有这个构建过程,为一组Linux发行版创建rpms。

这个创作花了很多时间,为此我正在优化它。我研究了rpmbuild并意识到rpmbuild需要一个tarball并将其解压缩以启动构建过程。

有一种方法可以避免使用tarball吗?因为我已经开始使用源代码的过程,然后我在tarball中压缩它,这似乎无用,因为rpmbuild适用于源代码,而不是tarball

1 个答案:

答案 0 :(得分:5)

解决这个问题的三种基本方法:

  1. 使用--short-circuit切换到rpmbuild直接跳到构建步骤。
  2. 将来源中的每个文件列为spec文件中的SourceXX:,并将所有这些文件放在rpmbuild/SOURCES/目录中
  3. 用一些智慧包裹%setup
  4. 选项1允许您每次都必须提取tarball,这是开发的理想选择。选项2绕过了开始使用tarball的概念,但是当你有大量的文件时会变得很麻烦。选项3是当包的常规构建发生时,它是一个大的源文件,例如linux内核。 EL6内核.spec文件执行此操作:

    if [ ! -d kernel-%{kversion}/vanilla-%{kversion}/ ]; then
        %setup -q -n kernel-%{kversion} -c
        mv linux-2.6.32 vanilla-%{kversion};
    else
        cd kernel-%{kversion}/;
    fi
    
    cp -rl vanilla-%{kversion} linux-%{KVERREL}
    
    cd linux-%{KVERREL}
    

    基本上,提取内核源代码并将其命名为其他内容。在下次构建时,检查一下。如果它在那里,不要提取源,只需复制。