CentOS7(RHEL7)でISOをyumリポジトリにする
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 - 空(ディスク)を選択します。
光学ドライブのディスクアイコンをクリックし、対象のISOを選択します。
コントローラ:IDEのディスクに対象のISOが挿入されたら、OKをクリックし設定画面を閉じます。
ディスクをマウント
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.
問題なくリポジトリを追加できたことが確認できました。