サーバ内に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のサーバ構築の基礎知識です。どんな大きなシステムでも これらの基本を押さえておかないと、正しい管理はできません。