2012-05-14 17 views
5
  1. 私はRPMファイルからファイルを抽出できますが、どのようにして "再構築"するのですか?たとえばcpio2rpm?
  2. 次のコマンドを使用してRPMファイルを抽出しました。 rpm2cpio theFileName.rpm | cpio -idmv
  3. * .php、* .html、.jsなどのいくつかのWebアプリケーションファイルを変更する必要があります。これらのファイルには、ソースの再コンパイルは必要ありません。ですから、rpmを再構築することなく、これらのファイルを変更して置き換えたり、変更したりしたいと思います。以来、私はRedhat LinuxやSUSEなどの複数のプラットフォームや、32ビットや64ビットOSなどの複数のアーキテクチャでこれを行う必要があります。
  4. 私はこれらの変更をシステムでのみ行い、rpmを再構築することなく、(i386,64のような)ターゲットシステムアーキテクチャの依存関係はないと考えています。
  5. 私は、rpmbuild -rebuild the.src.rpmコマンドのように見えていません。私はソースを持っていません。
  6. 私はソースとプラットフォームやアーキテクチャに依存せず、できるだけスペックファイルを使用しないでこれをやりたいと思います。RPMファイルを "repackage"する方法(RPMをインストールせずにcpio2rpmなど)

    どなたでも、任意の解決策や無料ツールをご提案ください。

    私のスレッドを読んで返信する時間を費やしてくれた皆さん、ありがとうございます。

答えて

0

RPMファイルには、基本的にすべてをパックすることができます。あなたが持っているものを「ソース」として扱い、コンパイルされたバイナリが通常通りに行くデータを入れるSPECファイルを書きます。

RPMに関して、私は「ソース」「私の持っているもの」と「バイナリ」を「実行する必要がある」と考えます。あまり正確な用語ではありませんが、RPMの使用に役立ちます。

[...] 
%prep 
# Here you either have nothing to do or you already unpack the cpio and possibly modify it. 

# %build can be omitted 

%install 
[ "${buildroot}" != "/" ] && [ -d ${buildroot} ] && rm -rf ${buildroot}; 
# Here you can either unpack the cpio or copy the data unpacked in %prep. 
# Be careful to put it into %{buildroot} or $RPM_BUILD_ROOT. 
1

あなたはrpmrebuildを使用して(変更されたファイルを含む)がインストールRPMを再パッケージ化することができます

あなたのspecファイルには、パラメータなどに関するしかし、コードの一部が異なっているものを、他のspecファイルのように見えます。 http://rpmrebuild.sourceforge.net/

明らかに、あなたのバイナリがあれば、プラットフォーム/アーキテクチャに依存せずに、あなたが望んでいるすべてのOSフレーバで動作する必要があります。問題。

12

rpmrebuildを使用すると、実際のrpmファイルを変更できます(インストールする必要はありません)。

ほとんどの例では、特定の方法で既知のファイルを変更するための複雑なインライン編集コマンドを使用していますが、通常のエディタを使用することができます。私はこれを使って、ソースを持っていないrpmスクリプトのシェルスクリプトを修正しました。

rpmrebuild -ep theFileName.rpm 

このようにすると、RPMのスペックファイルを持つエディタが表示されます。ファイル名は~/.tmp/rpmrebuild.12839/work/spec.2のようになります。この例では、~/.tmp/rpmrebuild.12839/workを見ると、RPMの作成に使用されたすべてのファイルが見つかります(私の場合、ファイルはそのディレクトリ内のroot/usr/sbinにあります)。したがって、別のウィンドウに移動し、そのディレクトリに移動して、変更が必要なファイルを編集します。

ファイルの編集が完了したら、スペックファイルを編集ウィンドウに戻し、そのファイルに必要な変更を加えます(ファイルを追加または削除していないため変更がありません)。ファイルを開き、「続行しますか?」という質問に「y」と答えます。次に、新しいRPMファイルを作成し、どこに置いたかを教えてくれます(私の場合、〜/ rpmbuild/RPMS/x86_64 /に)

+0

素晴らしい!いくつかのスクリプトでそれを自動化する方法はありますか? –

関連する問題