2016-03-31 6 views
2

私はモックを使ってRPMを構築しています。それは2段階のプロセスです。src rpmsが異なる理由

mkdir buildsrpm 
mock buildsrpm --spec myprogram-1.spec --sources myprogram-1.tar.gz --resultdir buildsrpm 
mkdir rebuild 
mock rebuild buildsrpm/myprogram-1.src.rpm --resultdir rebuild 

最初の手順は、ソースrpmを構築することです。 2番目のステップはrpmを構築することです。

私が使用するプロセスでは、結果を格納するディレクトリを作成します。

実行時に気付いた diff -qrs buildsrpm/myprogram-1.src.rpm rebuild/myprogram-1.src.rpm結果は異なっています。

だから私の質問は以下のとおりです。

  1. なぜmock rebuildは、ソースRPMを生成するのでしょうか?明らかに、再構築の入力としてソースRPMを提供したので、私は1つを必要としません。
  2. なぜ異なるのですか?
  3. リポジトリを作成している場合、他のリポジトリよりも優れていますか?
+2

SRPM間で実際にdiffが何を報告していますか?何か意味のあるものやタイムスタンプ/ etc ...?両方の 'rpm -qp --dump'の出力を比較しますか? –

+1

現時点では確認できませんが、通常のRPMには、作成時のタイムスタンプ情報が記載されています。 SRPMも同様にしますか? –

答えて

1

異なるchrootで実行してください。例えば:

mock -r fedora-23-x86_64 foo-1.0.16-1.fc22.src.rpm 

そして、あなたはそれが(バイナリパッケージの横)foo-1.0.16-1.fc23.src.rpmを作成することがわかります。 disttagの違いを参照してください。

結果のSRPMは、そのchrootからrpmbuildコマンドを使用してchrootの内部に構築されます。これにより違いが生じる場合もあります(これらのsrc.rpmにはrpm -qpiを試してください)。 Fedora 22と23の間には違いはありませんが、 'Build Date'は違います(したがって、常に異なるバイナリです)。しかし、Epel-5とFedora-23は、使用されるチェックサムにも違いがあります(MD5対SHA)。

Mock's sign pluginを使用すると、結果のSRPMに署名することもできます。

要約すると、再構築されたSRPMを使用して安全な側にとどまるべきです。しかし、元のSRPMは通常同様に動作します。

+0

驚くばかり!それを説明してくれてありがとう。 – emory

関連する問題