多数のファイルを含むカスタム パッケージをインストールしました。
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 パッケージを作成したことがないので、これに関するアドバイスはできません。