AlmaLinux9.2にてISOファイルによるdnfインストールを実施する

インターネットに接続していない、ローカル環境下でISOファイルによるdfnインストールを実施します。

# 環境
AlmaLinux release 9.2 (Turquoise Kodkod)
AlmaLinux-9.2-x86_64-dvd.iso

# 1.ISOファイルの接続
ISOファイル(CD/DVD)をサーバ機器に接続します。
私の環境はESXi上のVMであるため、ISOファイルを接続します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/201787/cdde3e86-c89a-0597-2ccd-3e8f94883850.png)

# 2.ISOファイルのマウント
次に、OS側からマウントを実行します。

まずはマウント先ディレクトリを作成します。

```text:ディレクトリ作成
# mkdir /mnt/cdrom
```

続いて、作成したディレクトリにCD/DVDドライブをマウントします。

```text:CD/DVDマウント
# mount -t iso9660 /dev/cdrom /mnt/cdrom
mount: /mnt/cdrom: 警告: ソースは書き込み禁止です、読み込み専用でマウントします.
```

# 3.ローカルリポジトリファイルの作成

CD/DVD内のパッケージを参照するように、リポジトリファイルを作成します。

```text:リポジトリファイル作成
# touch /etc/yum.repos.d/local_dvd.repo
# vi /etc/yum.repos.d/local_dvd.repo
```

リポジトリファイルの内容は以下で設定します。
```text:/etc/yum.repos.d/local_dvd.repo
[local_dvd_BaseOS]
name=AlmaLinux 9 x86_64 DVD - BaseOS
baseurl=file:///mnt/cdrom/BaseOS/
enabled=0
gpgcheck=0
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-AlmaLinux-9

[local_dvd_AppStream]
name=AlmaLinux 9 x86_64 DVD - AppStream
baseurl=file:///mnt/cdrom/AppStream/
enabled=0
gpgcheck=0
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-AlmaLinux-9
```


>**BaseOS**
BaseOS リポジトリーには、すべてのインストールの基盤となるオペレーティングシステム機能のコアセットが含まれています。このコンテンツは RPM パッケージの形式で入手でき、Red Hat Enterprise Linux の以前のリリースと同様のサポート条件が適用されます。
>
>**AppStream**
AppStream リポジトリーには、さまざまなワークロードとユースケースをサポートする追加のユーザー空間アプリケーション、ランタイム言語、およびデータベースが同梱されます。AppStream のコンテンツ形式には RPM パッケージと、RPM 形式の拡張 (モジュール と呼ばれます) の 2 つが利用できます。

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/installing_managing_and_removing_user-space_components/using-appstream_using-appstream


# 4.dnfを使用したインストール

まずはインストール前に`clean all`を実行しておきます。
```text:clean_all
# dnf clean all
0 ファイルが削除されました
```

<br>

インストール前に`list`コマンドを利用して接続確認を行います。

**`--disablerepo=\* `**　既存の全てのリポジトリを使用しません。
**`--enablerepo=local_dvd_* `**　ローカルリポジトリを使用します(local_dvd_BaseOS、local_dvd_AppStream)。

```text:list
# dnf --disablerepo=\* --enablerepo=local_dvd_* list

AlmaLinux 9 x86_64 DVD - BaseOS        19 MB/s | 1.9 MB     00:00
AlmaLinux 9 x86_64 DVD - AppStream     28 MB/s | 6.9 MB     00:00

インストール済みパッケージ
NetworkManager.x86_64                    1:1.42.2-1.el9                   @anaconda
NetworkManager-config-server.noarch      1:1.42.2-1.el9                   @anaconda
NetworkManager-libnm.x86_64              1:1.42.2-1.el9                   @anaconda
NetworkManager-team.x86_64               1:1.42.2-1.el9                   @anaconda
NetworkManager-tui.x86_64                1:1.42.2-1.el9                   @anaconda
PackageKit.x86_64                        1.2.4-2.el9                      @AppStream
PackageKit-glib.x86_64                   1.2.4-2.el9                      @AppStream

＜中略＞

利用可能なパッケージ
389-ds-base.x86_64                       2.2.4-3.el9                      local_dvd_AppStream
389-ds-base-libs.x86_64                  2.2.4-3.el9                      local_dvd_AppStream
Box2D.i686                               2.4.1-7.el9                      local_dvd_AppStream
Box2D.x86_64                             2.4.1-7.el9                      local_dvd_AppStream
CUnit.i686                               2.1.3-25.el9                     local_dvd_AppStream
CUnit.x86_64                             2.1.3-25.el9                     local_dvd_AppStream
HdrHistogram_c.i686                      0.11.0-6.el9                     local_dvd_AppStream
ModemManager.x86_64                      1.20.2-1.el9                     local_dvd_BaseOS
ModemManager-glib.i686                   1.20.2-1.el9                     local_dvd_BaseOS
ModemManager-glib.x86_64                 1.20.2-1.el9                     local_dvd_BaseOS
NetworkManager-adsl.x86_64               1:1.42.2-1.el9                   local_dvd_BaseOS
NetworkManager-bluetooth.x86_64          1:1.42.2-1.el9                   local_dvd_BaseOS

＜後略＞
```

<br>

インストールを実施してみます。
```text:list
# dnf --disablerepo=\* --enablerepo=local_dvd_* install -y bind
依存関係が解決しました。
=================================================================================================================
 パッケージ                      アーキテクチャー      バージョン              リポジトリー                サイズ
=================================================================================================================
インストール:
 bind                            x86_64                32:9.16.23-11.el9       local_dvd_AppStream         488 k
依存関係のインストール:
 bind-dnssec-doc                 noarch                32:9.16.23-11.el9       local_dvd_AppStream          45 k
 python3-bind                    noarch                32:9.16.23-11.el9       local_dvd_AppStream          61 k
 python3-ply                     noarch                3.11-14.el9             local_dvd_BaseOS            103 k
弱い依存関係のインストール:
 bind-dnssec-utils               x86_64                32:9.16.23-11.el9       local_dvd_AppStream         113 k

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

《中略》

完了しました!
```

インストールが問題なく成功しました。


# 参考
https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/8/html/installing_managing_and_removing_user-space_components/using-appstream_using-appstream