RPMを調達するのは、rpm2cpioとcpioを使用してRPMを解凍するのとどう違いますか?

RPMを調達するのは、rpm2cpioとcpioを使用してRPMを解凍するのとどう違いますか?

私は「ソースrpm」とも呼ばれる.srpm Red Hat Package Managerパッケージの使用を理解したいと思います。

これまで私が知っている限り、.srpmはソースコードを提供し、開発中に一般的に使用されるという点で標準の.rpmとは異なります。実行してもrpm2cpio ./myrpm-1.1-1.x86_64.rpm | cpio -idmvまだソースコードを見ることができるので、これがなぜ便利なのか混乱しています。

私が理解したのは、標準のRPMでさえ、ソースコードを含む.tar.gz/bzファイルをダウンロードしてビルドします。ソースRPMがどのように異なるのか、なぜ使用するのかを明確に説明できますか?

ベストアンサー1

ソースコードをダウンロードできるRPMについては聞いたことがありません。たぶんそんな人もいるかもしれませんが、そんな人は珍しいと言いたいです。 srpmパッケージには、rpmパッケージをビルドするためのソースコードとガイドラインが含まれています。 rpmパッケージには実行可能なコンパイル済みコードがあり、ソースコードは含まれていません。しかし例外があります。例:Perl、Python、PHPなどは、CやC ++プログラムなどのバイナリにコンパイルされません。これらのrpmパッケージには、JIT(Just-In-Time)として解釈またはコンパイルされるソースファイルが含まれています。したがって、コンパイルされたバイナリはなく、代わりにソースコードが直接使用されます。

rpmパッケージをビルドする場合は、通常srpmをダウンロードしてインストールします。次に、仕様ファイルがインストールされているrpmbuild / SPECSディレクトリを入力します。次に、次を実行します。

rpmbuild -bb <package>.spec

これでRPMが構築されます。 1つのsrpm仕様が複数のrpmパッケージを生成するのは非常に一般的です。

<package>.rpm
<package>-devel.rpm
...

ビルドされたrpmパッケージはrpmbuild / RPMSに保存されます。その後、実行可能な物理プログラムをインストールするrpmパッケージをインストールできます。

rpmパッケージからファイルを抽出することは、rpmパッケージをインストールするのとは大きく異なります。解凍すると、パッケージファイルが表示されます。抽出されたパッケージファイルからプログラムを実行できますが、実行されない可能性があります。 rpmパッケージをインストールするとは、rpmがプログラムに必要なすべてのライブラリもインストールされることを意味します。インストールの前後に追加のタスクを実行する必要がある場合は、rpmパッケージのスクリプトがそのタスクが実行されることを保証します。一部のプログラムではインストール中に作成する必要があるデータベースが必要な場合や、他のプログラムではライブラリキャッシュを更新するためにldconfigを再実行する必要があり、他のプログラムではビルドマニュアルが必要になる場合があります。 rpmからファイルを抽出すると、これらのスクリプトは実行されません。

おすすめ記事