管理人Kのひとりごと

デジモノレビューやプログラミングや写真など

古くなったカーネルを消す(Oracle Linux 8)

Oracle Linuxで以下の記事に従い「package-cleanup --oldkernels --count=2」と実行したところ実行できなかった。Bingチャットの力を借りて新たな実行方法を入手。

確認環境

[hoge@orclhost]$ cat /etc/*release
Oracle Linux Server release 8.9

「package-cleanup --oldkernels --count=2」では実行できず

[hoge@orclhost]$ sudo package-cleanup --oldkernels --count=2
package-cleanup has to be executed with one of the options: --dupes, --leaves, --orphans, --problems or --cleandupes

Bingチャットに聞いてみた

質問

package-cleanupコマンドを実行したところ以下のメッセージが表示されました。対処方法を教えてください。OSはOracle Linux 8.9です
$ sudo package-cleanup --oldkernels --count=2
package-cleanup has to be executed with one of the options: --dupes, --leaves, --orphans, --problems or --cleandupes

回答

Oracle Linux 8.9では、`package-cleanup`コマンドは使用できません。代わりに`dnf`コマンドを使用して、古いカーネルを削除することができます³。

以下のコマンドを実行して、古いカーネルを削除します:

```bash
sudo dnf remove $(dnf repoquery --installonly --latest-limit=-2 -q)
```

このコマンドは、最新の2つのカーネルを除いて、インストールされている古いカーネルをすべて削除します。`--latest-limit=-2`オプションは、最新の2つのカーネルを保持することを意味します。

なお、この操作はシステムに影響を及ぼす可能性があるため、実行前にシステムのバックアップを取ることをお勧めします。また、削除操作は管理者権限が必要ですので、`sudo`を使用してコマンドを実行してください。³。

ソース: Bing との会話 2023/12/3
(1) CentOS 古い kernelを整理する & 増殖させない #Linux - Qiita. https://qiita.com/kichise/items/da7d529d0f89d68d7e2c.
(2) kernel の更新時に /boot が足りなくなったら ( package-cleanup .... https://blog.yskw.info/articles/345/.
(3) CentOS/古いカーネルを削除する方法・package-cleanup - Linux .... https://linux.just4fun.biz/?CentOS/%e5%8f%a4%e3%81%84%e3%82%ab%e3%83%bc%e3%83%8d%e3%83%ab%e3%82%92%e5%89%8a%e9%99%a4%e3%81%99%e3%82%8b%e6%96%b9%e6%b3%95%e3%83%bbpackage-cleanup.

実行結果

現在存在するカーネルの確認

[hoge@orclhost]$ dnf repoquery --installonly
kernel-0:4.18.0-477.21.1.el8_8.x86_64
kernel-0:4.18.0-477.27.1.el8_8.x86_64
kernel-0:4.18.0-513.5.1.el8_9.x86_64
kernel-core-0:4.18.0-477.21.1.el8_8.x86_64
kernel-core-0:4.18.0-477.27.1.el8_8.x86_64
...

Bingチャットから提案されたコマンドの実行結果

[hoge@orclhost]$ sudo dnf remove $(dnf repoquery --installonly --latest-limit=-2 -q)
依存関係が解決しました。
====================================================================================================
 パッケージ                アーキテクチャー   バージョン                 リポジトリー         サイズ
====================================================================================================
削除中:
 kernel                    x86_64             4.18.0-477.21.1.el8_8      @ol8_baseos_latest     0
 kernel-core               x86_64             4.18.0-477.21.1.el8_8      @ol8_baseos_latest    70 M
 kernel-devel              x86_64             4.18.0-477.21.1.el8_8      @ol8_baseos_latest    53 M
 kernel-modules            x86_64             4.18.0-477.21.1.el8_8      @ol8_baseos_latest    25 M
 kernel-uek                x86_64             5.15.0-106.131.4.el8uek    @ol8_UEKR7             0
 kernel-uek-core           x86_64             5.15.0-106.131.4.el8uek    @ol8_UEKR7           106 M
 kernel-uek-devel          x86_64             5.15.0-106.131.4.el8uek    @ol8_UEKR7            87 M
 kernel-uek-modules        x86_64             5.15.0-106.131.4.el8uek    @ol8_UEKR7            60 M

トランザクションの概要
====================================================================================================
削除  8 パッケージ

解放された容量: 400 M
これでよろしいですか? [y/N]: y
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                  1/1
  削除             : kernel-uek-5.15.0-106.131.4.el8uek.x86_64        1/8
  scriptletの実行中: kernel-uek-5.15.0-106.131.4.el8uek.x86_64        1/8
...
削除しました:
  kernel-4.18.0-477.21.1.el8_8.x86_64               kernel-core-4.18.0-477.21.1.el8_8.x86_64            kernel-devel-4.18.0-477.21.1.el8_8.x86_64
  kernel-modules-4.18.0-477.21.1.el8_8.x86_64       kernel-uek-5.15.0-106.131.4.el8uek.x86_64           kernel-uek-core-5.15.0-106.131.4.el8uek.x86_64
  kernel-uek-devel-5.15.0-106.131.4.el8uek.x86_64   kernel-uek-modules-5.15.0-106.131.4.el8uek.x86_64

完了しました!

削除結果

[hoge@orclhost]$ dnf repoquery --installonly
kernel-0:4.18.0-477.27.1.el8_8.x86_64 # kernel-0:4.18.0-477.21.1.el8_8.x86_64が削除され、最新の2世代が残っている
kernel-0:4.18.0-513.5.1.el8_9.x86_64
kernel-core-0:4.18.0-477.27.1.el8_8.x86_64
...