Yumキャッシュを使用せずにRPMをインストールした後、それを検索または再構築できますか?

Yumキャッシュを使用せずにRPMをインストールした後、それを検索または再構築できますか?

当社は、様々なクライアントのためにいくつかのRHEL 7システムを管理しています。具体的には、ある顧客は、システムにデフォルトではなくリポジトリのパッケージをインストールしました。数週間前に、ストレージが突然予期せずオフラインになりました。今、顧客は同じパッケージがインストールされている新しいシステムが欲しい。ただし、パッケージのコピーを取得できません。アップストリームリポジトリはオフラインであり、本番システムのディスク容量を節約するために、/var/cache/yum自動化されたプロセスを使用して毎日クリーンアップします。yum cleanパッケージのコピーを入手するためにベンダーに連絡していますが、まだ成功していません。

Yumキャッシュにコピーがないと仮定すると、Yumを介してRPMパッケージをインストールした後にRPMパッケージを検索または再構築する方法はありますか?

すでにいくつかの質問があります(12)このアドレスはインストールされているパッケージのコピーを取得する問題を解決しますが、すべての答えはYumキャッシュによって異なります。

明らかに、私の特定のシナリオで最高の答えは、サプライヤーが行動を起こすまで私たちができることがないと顧客に言うことです。しかし、この質問のために、顧客が私たちの最大の顧客であり、そうでなければ私たちを去ったとしましょう。ソフトウェアをインストールし、新しいシステムを起動してから〜しなければならないこのパッケージのコピーを入手しないと、当社が破産するリスクがあります。 (実際にこれを行う方法があるのか​​気になりました。実際に私の生活はそこにかかっていません。)

答え1

遅くて厄介な手動方式は、次の行に沿って実行できます。

$ rpm -ql openssh-server
...

このファイルからtarballをビルドします。ただし、これにより、これらのファイルまたはディレクトリの一部を除外する必要があります。また、可能であればスクリプトを収集する必要があります。

$ rpm -q --scripts openssh-server
...

newhope.spec次に、ソースファイルを使用するのに適したファイルを検索または調整し、その仕様ファイルにスクリプトを挿入して、newhope.tar.gz不明な量の操作とテストを実行して上記のすべてのスクリプトを所定の場所にインポートし、rpmbuild愚か%filesな make -a-競合を解決します。 tarballメソッドは、他のパッケージなどを使用して生成できます。

(仕様を確認して手動で含めることrpm -q --conflictsもできます。デフォルトでは、フラグセクションに記載されているすべてのフラグを実行して、インストールされているRPMに何が含まれているかを確認してください...)--requires--triggers--providesman rpmquery-options

答え2

回答者スーパーユーザーの古い質問お勧めしますrpm --rebuild。ただし、RHEL 7に付属のRPMバージョンはこのオプションをサポートしていないようです。

別の方法はrpmrebuild、RHEL 7のEPEL経由で使用できます。このツールを使用してインストールされたパッケージを再作成できました。結果のパッケージは元のパッケージとほぼ同じですが、同じではありません。特に:

  • ディスク上のファイルに対するすべての変更は新しいパッケージに適用されます(ほとんどの設定ファイルで行われます)。
  • 元のパッケージが署名されていても、元のパッケージ署名者以外は誰もがパッケージ署名に使用された秘密鍵のコピーを持っていないため、パッケージは署名されません。

関連情報