yum update を実行すると、システムにインストールされているすべてのパッケージの最新バージョンがダウンロードされます。最新バージョンにアップグレードしてください。
1 つ (または複数) の特定のパッケージを yum に自動的に更新させたくない場合があります。
このような状況では、以下の例に示すように yum exclude オプションを使用してください。
1.オプション -x を使用して単一パッケージを除外
たとえば、このシステムでは PHP 5.1 を使用しており、このシステムで実行されているカスタム php アプリケーションは、他の新しいバージョンの PHP ではまだテストされていません。
# rpm -q php php-5.1.0-27.el6_5.x86_64
したがって、この場合、更新を行うときに、特定の 1 つのパッケージ (php.ini) のみを除外したいと考えています。以下に示すように、以下は、「yum update」コマンドを実行すると、php パッケージがバージョン 5.3.3 に更新されることを示しています。
# yum check-update php php.x86_64 5.3.3-40.el6_6 updates
以下は、yum 更新中に 1 つのパッケージ (php) のみを除外します。
# yum -x php update
2.オプション -x を使用して複数のパッケージを除外
以下に示すように、複数の -x オプションを指定することで、複数のパッケージを除外できます:
yum -x php -x httpd update
コンマで区切られたパッケージのリストを指定して、複数のパッケージを除外することもできます。以下は、上記とまったく同じように動作します。
yum -x php,httpd update
3.ワイルドカードを使用して複数のパッケージ (カーネル パッケージなど) を除外
ほとんどの場合、yum update でカーネルを自動的にアップグレードしたくない場合があります。
実際の yum 更新を行う前に、yum check-update を実行できます。これにより、yum 更新中にアップグレードされるすべてのパッケージが表示されます。
以下に示すように、この例では、yum update によってアップグレードされる 3 つのカーネル関連パッケージがあります。
# yum check-update | grep -i kernel kernel.x86_64 2.6.32-504.1.3.el6 updates kernel-firmware.noarch 2.6.32-504.1.3.el6 updates kernel-headers.x86_64 2.6.32-504.1.3.el6 updates
-x 除外リストで個々のパッケージ名をすべて指定する代わりに、以下に示すように、単純にシェル glob ワイルドカードを使用できます。以下は、yum 更新中にアップグレードを開始するすべてのカーネル関連パッケージを除外します。
yum -x kernel* update
4. -x オプションの複数のワイルドカード リスト
-x オプションで複数のワイルドカード リストを指定することもできます。
以下に示すように、次の yum 更新時にアップグレードされる複数の php パッケージがあることを示しています。
# yum check-update | grep -i php php.x86_64 5.3.3-40.el6_6 updates php-cli.x86_64 5.3.3-40.el6_6 updates php-common.x86_64 5.3.3-40.el6_6 updates php-xml.x86_64 5.3.3-40.el6_6 updates
次回の yum 更新時にすべての php およびカーネル関連パッケージを除外する場合は、次を使用できます。この例では「 」を使用する必要があることに注意してください。
yum -x 'php*' -x 'kernel*' update
5. -x の代わりに –exclude を使用する
以下に示すように、-x の代わりに –exclude を使用することもできます:
yum --exclude php update yum --exclude httpd update yum --exclude kernel update yum -exclude php*,httpd*,kernel* update
6. yum.conf ファイルを使用してパッケージを除外
除外するパッケージをコマンド ラインで指定する代わりに、/etc/yum.conf ファイルで指定できます。
たとえば、すべての php、httpd、およびカーネル パッケージを yum 更新から除外するには、次の行を追加します:
exclude=php* httpd* kernel*
または、次のコマンドを実行します:
echo "exclude=php* httpd* kernel*" >> /etc/yum.conf
7.カンマ区切りのリストを使用
コンマで区切られたワイルドカード パッケージのリストを指定して、複数のパッケージを除外することもできます。以下は、上記とまったく同じように動作します。
yum -x php*,kernel* update
上記の -x オプションを使用して他の例で示した方法と一貫性を持たせるために、以下に示すように、(スペースだけでなく) コンマを使用して複数のパッケージを区切ることもできます。
# vi /etc/yum.conf exclude=php*,httpd*,kernel*
8.カスタム リポジトリ ファイル内のパラメータを除外
メインの yum.conf ファイルで exclude パラメータを指定する代わりに、個々のリポジトリ ファイルで指定することもできます。
たとえば、mongodb をインストールした場合、/etc/yum.repos.d ディレクトリの下に mongodb.repo があります。この mongodb.repo ファイル内で、mongodb リポジトリの除外パッケージ リストを指定できます。
# vi /etc/yum.repos.d/mongodb.repo exclude=mongo*
9. check-update (Dry-run -x) を使用して Yum Exclude チェックをシミュレートします
-x オプションを check-update とともに指定することもできます。これは、コマンド ラインまたは yum.conf ファイルで指定した -x オプションが期待どおりに機能しているかどうかを確認するのに役立ちます。
たとえば、次の例は、yum の更新中にカーネルがアップグレードされることを示しています。
# yum check-update | grep -i kernel kernel.x86_64 2.6.32-504.1.3.el6 updates kernel-firmware.noarch 2.6.32-504.1.3.el6 updates kernel-headers.x86_64 2.6.32-504.1.3.el6 updates
以下は、結果に何も返さなかったため、-x フラグが期待どおりに機能することを示しています。
# yum -x kernel* check-update | grep -i kernel
たとえば、yum.conf ファイルに次の除外行があるとします。
# grep exclude /etc/yum.conf exclude=php*,httpd*,kernel*
次に、上記の /etc/yum.conf で指定された除外リストが期待どおりに機能することを示します。これは、check-update が次の出力にそれらのパッケージ (カーネルを含む) を表示しなかったためです。
# yum check-update | egrep 'php|httpd|kernel'
10. Exclude from yum.conf ファイルを無視
yum.conf ファイルに記載されている除外を無効にしたい場合。つまり、yum.conf ファイルで指定された除外リストを yum update で考慮したくない場合は、コマンド ラインから –disableexcludes オプションを使用できます。
前の例では、yum 更新によって更新される php、httpd、およびカーネル パッケージを除外しました。
ただし、yum でその除外リストを無視して (つまり、除外を無効にして)、通常の yum update コマンドの一部として php、httpd、およびカーネルのアップグレードを続行する場合は、次を実行します。
yum --disableexcludes=all update
以下は、disableexcludes に指定できる 3 つの可能な値です。
- all すべての除外を無効にする
- main yum.conf ファイルのメイン セクションで指定された除外を無効にする
- repoid 指定されたリポジトリ ID に指定された除外を無効にする
特定のカスタム リポジトリに対してのみ除外を無効にする場合は、リポジトリ ID を指定できます (以下に示すように、yum repolist コマンドの 1 列目)。
# yum repolist repo id repo name status mongodb MongoDB Repository 240 base CentOS-6 - Base 6,518 extras CentOS-6 - Extras 35 updates CentOS-6 - Updates 315
以下は、/etc/yum.repos.d ディレクトリの下の mongodb.repo ファイルで指定された除外リストを無効 (無視) します。
yum --disableexcludes=mongodb update