web-dev-qa-db-ja.com

RPMインストールでの競合を無視する方法

フォルダーにたくさんのrpmファイルがあります。 _rpm -ivh *.rpm_を使用してそれらをインストールしようとしているので、rpmは正しいインストール順序を処理できます。

これらのrpmのいくつかでは、システムに新しいバージョンがインストールされているため、たとえば次のようになります。

package info-5.0-1 (which is newer than info-4.13a-2) is already installed

_/opt/freeware/man/man1/infokey.1 from install of info-4.13a-2 conflicts with file from package info-5.0-1_

古い.rpmファイルを無視して、既にインストールされている新しいバージョンとの依存関係を解決する方法はありますか? --forceオプションについて考えました。しかし、-forceはどのように競合を解決しますか?それらを古いバージョンで上書きするか、単に新しいバージョンを残して無視しますか?

どんな考えでも大歓迎です。

29
Cobra Kai Dojo

--forceオプションは、既にインストールされているパッケージを再インストールし、他のパッケージから既にインストールされているファイルを上書きします。通常これは必要ありません。

何らかのディレクトリからすべてのRPMをインストールするようrpmに指示すると、まさにこれが実行されます。 rpmは、インストール用にリストされたRPMを無視できません。不要なRPMをリスト(またはディレクトリ)から手動で削除する必要があります。

古いRPMを削除すると、rpmがインストールされたRPMの新しいバージョンとの依存関係を解決します。ただし、これは、インストールするRPMのいずれもが古いバージョンに正確に依存していない場合にのみ機能します。

同じRPMの異なるバージョンが本当に必要な場合、RPMは relocatable でなければなりません。その後、rpmに特定のRPMを別のディレクトリにインストールするように指示できます。ファイルが競合していない場合は、rpm -iで異なるバージョンをインストールできます(zypper inは同じRPMの異なるバージョンをインストールできません)。たとえば、Ruby gemsをリロケータブルRPMとして使用しています。したがって、同じgemの異なるバージョンをインストールできます。

RPMが競合しているファイルはわかりませんが、それらがすべて「単なる」マニュアルページである場合は、rpm -i --replacefilesを使用して新しいファイルを古いファイルで単純に上書きできます。これに関する唯一の問題は、古いmanページを読んでいる人を混乱させ、実際のバージョンのものだと考える可能性があることです。別の問題は、rpm --verifyコマンドです。古いパッケージがいくつかのファイルを上書きした場合、新しいパッケージに対して文句を言います。

これはおそらく https://serverfault.com/questions/522525/rpm-ignore-conflicts の複製ですか?

22
xoryves

Freshenコマンドを試す:

rpm -Fvh *.rpm
8
Kalim Sayyed

コンテキストから、競合はパッケージのバージョンによって引き起こされました。
rpmに関するマニュアルを見てみましょう。

--force
    Same as using --replacepkgs, --replacefiles, and --oldpackage.

--oldpackage
    Allow an upgrade to replace a newer package with an older one.

したがって、rpm -Uvh info-4.13a-2.rpm --forceコマンドを実行して問題を解決できます。

6
James