レック・テクノロジー・コンサルティング株式会社TECH BLOG

ISOイメージを使ってローカルyumリポジトリを作成する

どうも、渋澤です。
以前Top Awardの様子を執筆させて頂きました。
今回は技術編となります。

早速ですが、お客様の本番環境でインターネットに直接繋がる環境は珍しいと思います。

そんなとき、rpmコマンドによるパッケージのインストールで依存関係に悩んだことありませんか?

「〇〇はXXに必要とされています」というエラーメッセージが表示されてインストールできない、指定されたパッケージのインストール際にも同様のメッセージが表示されることもあります。
さらに困るのは以下のような場合です。

パッケージA⇒パッケージB⇒パッケージC
  |
  ⇒パッケージD⇒パッケージE
     |
     ⇒パッケージF...

そこで今回は、rpmパッケージをyumコマンドでインストールができるように、
サーバ内に閉じたローカル環境にリポジトリを作成する方法の一例を紹介します。

ちなみにご存知の方も多いと思いますが、yumとrpmの違いの1つは以下の点にあります。

rpm:依存関係のあるパッケージを自動ではインストールしてくれない
yum:依存関係のあるパッケージを自動でインストールしてくれる

※rpmとyumは別ものではなく、yumは内部でrpmを呼び出しています。
 yumはrpmよりもさらに高度な機能を提供してくれます。

つまり、このリポジトリを作成することで、
「リポジトリ内に存在するパッケージであれば、
 yumコマンドが依存関係のあるパッケージを自動でインストールしてくれる」

メリットがあります。

ISOイメージからローカルyumリポジトリを作成する

では、さっそくリポジトリをつくってみましょう!

①ISOイメージのマウント(今回はRHEL6.5で検証しました)
# mount /dev/cdrom /media

②ISOイメージのコピー先を作成(ディレクトリの作成は任意)
# mkdir -p /var/yum/RHEL6.5

③ISOイメージをコピー(ISOファイルの中身を全部コピー)
# cd /var/yum/RHEL6.5
# cp -Rp /media/* .

④リポジトリ定義ファイルを作成(拡張子より前は任意)
# vi /etc/yum.repos.d/dvd.repo
[Server]
name=RHEL6 Base
baseurl=file:///var/yum/RHEL6.5
enabled=1

 (補足)
   name :リポジトリ名。yum repolist 等で表示される。
   baseurl :リポジトリへのパスを記述。
         ローカルの場合は「file://」のあとに参照させたいパスを記載。
   enabled :1は有効。0は無効。

⑤yumのキャッシュを削除
# yum clean all

ここまででローカルyumリポジトリの作成は完了です。
では、yumコマンドで早速パッケージをインストールしてみましょう。

⑥インストール
# yum install net-snmp

oaded plugins: refresh-packagekit, rhnplugin
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package net-snmp.x86_64 1:5.5-27.el6 set to be updated
--> Processing Dependency: net-snmp-libs = 1:5.5-27.el6 for package:
1:net-snmp-5.5-27.el6.x86_64
--> Processing Dependency: libnetsnmp.so.20()(64bit) for package:
1:net-snmp-5.5-27.el6.x86_64
--> Processing Dependency: libnetsnmpagent.so.20()(64bit) for package:
1:net-snmp-5.5-27.el6.x86_64
--> Processing Dependency: libnetsnmptrapd.so.20()(64bit) for package:
1:net-snmp-5.5-27.el6.x86_64
--> Processing Dependency: libnetsnmpmibs.so.20()(64bit) for package:
1:net-snmp-5.5-27.el6.x86_64
--> Processing Dependency: libnetsnmphelpers.so.20()(64bit) for package:
1:net-snmp-5.5-27.el6.x86_64
--> Processing Dependency: libsensors.so.4()(64bit) for package:
1:net-snmp-5.5-27.el6.x86_64
--> Running transaction check
---> Package lm_sensors-libs.x86_64 0:3.1.1-10.el6 set to be updated
---> Package net-snmp-libs.x86_64 1:5.5-27.el6 set to be updated
--> Finished Dependency Resolution


Dependencies Resolved
======================================================
Package Arch Version
Repository Size
======================================================
Installing:
net-snmp x86_64 1:5.5-27.el6
Server 297 k
Installing for dependencies:
lm_sensors-libs x86_64 3.1.1-10.el6
Server 37 k
net-snmp-libs x86_64 1:5.5-27.el6
Server 1.5 M


Transaction Summary
======================================================
Install 3 Package(s)
Upgrade 0 Package(s)


Total download size: 1.9 M
Installed size: 6.3 M
Is this ok [y/N]: y
Downloading Packages:
------------------------------------------------------------
Total 29 MB/s | 1.9
MB 00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : lm_sensors-libs-3.1.1-10.el6.x86_64
1/3
Installing : 1:net-snmp-libs-5.5-27.el6.x86_64
2/3
Installing : 1:net-snmp-5.5-27.el6.x86_64
3/3

Installed:       ※今回インストールしたパッケージ
net-snmp.x86_64 1:5.5-27.el6

Dependency Installed: ※依存関係のあるパッケージ
lm_sensors-libs.x86_64 0:3.1.1-10.el6 net-snmp-libs.x86_64
1:5.5-27.el6

Complete!

最後に

今回の方法は、

・インターネット環境がないときにrpmコマンドで依存関係に悩んだとき

のほか、以下のようなときにも有効です。

・インストール後にパッケージの追加依頼があった場合
・セキュリティアップデートでEratta適用する場合
(ダウンロードしたパッケージをリポジトリのディレクトリに配置することで、同様にyumコマンドでの
インストールが可能)

ぜひ、試してみてください。

この記事をシェアする

  • Facebook
  • X
  • Pocket
  • Line
  • Hatena
  • Linkedin

資料請求・お問い合わせはこちら

ページトップへ戻る