web-dev-qa-db-ja.com

RPMファイルを解凍して再パックする

RPMファイルがあります。そのRPMにいくつかの変更を加え、再パックしてテストする必要があります。誰か助けてもらえますか?

15
Monojeet

ソースがないRPMを変更する最良の方法は、次の手順に従うことです。

  1. rpm2cpioコマンドを使用してrpmをディレクトリに解凍します
  2. そのサブディレクトリ内で必要な変更を加えます
  3. 「ダミー」スペックファイルを作成してビルドします。

そのダミースペックファイルは次のようになります。

Name: blah
Version: 1.0
Release: 1
Summary: blah
License: blah
Distribution: blah
Group: blah
Packager: me
BuildRoot: /path/to/dir/with/mods

%description
blah

%files
/path/to/dir/with/mods/*

ここにあるすべての「何とか」を実際の値に置き換えます(値を取得するにはrpm -qpi rpm fileを使用します)。 BuildRootを、変更したrpmをラップ解除したディレクトリに置き換えます。次に、rpmbuild -bb dummy.specを実行します。

Prep/setup/build/installステップが定義されていないため、buildrootにあるものを取得してRPMを作成します。

Rpmパッケージにスクリプトファイルがある場合は、それらもこのダミースペックファイルに入れる必要があります。パッケージにスクリプトが含まれているかどうかを確認するには、rpm -qp --scripts rpm fileを実行します。依存関係、前提条件などについても同じことが言えます。

私が見逃している他の詳細があるかもしれませんが、これはあなたが始めるのに十分なはずです。

UPDATE:その価値については、 http://rpmrebuild.sourceforge.net/ もあります。

14
Corey Henderson

それがパッチという概念だと思います。これを使用して最初のsrpmにパッチを適用し始めました link 。ただし、基本的な考え方は、srpmを取得し、srpmをインストールし、そのビルド領域ディレクトリ内にパッチを作成し、スペックファイルでパッチファイル%patch0-p1を指定することです。次に、rpmビルドを実行します。ハッピーパッチ!

0
Jasonw