インストールされたファイルからRPMパッケージをビルドするには?

インストールされたファイルからRPMパッケージをビルドするには?

SLESのバージョン/アーキテクチャが同じ2台のマシンがあります。

マシン#Aに「foo」ソフトウェアがインストールされており、これがrpm -qa

「foo」ソフトウェアはマシン#Bにインストールする必要があります。

foo.rpmこの情報は、どのソース(インターネットなど)からも取得できません。

質問

パッケージはfoo.rpmマシン#Aにすでにインストールされているので、インストールされているファイルにfoo.rpm基づいてそのパッケージにファイルをビルドできますか?

rpmにも事前/事後スクリプトがあると思います。だからfoo.rpm依存関係はありますか?)をインストールできます。

ベストアンサー1

これを正しく行うことは可能ですが、非常に難しいです。紛失した場合は、新しいRPM.specファイルを作成し、「偽の」ソースRPM(SRPM)ファイルを作成して使用できますrpmbuild --rebuild

引き続き実際のRPMを探してみましょう。質問に具体的な内容を記載していませんでしたが、私の経験上、検索方法を知っていれば、インターネット上で何でも見つけることができます。私はRed Hatディストリビューション用のRPMの以前のバージョンが10年以上使用されていないことを発見したので、このRPMの残りの部分がどこにもないとは信じられません。

また、RPMに含まれているアプリケーションのソースコードに戻り、それを使用してRPMを再構築することもできます。通常、ソースアプリケーションには.specRPMを再構築するために必要なファイルが含まれています。

.spec最後に、Red Hatベースのデプロイ用のKojiなどのビルドサービスからソースコードとファイルを取得できます。 SuSEは同様のビルドサービスも維持するため、これらのサービスから以前のビルド成果物を検索できます。

バイナリをそのままインポート

この方法では、あるシステムから実際の実行可能ファイルを抽出し、別のシステムに展開するためにパッケージ化できます。

マシンA

$ rpm -ql <packageNameHere> | xargs tar -zcvf /tmp/program.tgz

マシンB

$ tar -zxvf /path/to/your/program.tgz

SLESのRPMバージョン

このスレッドの投稿によると:Re:インストールされたパッケージからRPMを生成する方法 rpmSLESにはこのスイッチがあるそうです--repackage。この機能はRed Hatエディション(FedoraまたはCentOS)にはありません。しかし、投稿によると、次のように使用できます。

$ rpm -e --repackage <somepackage>

完了したら、ここからRPMにアクセスできます。

/var/spool/repackage

rpmerizorの使用

回転速度ソースファイルを適切なRPMに再パッケージするサードパーティのツール/スクリプトをインストールできます。スクリプトの使い方はここで確認できます。rpmerizorのマニュアルページ

抜粋

Rpmerizorは、インストールされたファイルからRPMパッケージを生成できるスクリプトです。コマンドラインでファイルを指定し、いくつかのインタラクティブな質問に答えると、rpmメタデータ(パッケージ名、バージョン...)が入力されます。メタデータのコマンドラインオプションを使用してバッチモードで使用することもできます。

rpmを使用した再構築

ビルドツールと混同しないでくださいrpmbuildrpmrebuildインストールされたRPMを再パッケージするために使用できる別のサードパーティのスクリプトです。

抜粋

rpmrebuild は、基本的な使用のためにインストールされたパッケージから RPM ファイルをビルドするツールです。 rpmrebuildを使用するには、rpmビルドに関する知識は必要ありません。 (Debianではdpkg-repackと同じです)。

はい

openssh-serverを再パッケージしたいとしましょう。

$ rpm -aq | grep openssh-server
openssh-server-6.2p2-8.fc19.x86_64

今パッケージしてください:

$ rpmrebuild openssh-server-6.2p2-8.fc19.x86_64
/usr/lib/rpmrebuild/rpmrebuild.sh: WARNING: some files have been modified:
..?......  c /etc/ssh/sshd_config
..?......  c /etc/sysconfig/sshd
Do you want to continue ? (y/N) y
Do you want to change release number ? (y/N) n
result: /root/rpmbuild/RPMS/x86_64/openssh-server-6.2p2-8.fc19.x86_64.rpm

引用する

おすすめ記事