wiki:yumサーバ構築方法

サーバ内にyum環境を構築する方法

インストールDVDの内容をサーバにコピーします。

   /home/CentOS5.6Repo

次に

vi /etc/yum.repo.d/local.repo
------------------------------
[local-base]
name= CentOS5.6
baseurl= file:///home/CentOS5.6Repo/
enabled=1
gpgcheck=0
---------------------------------

createrepo /home/CentOS5.6Repo/

を実行してリソースを登録します。 次回からローカルリポジトリからYUMコマンドが利用できます。

上記の設定の詳細内容

yumのコマンドでパッケージ情報の参照先は/etc/yum.repos.d/の下にリポジトリファイルがあってそこの中身を見ています。 標準だとredhat-debuginfoのファイルしかないはずです。

ここに新たに設定ファイルを作ってしまえばよいのです

適当に/etc/yum.repos.d/local.repo とか作ることにします。

書式としては以下な感じ。

[repo-name] (名前。適当に)
name= (名前、判別しやすいのをつけましょう)
baseurl= (リポジトリDBのあるpath) 
enabled=1 (1で有効、0だと無効)
gpgcheck=0 (1だとGPG-KEYのチェックありだが0でも可)

さて、RHEL5.1のisoイメージの中身を確認しますとCluster、ClusterStorage?、Server、VTというディレクトリがあり、 その各ディレクトリの中にはrepodataというディレクトリ、さらにその中にxmlファイルとかあります。

ということはこのリポジトリDBを使えばいいじゃん、とか思ったのですが、そうはうまくいきませんでした。

例えば/mntにisoイメージをマウントするとして

baseurl部にfile:///mnt/Server/

としてlocal.repoを作成、yum updateを実行したらパッケージの情報は取得できていますが、実際にrpmファイルをDownloadしようとする時に

IOError: urlopen error unknown url type: media

なんていうふうに怒られまます。どうもrepodataディレクトリ内のreopomd.xmlを覗いてみたらlocationがmedia://で始まるところになってます。 これじゃダメだ、使えない。 なのでcreaterepoコマンドでローカルに新しくリポジトリDBを作ります。

# mount -o loop rhel-5.1-server-i386-dvd.iso /mnt
# mkdir /tmp/Server
# createrepo -o /tmp/Server/ -g /mnt/Server/repodata/comps-rhel5-server-core.xml -u file:///mnt/Server/ /mnt/Server/

-o はリポジトリの出力先
-g はグループファイルをコピる
-u は実際のrpmのあるurlを記述

こうしますと、暫くした後/tmp/Server/にリポジトリDBが作成されます。2000個以上パッケージがあります。 同様にVTやCluster、ClusterStorageに関してもローカルにリポジトリを作ってみたら、これらは30個ちょい。

で、/etc/yum.repos.d/local.repoを編集。

以下にしてみました。

-------------------------------
[Server]
name=local_Server
baseurl=file:///tmp/Server/ 
enabled=1
gpgcheck=0

[VT]
name=local_VT
baseurl=file:///tmp/VT/ 
enabled=1
gpgcheck=0

[Cluster]
name=local_Cluster
baseurl=file:///tmp/Cluster/ 
enabled=1
gpgcheck=0

[ClusterStorage]
name=local_ClusterStorage
baseurl=file:///tmp/ClusterStorage/ 
enabled=1
gpgcheck=0
-------------------------------

で、updateかける前に最初にbaseurl=file:///mnt/Server/で キャッシュされた情報を削除するため、yum clean all を実行。

その後、yum updateしたら無事にRHEL5.1になりました。

ちなみにこの状態で yum gruoplist すると Virtualization や Clustering ってのも登場しますので

yum groupinstall Virtualization

を実行したらXen環境に必要なパッケージがインストールされます。

最初にOS入れる際にインストレーション番号を入れなくても 仮想化環境とかクラスターとか構築可能になります・・・

yumレポジトリサーバの構築手順

ここでは「ローカルディスク上のRPMパッケージ管理機能」と「ネットワーク経由でRPMパッケージを取得する機能」両方を持ったyumレポジトリサーバを 構築する手順を紹介します。

まず、ネットワーク経由でRPMパッケージを配信するためのyumレポジトリサーバを構築する場合、配信するプロトコルを決めます。今回はHTTP経由で行うとします。

