近年のモダン開発はインターネットに接続されることが前提ですが、VMware製品を導入するような大手企業はインターネットに接続されていない環境での構築を強いられるのは珍しいことではありません。このような環境で素早く構築ができるよう、閉じた環境でRockyLinuxのリポジトリを構築する方法をまとめます。
前提
参照資料
動作確認済環境
- Rocky Linux 8.6
- Rocky Linux 9.0
isoファイルを使用する場合
isoファイルのマウント
isoファイルを適当な位置にマウントします。以下、/mnt/にマウントすることを前提として説明をします。
cd /var/tmp/ wget https://download.rockylinux.org/pub/rocky/9/isos/x86_64/Rocky-9.0-x86_64-dvd.iso mount /var/tmp/Rocky-9.0-x86_64-dvd.iso /mnt
appstream, baseos, extras無効化
インターネットからパッケージをダウンロードするリポジトリを無効にします。まずは、デフォルトで有効になっているリポジトリを確認します。
[root@rocky050 ~]# dnf repolist repo id repo name appstream Rocky Linux 9 - AppStream baseos Rocky Linux 9 - BaseOS extras Rocky Linux 9 - Extras [root@rocky050 ~]#
appstream, baseos, extrasを無効にします。
dnf config-manager --disable appstream dnf config-manager --disable baseos dnf config-manager --disable extras
リポジトリの定義
ISOファイルを参照するリポジトリを作成します。
cat << 'EOF' > /etc/yum.repos.d/Rocky-Linux-Media.repo [media-baseos] name=Rocky Linux $releasever - Media - BaseOS baseurl=file:///mnt/BaseOS gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 [media-appstream] name=Rocky Linux $releasever - Media - AppStream baseurl=file:///mnt/AppStream gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 EOF
動作確認
ローカルのisoファイルからパッケージインストール可能なことを確認します。
[root@rocky050 ~]# dnf install httpd Rocky Linux 9 - Media - BaseOS 13 MB/s | 1.7 MB 00:00 Rocky Linux 9 - Media - AppStream 23 MB/s | 6.0 MB 00:00 Last metadata expiration check: 0:00:01 ago on Wed 27 Jul 2022 07:07:02 PM JST. Dependencies resolved. ================================================================================ Package Arch Version Repository Size ================================================================================ Installing: httpd x86_64 2.4.51-7.el9_0 media-appstream 1.4 M Installing dependencies: apr x86_64 1.7.0-11.el9 media-appstream 123 k apr-util x86_64 1.6.1-20.el9 media-appstream 94 k apr-util-bdb x86_64 1.6.1-20.el9 media-appstream 13 k httpd-filesystem noarch 2.4.51-7.el9_0 media-appstream 14 k httpd-tools x86_64 2.4.51-7.el9_0 media-appstream 81 k mailcap noarch 2.1.49-5.el9 media-baseos 32 k rocky-logos-httpd noarch 90.9-1.el9 media-appstream 24 k Installing weak dependencies: apr-util-openssl x86_64 1.6.1-20.el9 media-appstream 15 k mod_http2 x86_64 1.15.19-2.el9 media-appstream 149 k mod_lua x86_64 2.4.51-7.el9_0 media-appstream 61 k Transaction Summary ================================================================================ Install 11 Packages Total size: 2.0 M Installed size: 6.0 M Is this ok [y/N]: y <omitted>
HTTPで公開する場合
閉じられた環境でisoファイルを全部のOSに配布するのは非常に時間がかかります。パッケージを公開したHTTPサーバを1台だけ構築して、そのサーバからパッケージをダウンロードさせるようにすると効率的です。
reposyncと呼ばれるリポジトリをそのままコピーする仕組みをありますが、おそらくVMware製品を使用するプロジェクトはお堅い(例:インターネット接続不可)場合も予想され、reposyncに頼らずに構築できるようになった方が安心です。
httpdのインストール
何らかの方法でHTTPサーバをインストールします。前述のISOファイルを用いる方法でもRPMパッケージから直接インストールする方法でも、どちらでも差し支えありません。また、apacheを使用する必要はなく、nginxなどお好みのHTTPサーバを使用して差し支えございません。
dnf install httpd systemctl enable httpd.service --now
パッケージの公開
HTTPで公開されているディレクトリへパッケージを配置します。
mkdir /var/www/html/rocky umount /mnt mount /var/tmp/Rocky-9.0-x86_64-dvd.iso /var/www/html/rocky/
リポジトリの定義
httpdを参照するリポジトリを定義します。下記ハイライトのIPアドレス部分は環境に応じて変更ください。
rm -f /etc/yum.repos.d/Rocky-Linux-Media.repo cat << 'EOF' > /etc/yum.repos.d/Rocky-Linux-Internal.repo [internal-baseos] name=Rocky Linux $releasever - Internal - BaseOS baseurl=http://192.168.20.50/rocky/BaseOS gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 [internal-appstream] name=Rocky Linux $releasever - Internal - AppStream baseurl=http://192.168.20.50/rocky/AppStream gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9 EOF
動作確認
LAN内のHTTPサーバからパッケージインストール可能なことを確認します。
[root@rocky050 ~]# dnf install mysql Rocky Linux 9 - Internal - BaseOS 40 MB/s | 1.7 MB 00:00 Rocky Linux 9 - Internal - AppStream 68 MB/s | 6.0 MB 00:00 Dependencies resolved. ============================================================================================================================================================================================================ Package Architecture Version Repository Size ============================================================================================================================================================================================================ Installing: mysql x86_64 8.0.28-1.el9 internal-appstream 2.6 M Installing dependencies: mariadb-connector-c-config noarch 3.2.6-1.el9_0 internal-appstream 9.8 k mysql-common x86_64 8.0.28-1.el9 internal-appstream 70 k Transaction Summary ============================================================================================================================================================================================================ Install 3 Packages Total download size: 2.7 M Installed size: 59 M Is this ok [y/N]: <omitted>