したがって、以前の回答にコメントを追加することはできませんが、1つ強調したいと思います。
%post中にrpm-iを実行する計画が機能する方法はありません。アーキテクチャ上は、あなたが言及した正確な理由で発生することはありません。rpmはRPMdbをロックし、競合状態や破損を防ぐためにこれを行います。したがって、別の解決策を見つける必要があります。
解決策は1つあり、これまでのところ、Requires:ビットが1つです。現在のxyzrpmの後にインストールしたいのですが、「comefrom」ではなく「goto」を使用するのと同じ理由でpost-requiresがないため、「installafter」はありません。
したがって、Requires:タグを使用します。xyz.rpmに応じてabc.rpmだけ、またはabc.rpmに応じてxyz.rpmだけで注文が完全でない場合は、ペイロードを提供しないが両方を必要とする3番目の「仮想」RPMを構築します。少なくとも、この最後のソリューションは、両方のパッケージがインストールされていることを確認します。
他の誰もがRequires:タグを推奨し、%postでrpm-iの代替案について話しましたが、%post自体でrpmを直接使用する可能性に取り組んでいる人は見つかりませんでした。そして私は、提案された計画が機能する可能性が近い将来にないことをOPが知っていることを確認したかったのです。