私がyumで何かをインストールするたびに、パッケージのx86_64バージョンとi386バージョンの両方が利用可能な場合、両方がインストールされます。パッケージのアーチを指定せずにそれを禁止できる方法はありますか?
私がyumで何かをインストールするたびに、パッケージのx86_64バージョンとi386バージョンの両方が利用可能な場合、両方がインストールされます。パッケージのアーチを指定せずにそれを禁止できる方法はありますか?
回答:
multilib_policy = bestを/etc/yum.confに追加します
Yumはシステムに「最良の」package.archをインストールしようとし、(利用可能である限り)その1つだけをインストールします。
64ビットシステムを使用していると仮定すると、yumはまずpackage.x86_64をインストールしようとします。それが存在しない場合は、i386とnoarchにフォールバックします。
デフォルト設定はmultilib_policy = allで、可能なすべてのアーチをインストールすることを意味します。
/etc/yum.confのオプションのexactarch = 1をしばらく使用してきましたが、それはうまくいきました。
手動で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
exclude=*.i?86
(/etc/yum.conf)。そうすれば、yum検索は32ビットのパッケージもリストしません。
-x、--exclude = package特定のパッケージを名前またはグロブですべてのリポジトリの更新から除外します。構成オプション:除外
--disableexcludes = [all | main | repoid]構成ファイルで定義された除外を無効にします。3つのオプションのいずれかを取ります:すべて==すべての除外を無効にしますmain == yum.confの[main]で定義された除外を無効にしますrepoid ==そのリポジトリに定義された除外を無効にします
上記のmanから使用することも、yumexをインストールして、guiを使用して、インストールする必要のある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ビットシステムが完成しました。
-デイブ