Engineering Note

プログラミングなどの技術的なメモ

CentOS7(RHEL7)でISOをyumリポジトリにする

centos_icon

Red Hat系のLinuxディストリビューションでは、rpmという拡張子のパッケージファイルが採用され、これらをインストールなどする際にrpmコマンドが利用されますが、依存性の解決などを自動的に行うためにrpmコマンドをラップした高機能なyumコマンドが利用されます。

yumコマンドでは、登録してあるリポジトリを参照し、インターネットを介してパッケージ管理を行いますが、場合によってはセキュリティ上の問題で外部のネットワークに接続できないケースもあります。

その際にインストール用のISOメディアをyumリポジトリとして利用する方法があります。

今回はこのリポジトリの設定方法について学んでいきます。

 

 

事前準備

事前準備として、以下の構成でCentOSがインストール済であるものとします。

  • VM:Virtual Box6.0
  • ホストOS:Windows10
  • ゲストOS:CentOS7(Minimal Install)

 

ディスクの挿入

CentoOS7を起動後に、Virtual Box管理画面から対象ゲストOSの設定画面を開き、左ペインのストレージからコントローラ:IDE - 空(ディスク)を選択します。

 

fig01. ディスク挿入

fig01. ディスク挿入


 

光学ドライブのディスクアイコンをクリックし、対象のISOを選択します。

 

fig02. ディスク挿入

fig.2 ディスク挿入


 

コントローラ:IDEのディスクに対象のISOが挿入されたら、OKをクリックし設定画面を閉じます。

 

fig03. ディスク挿入

fig.3 ディスク挿入

 

ディスクをマウント

CentOS7にログインし、/media直下にマウント先のディレクトリを作成します。

 

 > mkdir /media/CentOS7
 > mount -oro /dev/cdrom /media/CentOS7
 > ls /media/CentOS7/
 CentOS_BuildTag  EULA  LiveOS    RPM-GPG-KEY-CentOS-7          TRANS.TBL  isolinux
 EFI              GPL   Packages  RPM-GPG-KEY-CentOS-Testing-7  images     repodata

 

上記のPackagesディレクトリに実際のrpmファイルが格納されています。

なお、/dev/cdrom/dev/sr0シンボリックリンクになっているため、以下のようにsr0を指定しても問題ありません。

 

 > mount -oro /dev/sr0 /media/CentOS7
 > ls -al /dev/cdrom
 lrwxrwxrwx 1 root root 3  3月  7 07:13 /dev/cdrom -> sr0

 

リポジトリ設定ファイルの作成

リポジトリ先の詳細情報を以下のファイルに記載します。

 

 > vi /etc/yum.repos.d/CentOS7.repo
 ------------------------------
 [CentOS7]
 name=CentOS7_ISO
 baseurl=file:///media/CentOS7
 gpgcheck=1
 enabled=1
 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
 ------------------------------

 yumのキャッシュ削除

上記のrepoファイルを作成したら、yum cleanコマンドで一度キャッシュを削除します。

 

 > yum clean all
 読み込んだプラグイン:fastestmirror 
 リポジトリーを清掃しています: CentOS7 base extras mysql-connectors-community mysql-tools-community mysql57-community updates
 Cleaning up list of fastest mirrors
 yum repolist
 読み込んだプラグイン:fastestmirror
 Determining fastest mirrors
  * base: ftp.iij.ad.jp
  * extras: ftp.iij.ad.jp
  * updates: ftp.iij.ad.jp
 CentOS7                                                                                                  | 3.6 kB  00:00:00     
 base                                                                                                     | 3.6 kB  00:00:00     
 extras                                                                                                   | 2.9 kB  00:00:00     
 mysql-connectors-community                                                                               | 2.5 kB  00:00:00     
 mysql-tools-community                                                                                    | 2.5 kB  00:00:00     
 mysql57-community                                                                                        | 2.5 kB  00:00:00     
 updates                                                                                                  | 2.9 kB  00:00:00     
 (1/9): CentOS7/group_gz                                                                                  | 165 kB  00:00:00     
 (2/9): CentOS7/primary_db                                                                                | 3.2 MB  00:00:00     
 (3/9): mysql-connectors-community/x86_64/primary_db                                                      |  53 kB  00:00:00     
 (4/9): base/7/x86_64/group_gz                                                                            | 165 kB  00:00:00     
 (5/9): mysql-tools-community/x86_64/primary_db                                                           |  69 kB  00:00:00     
 (6/9): extras/7/x86_64/primary_db                                                                        | 164 kB  00:00:00     
 (7/9): mysql57-community/x86_64/primary_db                                                               | 198 kB  00:00:00     
 (8/9): updates/7/x86_64/primary_db                                                                       | 6.7 MB  00:00:01     
 (9/9): base/7/x86_64/primary_db                                                                          | 6.0 MB  00:00:05      
 リポジトリー ID                        リポジトリー名                  状態
 CentOS7                                CentOS7_ISO                     4,067
 base/7/x86_64                          CentOS-7 - Base                 10,097
 extras/7/x86_64                        CentOS-7 - Extras               335
 mysql-connectors-community/x86_64      MySQL Connectors Community      141
 mysql-tools-community/x86_64           MySQL Tools Community           105
 mysql57-community/x86_64               MySQL 5.7 Community Server      404
 updates/7/x86_64                       CentOS-7 - Updates              1,487
 repolist: 16,636

 

パッケージの検索

それでは、登録したリポジトリからパッケージを検索してみます。

以下のオプションから一度すべてのリポジトリを一時的に無効にした上で、上記で追加したリポジトリを指定して検索をします。

 

 > yum --disablerepo=\* --enablerepo=CentOS7 search unzip
 読み込んだプラグイン:fastestmirror
 Loading mirror speeds from cached hostfile
 ====================================================== 
 N/S matched: unzip 
 ======================================================
 unzip.x86_64 : A utility for unpacking zip files

 Name and summary matches only, use "search all" for everything.
 
 > yum --disablerepo=\* --enablerepo=CentOS7 info unzip
 読み込んだプラグイン:fastestmirror
 Loading mirror speeds from cached hostfile 
 インストール済みパッケージ
 名前                : unzip
 アーキテクチャー    : x86_64
 バージョン          : 6.0
 リリース            : 20.el7
 容量                : 365 k
 リポジトリー        : installed
 提供元リポジトリー  : base
 要約                : A utility for unpacking zip files
 URL                 : http://www.info-zip.org/UnZip.html
 ライセンス          : BSD
 説明                : The unzip utility is used to list, test, or extract files from a zip
                     : archive.  Zip archives are commonly found on MS-DOS systems.  The zip
                     : utility, included in the zip package, creates zip archives.  Zip and
                     : unzip are both compatible with archives created by PKWARE(R)'s PKZIP
                     : for MS-DOS, but the programs' options and default behaviors do differ
                     : in some respects.
                     : 
                     : Install the unzip package if you need to list, test or extract files from
                     : a zip archive.

問題なくリポジトリを追加できたことが確認できました。

 

参考書籍

新しいLinuxの教科書