前置き
インターネットに接続できない環境でもyum
コマンドでパッケージをインストールできるようにセットアップした。
以下はRHEL 7.9で実施した内容です。
対応内容
rpmパッケージのアップロード
インストールメディアからrpmパッケージをサーバ上にアップロードする。
rpmパッケージはPackages
ディレクトリ内にある。
[root@hogehoge ~]# mkdir /mnt/cdrom
[root@hogehoge ~]#
[root@hogehoge ~]# mount -t iso9660 -o loop /dev/sr0 /mnt/cdrom
[root@hogehoge ~]#
[root@hogehoge ~]# ls -l /mnt/cdrom
合計 974
dr-xr-xr-x. 3 root root 2048 9月 18 04:35 EFI
-r--r--r--. 1 root root 8266 9月 18 03:27 EULA
-r--r--r--. 1 root root 18092 9月 18 03:27 GPL
dr-xr-xr-x. 2 root root 2048 9月 18 04:35 LiveOS
dr-xr-xr-x. 2 root root 946176 9月 18 04:35 Packages
-r--r--r--. 1 root root 3375 7月 14 23:15 RPM-GPG-KEY-redhat-beta
-r--r--r--. 1 root root 3211 7月 14 23:15 RPM-GPG-KEY-redhat-release
-r--r--r--. 1 root root 1796 9月 18 04:35 TRANS.TBL
dr-xr-xr-x. 4 root root 2048 9月 18 04:35 addons
-r--r--r--. 1 root root 1455 9月 18 03:27 extra_files.json
dr-xr-xr-x. 3 root root 2048 9月 18 04:35 images
dr-xr-xr-x. 2 root root 2048 9月 18 04:35 isolinux
-r--r--r--. 1 root root 114 9月 18 04:08 media.repo
dr-xr-xr-x. 2 root root 2048 9月 18 04:35 repodata
[root@hogehoge ~]#
[root@hogehoge ~]# mkdir -p /var/local/repo
[root@hogehoge ~]#
[root@hogehoge ~]# cp -p /mnt/cdrom/Packages/* /var/local/repo
[root@hogehoge ~]#
yumリポジトリの作成
createrepo
コマンドを使用できるようにするため、必要なパッケージをインストールする。
[root@hogehoge ~]# ls -l /var/local/repo | grep -E "createrepo|deltarpm|python-deltarpm"
-r--r--r--. 1 root root 95888 3月 25 2017 createrepo-0.9.9-28.el7.noarch.rpm
-r--r--r--. 1 root root 84048 4月 1 2014 deltarpm-3.6-3.el7.x86_64.rpm
-r--r--r--. 1 root root 32140 4月 1 2014 python-deltarpm-3.6-3.el7.x86_64.rpm
[root@hogehoge ~]#
[root@hogehoge ~]# rpm -ivh /var/local/repo/deltarpm-3.6-3.el7.x86_64.rpm
[root@hogehoge ~]# rpm -ivh /var/local/repo/python-deltarpm-3.6-3.el7.x86_64.rpm
[root@hogehoge ~]# rpm -ivh /var/local/repo/createrepo-0.9.9-28.el7.noarch.rpm
[root@hogehoge ~]#
[root@hogehoge ~]# yum list installed | grep -E "createrepo|delta"
createrepo.noarch 0.9.9-28.el7 installed
deltarpm.x86_64 3.6-3.el7 installed
python-deltarpm.x86_64 3.6-3.el7 installed
[root@hogehoge ~]#
createrepo
コマンドでリポジトリを作成。
事前にrpmパッケージを上げておいたディレクトリを指定する。
処理が完了すると、repodata
ディレクトリが作成される。
[root@hogehoge ~]# createrepo -v /var/local/repo
Spawning worker 0 with 654 pkgs
Spawning worker 1 with 654 pkgs
Spawning worker 2 with 654 pkgs
Spawning worker 3 with 654 pkgs
Spawning worker 4 with 654 pkgs
Spawning worker 5 with 654 pkgs
Spawning worker 6 with 653 pkgs
Spawning worker 7 with 653 pkgs
Worker 0: reading 389-ds-base-1.3.10.2-6.el7.x86_64.rpm
Worker 1: reading 389-ds-base-libs-1.3.10.2-6.el7.x86_64.rpm
~ 中略 ~
Worker 4: reading zziplib-0.13.62-12.el7.i686.rpm
Worker 5: reading zziplib-0.13.62-12.el7.x86_64.rpm
Workers Finished
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Starting other db creation: Tue Jan 23 13:45:34 2021
Ending other db creation: Tue Jan 23 13:45:35 2021
Starting filelists db creation: Tue Jan 23 13:45:35 2021
Ending filelists db creation: Tue Jan 23 13:45:37 2021
Starting primary db creation: Tue Jan 23 13:45:37 2021
Ending primary db creation: Tue Jan 23 13:45:40 2021
Sqlite DBs complete
[root@hogehoge ~]#
[root@hogehoge ~]# ls -ld /var/local/repo/repodata
drwxr-xr-x. 2 root root 4096 1月 23 13:45 /var/local/repo/repodata
[root@hogehoge ~]#
yum設定ファイルの編集
yumの設定ファイルを作成する。
baseurl
にはrpmパッケージを上げておいたディレクトリを指定する。
[root@hogehoge ~]# vi /etc/yum.repos.d/local.repo
/etc/yum.repos.d/local.repo
[local]
name=local repo
baseurl=file:///var/local/repo
enabled=1
gpgcheck=0
RHELデフォルトの設定ファイルをそのままにしておくと、外部に問い合わせにいこうとしてエラーを吐くので無効化しておく。
enabled
の値が1
は有効、0
が無効となる。
[root@hogehoge ~]# sed -i.org 's/enabled = 1/enabled = 0/g' /etc/yum.repos.d/redhat.repo
[root@hogehoge ~]#
[root@hogehoge ~]# yum clean all
読み込んだプラグイン:product-id, search-disabled-repos, subscription-manager
リポジトリーを清掃しています: local
[root@hogehoge ~]#
[root@hogehoge ~]# yum repolist enabled
読み込んだプラグイン:product-id, search-disabled-repos, subscription-manager
local | 2.9 kB 00:00:00
local/primary_db | 4.3 MB 00:00:00
リポジトリー ID リポジトリー名 状態
local local repo 5,230
repolist: 5,230
[root@hogehoge ~]#
以上です。
追記
[2021/03/10 追記]
こちらの手順だけではyum groupinstall
が実行できなかった。。
ローカル環境のyumリポジトリでgroupinstallを可能にするに追加で対応した手順を記載しました。