定時帰る術-Linux パッケージ管理（dnfコマンド）

dnfとyumが同じだけと、dnfを使うようにしよう。
```
[root@test ~]# which yum
/usr/bin/yum
[root@test ~]# ll /usr/bin/yum
lrwxrwxrwx. 1 root root 5  3月  9  2021 /usr/bin/yum -> dnf-3
[root@test ~]# which dnf
/usr/bin/dnf
[root@test ~]# ll /usr/bin/dnf
lrwxrwxrwx. 1 root root 5  3月  9  2021 /usr/bin/dnf -> dnf-3
[root@test ~]# which dnf-3
/usr/bin/dnf-3
[root@test ~]# ll /usr/bin/dnf-3
-rwxr-xr-x. 1 root root 1954  3月  9  2021 /usr/bin/dnf-3
```


dnfをやる前に、リポジトリがちゃんとできてるかを確認しよう。
方法が２つがあって、/etc/yum.confに書くか、/etc/yum.repos.d/配下に.repoファイルを格納するか
**RHEL的には、後者（/etc/yum.repos.d/配下に.repoファイルを格納する）の方が推奨されてるため、/etc/yum.confのこともうしらなくていいだろう**

### ↓がDVDからインストールできるようにする.repoファイル
川口的には、↓を確認した方がいいと思う
[XXX]：リポジトリ名。↓だと[InstallMedia-BaseOS]
enabled：有効になってるか。1：有効、0：無効
baseurl：DVDからインストールするため、isoファイルをマウントする必要があり、そのマウント先の設定。
↓だと/mediaなので、↓のrepoファイルを使って、dnf操作する前、isoファイルをマウントする必要。
コマンド例：mount /dev/cdrom /media

```
[root@test yum.repos.d]# cat redhat.repo
#
# Certificate-Based Repositories
# Managed by (rhsm) subscription-manager
#
# *** This file is auto-generated.  Changes made here will be over-written. ***
# *** Use "subscription-manager repo-override --help" if you wish to make changes. ***
#
# If this file is empty and this system is subscribed consider
# a "yum repolist" to refresh available repos
#
[InstallMedia-BaseOS]
name=Red Hat Enterprise Linux 8 - BaseOS
metadata_expire=-1
gpgcheck=1
enabled=1
baseurl=file:///media/BaseOS/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[InstallMedia-AppStream]
name=Red Hat Enterprise Linux 8 - AppStream
metadata_expire=-1
gpgcheck=1
enabled=1
baseurl=file:///media/AppStream/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[root@test yum.repos.d]#
```

### パッケージ検索
正規表現で検索こともできる
```
[root@test ~]# dnf search *ssh*
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

メタデータの期限切れの最終確認: 5:21:24 時間前の 2023年10月26日 06時04分31秒 に実施しました。
====================================================== 名前 & 概要 一致: *ssh* =======================================================
fence-agents-ilo-ssh.noarch : Fence agents for HP iLO devices over SSH
libssh.x86_64 : A library implementing the SSH protocol
libssh.i686 : A library implementing the SSH protocol
libssh-config.noarch : Configuration files for libssh
libssh-devel.i686 : Development files for libssh
libssh-devel.x86_64 : Development files for libssh
nbdkit-ssh-plugin.x86_64 : SSH plugin for nbdkit
openssh.x86_64 : An open source implementation of SSH protocol version 2
openssh-askpass.x86_64 : A passphrase dialog for OpenSSH and X
openssh-clients.x86_64 : An open source SSH client applications
openssh-keycat.x86_64 : A mls keycat backend for openssh
openssh-ldap.x86_64 : A LDAP support for open source SSH server daemon
openssh-server.x86_64 : An open source SSH server daemon
pam_ssh_agent_auth.x86_64 : PAM module for authentication with ssh-agent
qemu-kvm-block-ssh.x86_64 : QEMU SSH block driver
========================================================== 名前 一致: *ssh* ==========================================================
openssh-cavs.x86_64 : CAVS tests for FIPS validation
```

### リポジトリの状態（有効か無効）を表示
```
[root@test ~]# dnf repolist --all
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

repo id                                                 repo の名前                                                             状態
InstallMedia-AppStream                                  Red Hat Enterprise Linux 8 - AppStream                                  有効化
InstallMedia-BaseOS                                     Red Hat Enterprise Linux 8 - BaseOS                                     有効化

```

