LoginSignup
1
1

RHEL系Linuxディストリビューションの自動アップデートを無効化する

Last updated at Posted at 2024-06-21

1. はじめに

Red Hat Enterprise LinuxをはじめとするRHEL系ディストリビューションには、パッケージの自動アップデート機能がある。特にGUI環境をインストールしたときには、デフォルトで有効になっているので注意が必要だ。

自動アップデートはクライアント用途では歓迎される機能だが、サーバー用途では自動アップデートしたくないことが多い。また、自動アップデートするとしても、カーネルなどの一部パッケージを除外したいこともあるだろう。

検索すると、いろいろなネタは転がっているのだが、Linuxのバージョンによって設定方法は異なる。また、GUI環境では別の設定方法が必要になるという落とし穴もある。そこで、自動アップデートを停止する方法を紹介する。あわせて、一部のパッケージを除外する方法も説明する。

1-1. 対象環境

  • RHEL7/8/9のRHEL互換ディストリビューション(CentOS StreamやAlmaLinux、Rocky Linux、Oracle Linuxなど)
  • Amazon LinuxなどのFedora互換ディストリビューション

2. 自動アップデートの方法

自動アップデートは、おもに次の二つの方法がある。

  • yum-cronやdnf-automaticなど
  • デスクトップ環境に組み込まれたPackagekit

GUIデスクトップをインストールしていないときは前者だけを気にすればよい。しかし、GUIデスクトップをインストールしているときは両方を意識する必要がある。次の表はLinuxのバージョンを

RHEL7系 RHEL8/9系
CUI/GUI環境のどちらにも存在 yum-cron dnf-automatic
GUI環境だけに存在 Packagekit Packagekit

3. 自動アップデートを停止する

それぞれの停止方法を説明する。使用しているLinuxのバージョンに合わせて選択してほしい。

  • yum-cron
  • dnf-automatic
  • Packagekit

3-1. yum-cronを無効にする(RHEL7系)

yum-cronはRHEL6系にもあるが、systemctlではなくservice/chkconfigを使用する。ここでは手順を説明しないが実施することは同じである。

  1. yum-cronがインストールされているか確認する。インストールされていないときは「3-3. Packagekitを無効にする」に進む。
# rpm -qa | grep yum-cron
★何も表示されなければインストールされていない。

2.インストールされているときは起動しているか確認する。次の例では、自動起動が有効で、サービスも起動している。

# systemctl is-enabled yum-cron
enabled ★自動起動有効

# systemctl status yum-cron
● yum-cron.service - Run automatic yum updates as a cron job
   Loaded: loaded (/usr/lib/systemd/system/yum-cron.service; enabled; vendor preset: disabled)
   Active: ★active (exited) since Tue 2020-12-15 08:38:03 GMT; 5min ago
  Process: 18679 ExecStart=/bin/touch /var/lock/subsys/yum-cron (code=exited, status=0/SUCCESS)
 Main PID: 18679 (code=exited, status=0/SUCCESS)

Dec 15 08:38:03 centos7 systemd[1]: Starting Run automatic yum updates as a.....
Dec 15 08:38:03 centos7 systemd[1]: Started Run automatic yum updates as a ...b.
Hint: Some lines were ellipsized, use -l to show in full.

3.yum-cronが起動しているときは、サービスを停止して自動起動もオフにする。

# systemctl disable yum-cron --now

4.次のようにdisabledになれば大丈夫だ。

# systemctl list-unit-files  | grep yum-cron
yum-cron.service                              disabled

3-2. dnf-automaticを無効にする(RHEL8/9系)

1.dnf-automaticのインストールの有無を確認する。インストールされていないときは「3-3. Packagekitを無効にする」に進む。

# rpm -qa | grep dnf-automatic
★何も表示されなければインストールされていない。

2.インストールされているときはタイマーの設定を確認する。次の例では、自動ダウンロードが有効になっているが、自動インストールは無効になっている。

