セキュリティの関係でインターネットに接続できない環境では、yumコマンドやdnfコマンドなどのパッケージ管理コマンドをそのまま使うことができません。

ローカルリポジトリを作成することで、そういった環境でもパッケージによるインストールを行うことができます。

ここでは、ディスクやISOファイルをリポジトリとして登録する方法について記載します。

ディスクのマウント

まずはブロックデバイスの情報を取得します。

lsblkコマンドを実行することで情報を取得できます。

# lsblk

すると、以下のように出力されます。

sr0                 11:0    1  11.4G  0 rom

次に、/dev/sr0の情報を取得します。

blkidコマンドを実行すると、挿入されているディスクの情報を取得できます。

Bash
blkid /dev/sr0

マウントポイントを作成し、マウントします。

mountコマンドのオプションでは、読み込み専用(ro)をつけておかないとエラーになります。

Bash
mkdir /mnt/dvdrepo
mount -o loop,ro -t iso9660 /dev/sr0 /mnt/dvdrepo

リポジトリの作成

/etc/yum.repos.dの中にdvd.repoを作成し、以下のように記載します。
それぞれ、BaseOsとAppStreamにあるパッケージを参照するように設定しています。

Bash
[local_dvd_BaseOS]
name=Alma Linux 9 x86_64 DVD - BaseOs
baseurl=file:///mnt/dvdrepo/BaseOS/
gpgcheck=0
enabled=0
gpgkey=file:///mnt/dvdrepo/RPM-GPG-KEY-AlmaLinux-9

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

マウントしたディスクの内容は以下の通りです。AppStreamとBaseOSのパッケージが格納されたディレクトリとGPG鍵が配置されています。

Bash
# ls -lh /mnt/dvdrepo/
合計 36K
dr-xr-xr-x 4 root root 2.0K  5 16 23:23 AppStream
dr-xr-xr-x 4 root root 2.0K  5 16 23:23 BaseOS
dr-xr-xr-x 3 root root 2.0K  5 16 23:23 EFI
-r--r--r-- 1 root root  290  5 16 22:47 EULA
-r--r--r-- 1 root root  18K  5 16 22:47 LICENSE
-r--r--r-- 1 root root 3.1K  5 16 22:47 RPM-GPG-KEY-AlmaLinux-9
-r--r--r-- 1 root root 1.6K  5 16 23:23 TRANS.TBL
-r--r--r-- 1 root root  719  5 16 23:22 extra_files.json
dr-xr-xr-x 3 root root 2.0K  5 16 23:23 images
dr-xr-xr-x 2 root root 2.0K  5 16 23:23 isolinux
-r--r--r-- 1 root root   86  5 16 23:22 media.repo

リポジトリを作成したら、クリーンアップします。

Bash
dnf clean all

–enablerepoオプションでリポジトリを指定してdnfコマンドを実行することで、エラーせずにパッケージを使用することができます。

Bash
dnf update -y --disablerepo=\* --enablerepo=local_dvd_*

この他にも、あらかじめrpmファイルをダウンロードしておいたディレクトリを指定してリポジトリを作成する方法もありますが今回はここまで。

ここまでお読みいただきありがとうございました。