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