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

mau*_*ues 2 rpm rpmbuild

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

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

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

Cor*_*son 5

三种基本方法:

  1. 使用--short-circuit开关rpmbuild直接跳到构建步骤.
  2. 将源中的每个文件列为SourceXX:spec文件中的所有文件,并将所有这些文件放在rpmbuild/SOURCES/目录中
  3. %setup用一些智慧包裹宏

选项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}
Run Code Online (Sandbox Code Playgroud)

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