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を再構築することもできます。通常、ソースアプリケーションには.spec
RPMを再構築するために必要なファイルが含まれています。
.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を生成する方法 rpm
SLESにはこのスイッチがあるそうです--repackage
。この機能はRed Hatエディション(FedoraまたはCentOS)にはありません。しかし、投稿によると、次のように使用できます。
$ rpm -e --repackage <somepackage>
完了したら、ここからRPMにアクセスできます。
/var/spool/repackage
rpmerizorの使用
回転速度ソースファイルを適切なRPMに再パッケージするサードパーティのツール/スクリプトをインストールできます。スクリプトの使い方はここで確認できます。rpmerizorのマニュアルページ。
抜粋
Rpmerizorは、インストールされたファイルからRPMパッケージを生成できるスクリプトです。コマンドラインでファイルを指定し、いくつかのインタラクティブな質問に答えると、rpmメタデータ(パッケージ名、バージョン...)が入力されます。メタデータのコマンドラインオプションを使用してバッチモードで使用することもできます。
rpmを使用した再構築
ビルドツールと混同しないでください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