LoginSignup
2
1

More than 3 years have passed since last update.

ローカル環境にyumリポジトリを構築する

Last updated at Posted at 2021-03-02

前置き

インターネットに接続できない環境でも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を可能にするに追加で対応した手順を記載しました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1