yumレポジトリサーバがHTTP経由でRPMパッケージを配信するためには、Webサーバを構築する必要があります。

Red Hat Enterprise Linux 5に付属のApacheが標準で提供するWebサービスのディレクトリは「/var/www/html」です。そのため今回は「/var/www/html」以下にyumのレポジトリを作成します。

作成するyumレポジトリのRPMパッケージを保管するディレクトリは「/var/www/html/yum/network1/RPMS」とするので「mkdirコマンド」でディレクトリを作成します。

# mkdir -p /var/www/html/yum/network1/RPMS

次にyumレポジトリで管理したいRPMパッケージを上記のディレクトリにコピーします。今回は、Red Hat Enterprise Linux 5の CD-ROMのコアコンポーネントである「Serverディレクトリ」に含まれるすべてのRPMをコピーします。

# mount /dev/cdrom /media/
# cp -a /media/Server?*.rpm /var/www/html/yum/network1/RPMS/
# umount /media

このコマンドは、すべてのCD-ROMで繰り返し行います。

yumレポジトリのメタデータを生成する

次にyumレポジトリのメタデータを生成します。メタデータとは、yumレポジトリの全体を管理するための情報であり、yumコマンドはメタデータに登録されている情報をもとにパッケージの現在の状態を知ることができます。

yumレポジトリのメタデータの生成はcreaterepoコマンドを使います。

# createrepo /var/www/html/yum/network1/RPMS/

「ローカルディスク上のRPMパッケージ管理機能」を実現するため、yumレポジトリサーバ自身でyumのレポジトリにアクセスできるようにyumの設定ファイルを作成します。

# vi /etc/yum.repos.d/network1.repo
[network1]
name=Red Hat Enterprise Linux $releasever - $basearch via Newtork
baseurl=http://172.16.10.50/yum/network1/RPMS/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

ここで重要なのは「baseurlの行」です。まずhttpでyumレポジトリサーバのWebサービスのURLを指定します。また「/etc /yum.repos.d」 ディレクトリには、複数のレポジトリ設定ファイルを配置しておき、設定ファイル内の「enabled=」と書かれた箇所でこのレポジトリの有効・無効を切り替える ことができます。enabled=1に設定すると、そのレポジトリは有効になります。

次にyumレポジトリサーバでメタデータを読み込みます。

# yum list available

以上でyumレポジトリサーバは構築は終了です。

yumコマンドでインストールできるかテストする

ではテスト用のパッケージをyumコマンドでインストールできるかを確認します。 今回はテスト用のRPMパッケージとしてlogwatch RPMをインストールしてみましょう。 事前にlogwatchコマンドがインストールされていないことをrpmコマンドで確認しておきます。

# rpm -qa |grep logwatch

yumコマンドでlogwatch RPMパッケージをインストールします。

# yum -y install logwatch

logwatch RPMパッケージがシステムにインストールされているかを再度確認します。

# rpm -qa |grep logwatch
logwatch-7.3-5

これでApache Webサービスを利用したネットワーク経由でのRPM配信を実現するyumレポジトリサーバは構築できました。 あとはRPMを取得したいクライアント側(管理対象)にyumの設定ファイルをコピーすれば、その管理対象はyumレポジトリサーバ を利用してRPMパッケージの取得が可能になります。

管理対象のマシンのホスト名を「bl460c01」とすると、以下のようにコピーしてください。

# scp /etc/yum.repos.d/network1.repo bl460c01:/etc/yum.repos.d/
root@bl460c01's password:
network1.repo                        100%  203     0.2KB/s   00:00

では管理対象のマシンからyumコマンドでRPMパッケージが取得できるかどうかを確認しましょう。

[root@bl460c01 ~]# yum -y install logwatch

これで管理対象のマシン「bl460c01」上でyumコマンドまたはsystem-config-packagesを利用することにより、yumレポジトリサーバに保管されているRPMパッケージを取得できるようになりました。

基本を押さえれば設定は難しくない

以上でApache、Samba、FTP、NFSサーバ、yumレポジトリサーバの構築の基本的な手順を追いながら説明しました。 これらの設定は Red Hat Enterprise Linux 5のサーバ構築の基礎知識です。どんな大きなシステムでも これらの基本を押さえておかないと、正しい管理はできません。

Last modified 2 years ago Last modified on Nov 7, 2016, 2:04:42 PM