# systemctl list-unit-files --type=timer | grep dnf-auto
dnf-automatic-download.timer   enabled  ★ダウンロードのみ自動
dnf-automatic-install.timer    disabled ★インストール自動
dnf-automatic-notifyonly.timer disabled ★通知自動
dnf-automatic.timer            disabled

3.enabledになっているタイマーをすべて無効にする。

# systemctl disable dnf-automatic-download.timer --now

4.次のようにすべてdisabledになれば大丈夫だ。

# systemctl list-unit-files --type=timer | grep dnf-auto
dnf-automatic-download.timer   disabled
dnf-automatic-install.timer    disabled
dnf-automatic-notifyonly.timer disabled
dnf-automatic.timer            disabled

3-3. Packagekitを無効にする(共通)

GUIデスクトップ環境をインストールしているときは、Packagekitによるアップデートを無効化する。yum-cronやdnf-automaticによる自動アップデートが無効でも、Packagekitが有効だと自動アップデートされてしまう。

特にデスクトップ環境でインストールしたときは、Packagekitがデフォルトで有効化されているので注意が必要だ。

  1. packagekitのステータスを確認する。サービス自体が存在しないときは何もしなくてよい。
# systemctl status packagekit
起動しているとき
● packagekit.service - PackageKit Daemon
   Loaded: loaded (/usr/lib/systemd/system/packagekit.service; static; vendor preset: disabled)
   Active: active (running) ★起動 since Tue 2020-12-15 09:31:27 GMT; 59s ago
 Main PID: 21960 (packagekitd)
    Tasks: 3
   CGroup: /system.slice/packagekit.service
           └─21960 /usr/libexec/packagekitd

Dec 15 09:31:26 centos7 systemd[1]: Starting PackageKit Daemon...
Dec 15 09:31:27 centos7 PackageKit[21960]: daemon start
Dec 15 09:31:27 centos7 systemd[1]: Started PackageKit Daemon.
停止しているとき
● packagekit.service - PackageKit Daemon
   Loaded: loaded (/usr/lib/systemd/system/packagekit.service; static; vendor preset: disabled)
   Active: inactive (dead) ★停止

Dec 15 09:31:26 centos7 systemd[1]: Starting PackageKit Daemon...
Dec 15 09:31:27 centos7 PackageKit[21960]: daemon start
Dec 15 09:31:27 centos7 systemd[1]: Started PackageKit Daemon.
Dec 15 09:33:36 centos7 systemd[1]: Stopping PackageKit Daemon...
Dec 15 09:33:36 centos7 systemd[1]: Stopped PackageKit Daemon.
Packagekitのサービス自体がないとき
Unit packagekit.service could not be found.

2.packagekitが起動しているときは、サービスを停止して自動起動もオフにする。

# systemctl disable packagekit --now

4. 特定のパッケージをアップデートから除外する

次に特定のパッケージをアップデートから除外する方法を説明する。この方法では、自動アップデートだけでなく手動アップデートでも除外される。

設定方法は/etc/yum.confexcludeパラメータにパッケージ名を指定する。8系以降では/etc/dnf/dnf.confだが、次のようにシンボリックリンクになっているので、どちらで設定しても同じである。

/yum.confとdnf.confはシンボリックリンクの関係
$ ls -l /etc/yum.conf
lrwxrwxrwx. 1 root root 12 Jun  9  2023 /etc/yum.conf -> dnf/dnf.conf

設定方法は、次のようにパッケージ名を指定する。複数指定するときは半角スペースを空けて指定し、ワイルドカードも指定できる。

パッケージの指定方法
exclude=パッケージ名 [...]

たとえば、kernelとglibcをアップデートから除外するには次のように指定する。

exclude=kernel* glibc*

また、excludeで特定のパッケージを除外していても、--disableexcludesを利用すればexcludeの設定を無視してアップデートできる。

yum --disableexcludes=all update
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1