Yum コマンドを使用して特定のパッケージの更新を無効化/ロックする 4 つの方法
パッケージ マネージャー は、新しいソフトウェアのインストール、システムのアップグレード、または特定のソフトウェアの更新などをユーザーが実行できるようにするソフトウェアです。 Linux ベースのシステムの場合、1 つのソフトウェアに多くの依存関係があり、そのソフトウェアを完全にインストールするにはそれらの依存関係がシステム上に存在する必要があり、そのようなソフトウェアはパッケージ マネージャーのようなもので、すべてのシステムで非常に必要なツールになります。
各 Linux ディストリビューションには、上記の機能を備えたデフォルトのパッケージ マネージャーが付属していますが、その中で最もよく使われるのは、RHEL および Fedora システム上の yum です。 (現在、Fedora 22 以降からはDNFに置き換えられています)、Debian のaptです。
特定のパッケージの更新をブロックまたは無効にするAPT ツールをお探しの場合は、この記事をお読みください。
Dnf または Danified yum が、Fedora システム上の yum を置き換えます。これもリストにあります。適切に探索すると、これらのパッケージ マネージャーを次の機能に使用できます。
- リポジトリから新しいソフトウェアをインストールします。
- ソフトウェアをインストールする前に依存関係をインストールして、ソフトウェアの依存関係を解決します。
- 各ソフトウェアの依存関係のデータベースを維持します。
- 既存のソフトウェアのバージョンをダウングレードします。
- カーネルのバージョンをアップグレードします。
- インストール可能なパッケージをリストします。
個別のパッケージ マネージャーに関する詳細な記事を実際の例とともに個別にすでに取り上げています。それぞれの Linux ディストリビューションでパッケージ管理を制御および管理するには、これらの記事を読む必要があります。
こちらもお読みください:
- 20 の実践例で Yum コマンドをマスターする
- Fedora 22 以降のバージョンでパッケージを管理するための 27 の DNF コマンド
- Ubuntu パッケージを管理するための 25 の APT コマンドを学ぶ
この記事では、RHEL/CentOS および Fedora システムで Yum パッケージ マネージャーを使用して特定のパッケージの更新をロック/ 無効にする方法を説明します (Fedora 21 まで適用可能、その後の新しい Fedora バージョン)デフォルトのパッケージ マネージャーとして dnf が同梱されています)。
Yum を使用したパッケージ更新の無効化/ロック
Yellow Dog Updater、修正済み (yum) は、CentOS や Fedora などの RedHat ベースのディストリビューションのパッケージ管理ツールです。 Yum を使用してパッケージの更新をロック/無効にするために使用されるさまざまな戦略については、以下で説明します。
1. パッケージのインストールまたは更新を永久に無効にする
1. /etc/yum.conf または /etc/ にある yum.conf
ファイルを開いて編集します。 yum/yum.conf。
以下のようになります。
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
...
ここで、特定のパッケージをインストールまたはアップグレードから除外するには、除外するパッケージの名前とともに exclude 変数を追加するだけです。たとえば、すべての python-3
パッケージを更新から除外したい場合は、次の行を yum.conf
に追加するだけです。
exclude=python-3*
複数のパッケージを除外するには、名前をスペースで区切るだけです。
exclude=httpd php
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release
exclude=python-3* [Exclude Single Package]
exclude=httpd php [Exclude Multiple Packages]
...
注: これらのパッケージを含めるには、yum.conf
内のエントリを無視して、「-disableexcludes 」を使用し、それを all|main|repoid に変更します。'main' は yum.conf と 'repoid' に入力されたものです。 > は、後で説明するように、repos.d ディレクトリで除外が指定されているものです。
次に、指定したパッケージをインストールまたは更新して、yum コマンドによってインストールまたは更新が無効になることを確認してみましょう。
# yum install httpd php
Loaded plugins: fastestmirror, langpacks, versionlock
Loading mirror speeds from cached hostfile
* base: mirror.nbrc.ac.in
* epel: mirror.wanxp.id
* extras: mirror.nbrc.ac.in
* updates: mirror.nbrc.ac.in
Nothing to do
# yum update httpd php
Loaded plugins: fastestmirror, langpacks, versionlock
Loading mirror speeds from cached hostfile
* base: mirror.nbrc.ac.in
* epel: mirror.wanxp.id
* extras: mirror.nbrc.ac.in
* updates: mirror.nbrc.ac.in
No packages marked for update
2. パッケージのインストールまたは更新を一時的に無効にする
2. 上記は、ファイルが編集されない限りパッケージが更新されないため、パッケージを除外する永続的な解決策でした。これに対する一時的な解決策もここにあります。更新を行うときに、yum コマンドで -x
スイッチを使用して、更新したくないパッケージを除外します。
yum -x python-3 update
上記のコマンドは、システム上の python-3
を除く、更新が利用可能なすべてのパッケージを更新します。
ここで、複数のパッケージを除外するには、-x
を複数回使用するか、単一のスイッチでパッケージ名を ','
で区切ります。
yum -x httpd -x php update
OR
yum -x httpd,php update
3. --exclude
スイッチの使用は -x と同じように機能します。-x を に置き換えるだけです。 > – 除外し、','
で区切られたパッケージ名のリストを渡します。
yum --exclude httpd,php
3. リポジトリを使用したパッケージの更新を無効にする
4. リポジトリの追加を通じて外部ソースからインストールされたパッケージについては、将来のアップグレードを停止する別の方法があります。これは、/etc/yum/repos.d/ または /etc/yum.repos.d< に作成された .repo
ファイルを編集することで実行できます。 ディレクトリ。
パッケージ名を指定した除外オプションをリポジトリに追加します。例: epel リポジトリ から wine などのパッケージを除外するには、epel.repo
ファイルに次の行を追加します。
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
exclude=wine
ここでワイン パッケージを更新しようとすると、以下のようなエラーが表示されます。
# yum update wine
Loaded plugins: fastestmirror, langpacks, versionlock
epel/x86_64/metalink | 5.6 kB 00:00
Loading mirror speeds from cached hostfile
* base: mirror.nbrc.ac.in
* epel: mirror.wanxp.id
* extras: mirror.nbrc.ac.in
* updates: mirror.nbrc.ac.in
No Match for argument: wine
No package wine available.
No packages marked for update
4. versionlock オプションを使用してパッケージの更新を無効にする
5. yum でパッケージのバージョンをマスクして、アップグレードできないようにするもう 1 つの方法は、yum の versionlock
オプションを使用することですが、これを行うには、システムにyum-plugin-versionlock パッケージをインストールする必要があります。
yum -y install yum-versionlock
たとえば、httpd などのパッケージのバージョンを 2.4.6 のみにロックするには、root として次のコマンドを記述するだけです。
yum versionlock add httpd
サンプル出力
Loaded plugins: fastestmirror, langpacks, versionlock
Adding versionlock on: 0:httpd-2.4.6-40.el7.centos
versionlock added: 1
ロックされたパッケージを表示するには、次のコマンドを使用して、バージョンがロックされているパッケージを一覧表示します。
yum versionlock list httpd
サンプル出力
Loaded plugins: fastestmirror, langpacks, versionlock
0:httpd-2.4.6-40.el7.centos.*
versionlock list done
結論
これらは、yum パッケージ マネージャーを使用してパッケージの更新を無効化/ロックするのに役立ついくつかのヒントです。同じことを行うための他のトリックがある場合は、コメントしてください。