2

Linuxディストリビューションのセット用のrpmを作成するこのビルドプロセスがあります。

この作成には非常に時間がかかるため、最適化しています。rpmbuild を調べたところ、rpmbuild は tarball を取得して展開し、ビルド プロセスを開始することがわかりました。

tarball の使用を避ける方法はありますか?? すでにソースからプロセスを開始しているため、それを tarball に圧縮しますが、rpmbuild は tarball ではなくソースで動作するため、これは役に立たないようです。

4

1 に答える 1

5

これを行うための3つの基本的な方法:

  1. --short-circuitスイッチを使用しrpmbuildて、ビルドステップに直接スキップします。
  2. SourceXX:ソース内のすべてのファイルをスペックファイルとしてリストし、それらすべてのファイルを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}

基本的に、カーネルソースを抽出し、別の名前を付けます。次のビルド時に、それを確認します。そこにある場合は、ソースを抽出するのではなく、コピーを作成するだけです。

于 2012-01-09T16:14:45.257 に答える