同じパッケージのrpm --upgradeでファイルの競合が発生する

同じパッケージのrpm --upgradeでファイルの競合が発生する

多数のファイルを含むカスタム パッケージをインストールしました。

2 回目に実行すると、rpm --upgrade多くのエラーが発生します。

File ABC from install of mypackage-1.0-0.i386 conflicts with file from package mypackage-1.0-0.i386

RPM はエラー コード 5 で終了します。

しかし、それは同じバージョン番号の同じパッケージです! 「すでにインストール済み」などと表示されるべきではないでしょうか? この問題を回避するには、spec ファイルまたは rpm アップグレード コマンドに対して何を行う必要がありますか?

実行中rpm --upgrade --replacefilesは「パッケージmypackage-1.0-0.i386すでにインストールされています」、終了コード5

(変更されていない場合は、ファイルを置き換えたくありません...)

いくつかのエラーメッセージ

答え1

いくつかのオプションがあります。最も簡単な方法は、新しいパッケージをビルドするときにバージョンやリリースを増やして、rpm -U(upgrade) コマンドが正常に機能するようにすることです。これを行いたくない場合は、 を使用してrpm -U --replacefiles --replacepkgsパッケージを効果的に再インストールできます。3 番目のオプションは、「新しい」パッケージをインストールする前にパッケージを削除することです。

これらすべてのケースでは、通常のペイロードの一部であるすべてのファイル (つまり、noreplace構成ファイルとしてマークされていないファイル) が新しいバージョンに置き換えられます。これが RPM の仕組みです。変更されたものだけを更新するという方法を採用したい場合は、以前のバージョンとの差分のみを含む DRPM パッケージ (Delta RPM) の生成を検討する必要があります。再構築時にバージョン番号やリリース番号を増やす必要があります。私は Delta RPM パッケージを作成したことがないので、これに関するアドバイスはできません。

関連情報