CentOS 8.3にローカルリポジトリ作成

# はじめに
インターネット接続できない環境でLinux構築する必要があり、CentOS 8.3にローカルリポジトリを作成した手順の備忘録です。
CentOSはDVDメディア等を使用して初期インストールを行います（割愛）。今回はisoファイルのをマウントしてローカルリポジトリを作成します。

# isoファイルのマウント
isoファイルをtmp配下に置いて、/media/CentOS/にマウントします。このパスなのは、後で編集するrepoファイル内のデフォルトパスを流用するためです。

~~~console:
# mount /tmp/CentOS-8.3.2011-x86_64-dvd1.iso /media/CentOS
# ls /media/CentOS
AppStream  BaseOS  EFI  LICENSE  TRANS.TBL  images  isolinux  media.repo
~~~

この時点でリポジトリ一覧は下記のようになっています。すべて無効化してMediaリポジトリを有効化していきます。

~~~console:
# dnf repolist
repo id                          repo の名前
appstream                        CentOS Linux 8 - AppStream
baseos                           CentOS Linux 8 - BaseOS
extras                           CentOS Linux 8 - Extras
~~~

# appstream、baseos、extras無効化
repoファイルを編集してインターネットリポジトリを無効化します。

~~~/etc/yum.repos.d/CentOS-Linux-AppStream.repo:
# CentOS-Linux-AppStream.repo
[appstream]
name=CentOS Linux $releasever - AppStream
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=0  ##ここを"0"に変更した
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
~~~

~~~/etc/yum.repos.d/CentOS-Linux-BaseOS.repo:
[baseos]
name=CentOS Linux $releasever - BaseOS
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=0  ##ここを"0"に変更した
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
~~~

~~~/etc/yum.repos.d/CentOS-Linux-Extras.repo:
[extras]
name=CentOS Linux $releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/extras/$basearch/os/
gpgcheck=1
enabled=0  ##ここを"0"に変更した
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
~~~


# media repo有効化
Mediaリポジトリを有効化します。

~~~/etc/yum.repos.d/CentOS-Linux-Media.repo:
[media-baseos]
name=CentOS Linux $releasever - Media - BaseOS
baseurl=file:///media/CentOS/BaseOS  ##この行のコメントアウトを解除
#        file:///media/cdrom/BaseOS
#        file:///media/cdrecorder/BaseOS
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

[media-appstream]
name=CentOS Linux $releasever - Media - AppStream
baseurl=file:///media/CentOS/AppStream  ##この行のコメントアウトを解除
#        file:///media/cdrom/AppStream
#        file:///media/cdrecorder/AppStream
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
~~~

ここまででローカルリポジトリが使えるようになりました。

# dnfでインストール
では最後にvsftpdをインストールしてみます。

~~~console:
# dnf install vsftpd
CentOS Linux 8 - Media - BaseOS                    123 MB/s | 2.3 MB     00:00
CentOS Linux 8 - Media - AppStream                 123 MB/s | 6.2 MB     00:00
依存関係が解決しました。
===================================================================================
 パッケージ     Arch           バージョン            リポジトリー            サイズ
===================================================================================
インストール:
 vsftpd         x86_64         3.0.3-32.el8          media-appstream         180 k

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

合計サイズ: 180 k
インストール済みのサイズ: 343 k
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
以下略
~~~

# おわりに
無事にローカルリポジトリを有効化してdnfでインストールすることができました。