### リポジトリの詳細を表示
```
[root@test ~]# dnf info sysstat
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

メタデータの期限切れの最終確認: 5:25:48 時間前の 2023年10月26日 06時04分31秒 に実施しました。
インストール済みパッケージ
名前         : sysstat
バージョン   : 11.7.3
リリース     : 5.el8
Arch         : x86_64
サイズ       : 1.4 M
ソース       : sysstat-11.7.3-5.el8.src.rpm
リポジトリー : @System
repo から    : InstallMedia-AppStream
概要         : Collection of performance monitoring tools for Linux
URL          : http://sebastien.godard.pagesperso-orange.fr/
ライセンス   : GPLv2+
説明         : The sysstat package contains the sar, sadf, mpstat, iostat, tapestat,
             : pidstat, cifsiostat and sa tools for Linux.
             : The sar command collects and reports system activity information.
             : The information collected by sar can be saved in a file in a binary
             : format for future inspection. The statistics reported by sar concern
             : I/O transfer rates, paging activity, process-related activities,
             : interrupts, network activity, memory and swap space utilization, CPU
             : utilization, kernel activities and TTY statistics, among others. Both
             : UP and SMP machines are fully supported.
             : The sadf command may  be used to display data collected by sar in
             : various formats (CSV, XML, etc.).
             : The iostat command reports CPU utilization and I/O statistics for disks.
             : The tapestat command reports statistics for tapes connected to the system.
             : The mpstat command reports global and per-processor statistics.
             : The pidstat command reports statistics for Linux tasks (processes).
             : The cifsiostat command reports I/O statistics for CIFS file systems.

```
### グループパッケージ情報を表示
リプレース調査する際に、使うかもしれない
```
[root@test ~]# dnf group list
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

メタデータの期限切れの最終確認: 5:26:43 時間前の 2023年10月26日 06時04分31秒 に実施しました。
利用可能な環境グループ:
   サーバー (GUI 使用)
   最小限のインストール
   ワークステーション
   カスタムオペレーティングシステム
   仮想化ホスト
インストール済みの環境グループ:
   サーバー
インストール済みのグループ:
   コンテナー管理
   ヘッドレス管理
利用可能なグループ:
   レガシーな UNIX 互換性
   開発ツール
   .NET Core 開発
   グラフィカル管理ツール
   ネットワークサーバー
   RPM 開発ツール
   科学的サポート
   セキュリティーツール
   スマートカードサポート
   システムツール
```
   
### ファイル名(インストールしたいコマンド)でパッケージを探す
```
[root@test ~]# dnf provides iostat
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

メタデータの期限切れの最終確認: 5:30:51 時間前の 2023年10月26日 06時04分31秒 に実施しました。
sysstat-11.7.3-5.el8.x86_64 : Collection of performance monitoring tools for Linux
Repo        : @System
一致:
ファイル名    : /usr/bin/iostat

sysstat-11.7.3-5.el8.x86_64 : Collection of performance monitoring tools for Linux
Repo        : InstallMedia-AppStream
一致:
ファイル名    : /usr/bin/iostat
```

### パッケージをインストールする
```
[root@test ~]# dnf install telnet
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

メタデータの期限切れの最終確認: 5:32:44 時間前の 2023年10月26日 06時04分31秒 に実施しました。
依存関係が解決しました。
======================================================================================================================================
 パッケージ                アーキテクチャー          バージョン                       リポジトリー                              サイズ
======================================================================================================================================
インストール:
 telnet                    x86_64                    1:0.17-76.el8                    InstallMedia-AppStream                     72 k

トランザクションの概要
======================================================================================================================================
インストール  1 パッケージ

合計サイズ: 72 k
インストール後のサイズ: 119 k
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                                                                              1/1
  インストール中   : telnet-1:0.17-76.el8.x86_64                                                                                  1/1
  scriptletの実行中: telnet-1:0.17-76.el8.x86_64                                                                                  1/1
  検証             : telnet-1:0.17-76.el8.x86_64                                                                                  1/1
Installed products updated.

インストール済み:
  telnet-1:0.17-76.el8.x86_64

完了しました!
[root@test ~]#
```

### 全パッケージ（OS）更新があるかをチェックする
```
[root@test ~]# dnf check-update
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

メタデータの期限切れの最終確認: 5:36:15 時間前の 2023年10月26日 06時04分31秒 に実施しました。
```


### 対象パッケージだけをアップデートする。
```
[root@test ~]# dnf update telnet
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

メタデータの期限切れの最終確認: 5:38:50 時間前の 2023年10月26日 06時04分31秒 に実施しました。
依存関係が解決しました。
行うべきことはありません。
完了しました!
```

### OSをアップデートする
```
[root@test ~]# dnf update
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

メタデータの期限切れの最終確認: 5:40:05 時間前の 2023年10月26日 06時04分31秒 に実施しました。
依存関係が解決しました。
行うべきことはありません。
完了しました!
```

### パッケージ削除
```
[root@test ~]# dnf remove telnet
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

依存関係が解決しました。
======================================================================================================================================
 パッケージ               アーキテクチャー         バージョン                         リポジトリー                              サイズ
======================================================================================================================================
削除中:
 telnet                   x86_64                   1:0.17-76.el8                      @InstallMedia-AppStream                   119 k

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

解放された容量: 119 k
これでよろしいですか? [y/N]: y
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                                                                              1/1
  削除             : telnet-1:0.17-76.el8.x86_64                                                                                  1/1
  scriptletの実行中: telnet-1:0.17-76.el8.x86_64                                                                                  1/1
  検証             : telnet-1:0.17-76.el8.x86_64                                                                                  1/1
Installed products updated.

削除しました:
  telnet-1:0.17-76.el8.x86_64

完了しました!
```


### dnfの実行履歴を表示
```
[root@test ~]# dnf history
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

ID     | コマンドライン                                                                  | 日時             | 動作           | 変更さ
--------------------------------------------------------------------------------------------------------------------------------------
     5 | remove telnet                                                                   | 2023-10-26 11:45 | Removed        |    1
     4 | install telnet                                                                  | 2023-10-26 11:37 | Install        |    1
     3 | -y install httpd                                                                | 2023-10-16 13:22 | Install        |    9
     2 | -y install sysstat                                                              | 2023-10-11 10:54 | Install        |    2
     1 |                                                                                 | 2023-09-26 16:42 | Install        |  631 EE

```