正しく実行できるようにすることは可能ですが、非常に困難です。どうしても必要な場合は、新しいRPM .spec
ファイルを作成し、「偽の」ソースRPM(SRPM)ファイルを作成して、を使用して結果のRPMファイルを作成できますrpmbuild --rebuild
。
代わりに、実際のRPMを引き続き検索します。あなたはあなたの質問でどちらを述べていないが、それを検索する方法を知っていればインターネットで何かを見つけることができるのは私の経験でした。10年以上使用されていないRed Hatディストリビューション用のRPMの古いバージョンを見つけたので、このRPMの残骸がどこにもないなんて信じられません。
また、RPMに含まれているアプリケーションのソースに戻って、それを使用してRPMを再構築することもできます。多くの場合、ソースアプリには.spec
、RPMの再構築に使用される必要なファイルが含まれています。
最後に.spec
、Red Hatベースのディストリビューション向けのKojiなどのビルドサービスからソースとファイルを取得できます。SuSEも同様のビルドサービスを維持しているため、これらを検索して古いビルドアーティファクトを取得できます。
バイナリをそのままに
この方法を使用して、実際の実行可能ファイルを1つのシステムから持ち上げて、別のシステムに展開するためにtarにできます。
マシンA
$ rpm -ql <packageNameHere> | xargs tar -zcvf /tmp/program.tgz
マシンB
$ tar -zxvf /path/to/your/program.tgz
RPMのSLESのバージョン
:このスレッド内のポストの一つによると、再:RPMのフロンインストールパッケージを作成する方法 rpm
SLES上のスイッチを持つように主張されます--repackage
。これはRed Hatバージョン(FedoraまたはCentOS)には存在しません。しかし、投稿によると、次のように使用できます:
$ rpm -e --repackage <somepackage>
それが完了すると、RPMにアクセスできるようになります。
/var/spool/repackage
rpmerizorの使用
Rpmerizorは、ソースファイルを対応するRPMに再パッケージ化する、インストール可能なサードパーティのツール/スクリプトです。このスクリプトの使用法は、rpmerizorのmanページというタイトルのここからアクセスできます。
抜粋
Rpmerizorは、インストールされたファイルからRPMパッケージを作成できるようにするスクリプトです。コマンドラインでファイルを指定し、rpmメタデータ(パッケージ名、バージョン...)を入力するためのいくつかのインタラクティブな質問に答えるだけです。メタデータのコマンドラインオプションを使用して、バッチモードで使用することもできます。
rpmrebuildの使用
ビルドツールと混同しないようにrpmbuild
、rpmrebuild
あなたが既にインストールされている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
参考文献