YumとDNFでパッケージの更新を無効にするまたはロックする4つの方法
パッケージマネージャーは、ユーザーが新しいソフトウェアをインストールしたり、システムをアップグレードしたり、特定のソフトウェアを更新したりすることを可能にするソフトウェアです。Linuxベースのシステムでは、ソフトウェアが完全にインストールされるために必要な多くの依存関係がしばしば存在するため、パッケージマネージャーのようなツールはすべてのシステムにとって不可欠です。
各Linuxディストリビューションは、上記の機能のためのデフォルトのパッケージマネージャを搭載していますが、最も一般的に見られるものは、RHELおよびFedoraシステムのYum(Fedora 22以降はDNFに置き換えられています)と、DebianベースのシステムのAptです。
特定のパッケージのアップデートをブロックまたは無効にするためのAPTツールを探している場合は、Ubuntu/Debianシステムで、この記事を読むべきです。
DNF(ダンディファイド YUM)は、Fedora システムで YUM に置き換わり、私たちのリストのもう一つになります。適切に探索すれば、これらのパッケージマネージャーは以下の機能に使用できます:
- リポジトリから新しいソフトウェアをインストールしています。
- ソフトウェアをインストールする前にそれらの依存関係をインストールすることで、ソフトウェアの依存関係を解決します。
- 各ソフトウェアの依存関係のデータベースを維持する。
- 既存のソフトウェアのバージョンをダウングレードする。
- カーネルのバージョンをアップグレードしています。
- インストール可能なパッケージの一覧を表示します。
このガイドでは、YumとDNFコマンドを使用して、特定のパッケージの更新を無効にするかロックするための4つの簡単な方法について説明します。
1. excludeオプションを使用してパッケージアップデートを永久に無効にする
特定のパッケージの更新を停止する最も簡単な方法の1つは、Yum または DNF の設定ファイルで exclude オプションを使用することで、パッケージマネージャーに特定のパッケージの更新を避けるよう指示することです。
Yum または DNF の設定ファイルを開いてください。
sudo nano /etc/yum.conf #Yum Configuration File
sudo nano /etc/dnf/dnf.conf #DNF Configuration File
ファイルの下部にexclude行を追加し、ブロックしたいパッケージ名を続けて記述します。
exclude=kernel* httpd
これにより、システムはすべてのカーネル関連のパッケージとApacheウェブサーバー(httpd)を更新できなくなります。
さて、指定されたパッケージをインストールまたは更新してみましょう。そして、YumまたはDNFコマンドがそれをインストールまたは更新されないようにすることを確認しましょう。
sudo dnf install httpd
2. excludeオプションを使用してパッケージの更新を一時的に無効にする
設定ファイルを永久に変更したくない場合は、YumやDNFのアップデートを実行する際に、コマンドラインで--excludeオプションを使用して特定のパッケージを一時的に除外することができます。
sudo yum update --exclude=nginx php
sudo dnf update --exclude=nginx php
3. リポジトリ内の特定のパッケージを除外する
外部ソースからリポジトリを追加してインストールされたパッケージの将来のアップグレードを止める別の方法があります。これは、/etc/yum/repos.d/または/etc/yum.repos.dディレクトリに作成されたrepo-name.repo設定ファイルを編集することで行えます。
リポジトリ設定ファイルを開いてください。
sudo nano /etc/yum.repos.d/repo-name.repo
[repository]セクションの下にexclude行を追加します:
exclude=package1 package2
例えば、epelリポジトリからmysqlパッケージの更新を除外したい場合は、/etc/yum.repos.d/epel.repoを開いて、次のように追加します:
exclude=mysql*
これにより、この特定のリポジトリからのmysqlのアップデートがブロックされます。
4. versionlockオプションを使用してパッケージの更新を無効にする
YumとDNFの両方は、特定のパッケージのバージョンをロックすることができるプラグインを提供しており、これによりそれらのパッケージが更新されるのを防ぎます。これはversionlockプラグインを使用して行われます。
ヤムのために:
- バージョンロックパッケージをインストールします:
sudo yum install yum-plugin-versionlock - 特定のパッケージのバージョンをロックします:
sudo yum versionlock add httpd - ロックされたすべてのパッケージを見るには:
sudo yum versionlock list - バージョンロックからパッケージを削除するには:
sudo yum versionlock delete httpd
Dnfの場合:
- バージョンロックパッケージをインストールします:
sudo dnf install dnf-plugins-core - 特定のパッケージバージョンをロックします:
sudo dnf versionlock add httpd - ロックされたすべてのパッケージを表示するには:
sudo dnf versionlock list - バージョンロックからパッケージを削除するには:
sudo dnf versionlock delete httpd
結論
これらの4つの方法を使用することで、YumまたはDNFの構成ファイルを修正すること、コマンドで--excludeオプションを使用すること、versionlockプラグインを利用すること、またはリポジトリの除外を構成することで、RPMベースのLinuxシステムでパッケージの更新を簡単に無効にしたりロックしたりできます。

