9
  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 –rebuildthe.src.rpmのようには見えません。バイナリの.RPMファイル(ソース.rpmではない)を再構築する必要があります
  6. ソースやプラットフォーム、アーキテクチャに依存せず、可能であればスペックファイルを使用せずにこれを実行したいと思います。

    仲間の皆さん、解決策や無料のツールを提案していただけませんか。

    私のスレッドを読んで返信するために時間を費やすすべての人に感謝します。

4

3 に答える 3

17

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

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

rpmrebuild -ep theFileName.rpm

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

ファイルの編集が終了したら、spec ファイルを含む編集ウィンドウに戻り、そのファイルに必要な変更を加え (ファイルの追加や削除を行っていないので変更はありませんでした)、ファイルを保存します。 「続行しますか」という質問に対して「y」と答えます。次に、新しい RPM ファイルを作成し、それを配置した場所 (私の場合は ~/rpmbuild/RPMS/x86_64/) を教えてくれます。

于 2014-05-22T17:00:44.150 に答える
1

rpmrebuild を使用して、インストール済みの RPM (変更されたファイルを含む) を再パッケージ化できます。http://rpmrebuild.sourceforge.net/

明らかに、バイナリ (存在する場合) は、希望するすべての OS フレーバーで動作するようにプラットフォーム/アーキテクチャに依存しない必要がありますが、それらが単なる Web ファイルである場合は問題にならないように思えます。

于 2012-05-24T22:00:48.290 に答える
0

Principially you can pack everything you want into a RPM file. Just treat what you have as "source" and write a SPEC file which puts the data where the compiled binaries would normally go.

Concerning RPM, I consider "source" "what I have" and "binary" "what I need to run". Not very exact terminology, but it helps working with RPMs.

Your spec file looks like any other spec file, what concerns the parameters etc. But the code part is different:

[...]
%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.
于 2012-05-14T10:11:13.603 に答える