Q:システムに複数の yum リポジトリがあります。たとえば、centos、epel、docker、mongo などです。yum update コマンドを実行すると、すべてのリポジトリからインストールされたパッケージが更新されます。 yum の更新中に特定のリポジトリを除外するにはどうすればよいですか?
A:yum の更新中に、特定のリポジトリに属するパッケージを除外するには、このチュートリアルで説明されている 2 つの方法のいずれかを使用します。
また、リポジトリ全体を除外するのではなく、特定のパッケージを除外することもできます:Linux Yum Update のパッケージをスキップする 10 の Yum Exclude の例 (カーネル更新を Yum で除外する方法)
1.リポジトリ リストを取得
システムで利用可能なすべてのリポジトリを表示するには、以下に示すように yum repolist を実行します。
# yum repolist repo id repo name status base CentOS-6 - Base 6,575 extras CentOS-6 - Extras 62 updates CentOS-6 - Updates 1,622 dockerrepo Docker Repository 2 mongodb-org-3.0 MongoDB Repository 75 repolist: 8,336
上記の例では、次のようになります:
- 上記の最初の 3 つのリポジトリは、CentOS のメイン リポジトリです:base、extras、updates
- dockerrepo は、Docker コンテナ関連のパッケージを含むサードパーティのリポジトリです
- mongodb-org-3.0 は、MongoDB 関連のパッケージを含むサードパーティのリポジトリです。
以下に示すように yum update を実行すると、システムに既にインストールされているすべてのパッケージが、上記のすべてのリポジトリから入手可能な最新バージョンにアップグレードされます。
yum update
システムに mongodb が既にインストールされている場合、上記の「yum update」を実行すると、mongodb パッケージも最新バージョンにアップグレードされます。
「yum update」を実行するときに mongodb をアップグレードしたくない場合は、次のセクションで説明するように、yum update 中にそれを除外する必要があります。
また、特定のパッケージが属するリポジトリを知りたい場合は、そのリポジトリをアップグレードから除外できるようにするには、以下に示すように yum info コマンドを使用します。
yum info package-name | grep -i repo
yum コマンドを初めて使用する場合:15 の Linux Yum コマンドの例 – パッケージのインストール、アンインストール、更新
2. Yum Update からリポジトリを除外する (方法 1)
オプション –disablerepo=repository-name を yum update と共に使用できます。これは、指定されたリポジトリ名に属するパッケージをアップグレードしません。
次の例では、yum update は、MongoDB リポジトリに属するインストール済みパッケージを除く、すべてのインストール済みパッケージをアップグレードします。
yum --disablerepo=mongodb-org-3.0 update
yum update の最後に –disablerepo オプションを指定することもできます。以下は、yum 更新中に Docker リポジトリに属するパッケージを除外します。
yum update --disablerepo=dockerrepo
「yum repolist」コマンド出力の 1 列目を調べると、除外する正確なリポジトリ名を取得できます。
3.有効なパラメーターを使用して Yum Update からリポジトリを除外する (方法 2)
yum update コマンド ラインから特定のリポジトリを除外する代わりに、リポジトリ構成ファイルで enabled パラメータを 0 に設定することで、パッケージを yum update から完全に除外できます。
以下に示すように、リポジトリ構成ファイルは /etc/yum.repos.d ディレクトリの下にあります。
# ls -l /etc/yum.repos.d/ -rw-r--r--. 1 root root 1926 Jan 30 2016 CentOS-Base.repo -rw-r--r-- 1 root root 166 Feb 18 2016 docker.repo -rw-r--r-- 1 root root 142 Feb 5 2016 mongodb-org-3.0.repo .. ..
mongodb リポジトリを除外するには、mongodb リポジトリ ファイルを開き、以下に示すように enabled の値を 0 に変更します。
# vi /etc/yum.repos.d/mongodb-org-3.0.repo [mongodb-org-3.0] name=MongoDB Repository baseurl=http://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/ gpgcheck=0 enabled=0
これで、yum repolist を実行しても、出力に MongoDB リポジトリは表示されません。
# yum repolist repo id repo name status base CentOS-6 - Base 6,575 extras CentOS-6 - Extras 62 updates CentOS-6 - Updates 1,622 dockerrepo Docker Repository 2 repolist: 8,261
これは、システムに mongodb 関連のパッケージがインストールされていても、次の「yum update」を実行すると、mongodb パッケージがアップグレードされなくなることも意味します。
yum update
4. Yum update コマンドラインから複数のリポジトリを除外
以下に示すように、コンマで区切られたリポジトリを指定することで、yum の更新中に複数のリポジトリを除外することもできます。
次の例では、yum 更新中に MongoDB、Docker、および EPEL リポジトリを除外します。
yum update --disablerepo=mongodb-org-3.0,dockerrepo,epel
5. Yum Update のリポジトリを有効にする
リポジトリ構成ファイルで「enabled=0」を設定してリポジトリを無効にした場合でも、以下に示すように –enablerepo オプションを使用して、「yum update」中にそれを含めることができます。
次の例では、/etc/yum.repos.d/ ディレクトリの下のリポジトリ ファイルでこのリポジトリが無効になっている場合でも、「yum update」中に MongoDB リポジトリからのパッケージが含まれます。
yum update --enablerepo=mongodb-org-3.0
6. Yum Update で EnableRepo と DisableRepo を組み合わせる
また、enablerepo と disablerepo オプションを組み合わせてクリエイティブにすることもできます。
たとえば、次の yum update コマンドは、MongoDB リポジトリからパッケージのみをアップグレードします。
yum update --disablerepo=* --enablerepo=mongodb-org-3.0
上記では:
- –disablerepo=* これは、最初にすべてのリポジトリを無効にし、yum 更新の対象としないことを示します
- –enablerepo=mongo これは、yum の更新中に MongoDB リポジトリのみを考慮する必要があることを示します (上記の無効化オプションと組み合わせた場合)