Yumを使用して何かをインストールするたびに、パッケージのx86_64バージョンとi386バージョンの両方が利用可能な場合、両方がインストールされます。パッケージのArchを指定せずにそれを禁止できる方法はありますか?
multilib_policy = bestを/ etc/yum.confに追加します
Yumは、「最適な」パッケージをインストールしようとします。システムのArchは、そのパッケージのみをインストールします(使用可能な限り)。
64ビットシステムを使用している場合、yumはまずpackage.x86_64をインストールしようとします。それが存在しない場合は、i386とnoarchにフォールバックします。
デフォルトの設定はmultilib_policy = allで、可能なすべてのアーチをインストールすることを意味します。
オプションexactarch = 1を/ etc/yum.confでしばらく使用していて、うまくいきました。
Archを手動で指定することもできますが、指定しない場合はx86_64のみをインストールし、両方はインストールしません。
el6マニュアルによると、yum.conf(5):
exactarch Either ‘1’ or ‘0’. Set to ‘1’ to make yum update only update the architectures of packages that you have installed. ie: with this enabled yum will not install an i686 package to update an i386 package. Default is ‘1’.
...
multilib_policy Can be set to ’all’ or ’best’. All means install all possible arches for any package you want to install. Therefore yum install foo will install foo.i386 and foo.x86_64 on x86_64, if it is available. Best means install the best Arch for this platform, only.
ところで、multilib_policy = bestとexactarch = 1の両方が、しばらくの間デフォルトになっているようです。
Yum.confのexclude関数を使用します。
exclude=*.i386 *.i686
X86_64バージョンが既にインストールされている場合は、i386バージョンをインストールしようとします。
yum.confでexcludeを使用する場合、i386 Archでのみ利用可能なパッケージを除外することができます
より安全な方法は、インストール時にArchを明示的に要求することです:
yum install package.x86_64
-x、--exclude = package特定のパッケージを名前またはグロブですべてのリポジトリの更新から除外します。構成オプション:除外
--disableexcludes = [all | main | repoid]構成ファイルで定義された除外を無効にします。 3つのオプションのいずれかを取ります:すべて==すべての除外を無効にしますmain == yum.confの[main]で定義された除外を無効にしますrepoid ==そのリポジトリに定義された除外を無効にします
上記のmanから使用することも、yumexをインストールすることもできます。これにより、インストールに必要なrpmを選択できます。
私にとってうまくいくのは、マシンからすべてのix86パッケージを削除することです。今では、32ビットのものをインストールするように求められることはありません。
最初に、次のように.rpmmacrosをセットアップします。
cat ~/.rpmmacros
%_query_all_fmt %%{name}-%%{version}-%%{release}.%%{Arch}
次に、これを実行します(私はbashを想定しています)。
rpm -qa | egrep "i.86$"
これにより、現在インストールされているx86_64以外のRPMのリストが表示されます。これですべて削除できます:
rpm -e $(rpm -qa | egrep "i.x86$")
これで、純粋な64ビットシステムが完成しました。
-デイブ