7

既存の.spec/rpmの新しいバージョンを構築していて、それによって必要とされていた依存関係を削除したいのです(以前の.specには「Requires:rpm-xyz」がありました)。

したがって、Requires:rpm-xyzを削除することに加えて、.specファイルの「%post」セクションに次を追加しました。

rpm-ermp-xyz。

生成されたrpmをyumでインストールすると、ダウンロードして処理の確認を求められた後、この行が表示され、永久にスタックします。

警告:/var/lib/rpm/__db.000でトランザクションロックを待機しています

したがって、私にはデッドロックのように見えます(yumはrpmを呼び出し、次に内部からrpmを呼び出します)。したがって、/ var / lib / rpmに__db.ooxファイルがあり、それらを削除するにはromデータベースを再構築する必要があります。

したがって、問題は次のとおりです。スペックファイル内からrpmコマンドを呼び出すことはできますか?廃止されたタグを読みましたが、rpmは削除されません。rpmを削除するための最良の方法は何でしょうか?

ありがとう、

-マーティン

PS追加情報:はい、古い依存関係を削除する必要があります。いいえ、他のrpmはそれに依存していません。

4

1 に答える 1

12

いいえ、.spec ファイル (%post など) のスクリプトレット内から rpm を実行することはできません。あなたができることは、次のような行を置くことです

Obsoletes: rpm-xyv <= VERSION

あなたの.specファイルで。その後、Yum は他のパッケージの削除に進みます。

パッケージの名前変更などに関するアドバイスについては、 http: //yum.baseurl.org/wiki/YumPackageUpdatesを参照してください。

于 2011-08-12T09:36:28.090 に答える