| 1 | = サーバ内にyum環境を構築する方法 = |
| 2 | |
| 3 | インストールDVDの内容をサーバにコピーします。 |
| 4 | {{{ |
| 5 | /home/CentOS5.6Repo |
| 6 | }}} |
| 7 | |
| 8 | 次に |
| 9 | {{{ |
| 10 | vi /etc/yum.repo.d/local.repo |
| 11 | ------------------------------ |
| 12 | [local-base] |
| 13 | name= CentOS5.6 |
| 14 | baseurl= file:///home/CentOS5.6Repo/ |
| 15 | enabled=1 |
| 16 | gpgcheck=0 |
| 17 | --------------------------------- |
| 18 | |
| 19 | createrepo /home/CentOS5.6Repo/ |
| 20 | }}} |
| 21 | |
| 22 | を実行してリソースを登録します。 |
| 23 | 次回からローカルリポジトリからYUMコマンドが利用できます。 |
| 24 | |
| 25 | == 上記の設定の詳細内容 == |
| 26 | |
| 27 | yumのコマンドでパッケージ情報の参照先は/etc/yum.repos.d/の下にリポジトリファイルがあってそこの中身を見ています。 |
| 28 | 標準だとredhat-debuginfoのファイルしかないはずです。 |
| 29 | |
| 30 | ここに新たに設定ファイルを作ってしまえばよいのです |
| 31 | |
| 32 | 適当に/etc/yum.repos.d/local.repo とか作ることにします。 |
| 33 | |
| 34 | 書式としては以下な感じ。 |
| 35 | {{{ |
| 36 | [repo-name] (名前。適当に) |
| 37 | name= (名前、判別しやすいのをつけましょう) |
| 38 | baseurl= (リポジトリDBのあるpath) |
| 39 | enabled=1 (1で有効、0だと無効) |
| 40 | gpgcheck=0 (1だとGPG-KEYのチェックありだが0でも可) |
| 41 | }}} |
| 42 | |
| 43 | さて、RHEL5.1のisoイメージの中身を確認しますとCluster、ClusterStorage、Server、VTというディレクトリがあり、 |
| 44 | その各ディレクトリの中にはrepodataというディレクトリ、さらにその中にxmlファイルとかあります。 |
| 45 | |
| 46 | ということはこのリポジトリDBを使えばいいじゃん、とか思ったのですが、そうはうまくいきませんでした。 |
| 47 | |
| 48 | 例えば/mntにisoイメージをマウントするとして |
| 49 | |
| 50 | baseurl部にfile:///mnt/Server/ |
| 51 | |
| 52 | としてlocal.repoを作成、yum updateを実行したらパッケージの情報は取得できていますが、実際にrpmファイルをDownloadしようとする時に |
| 53 | {{{ |
| 54 | IOError: urlopen error unknown url type: media |
| 55 | }}} |
| 56 | なんていうふうに怒られまます。どうもrepodataディレクトリ内のreopomd.xmlを覗いてみたらlocationがmedia://で始まるところになってます。 |
| 57 | これじゃダメだ、使えない。 |
| 58 | なのでcreaterepoコマンドでローカルに新しくリポジトリDBを作ります。 |
| 59 | |
| 60 | {{{ |
| 61 | # mount -o loop rhel-5.1-server-i386-dvd.iso /mnt |
| 62 | # mkdir /tmp/Server |
| 63 | # createrepo -o /tmp/Server/ -g /mnt/Server/repodata/comps-rhel5-server-core.xml -u file:///mnt/Server/ /mnt/Server/ |
| 64 | |
| 65 | -o はリポジトリの出力先 |
| 66 | -g はグループファイルをコピる |
| 67 | -u は実際のrpmのあるurlを記述 |
| 68 | }}} |
| 69 | |
| 70 | こうしますと、暫くした後/tmp/Server/にリポジトリDBが作成されます。2000個以上パッケージがあります。 |
| 71 | 同様にVTやCluster、ClusterStorageに関してもローカルにリポジトリを作ってみたら、これらは30個ちょい。 |
| 72 | |
| 73 | で、/etc/yum.repos.d/local.repoを編集。 |
| 74 | |
| 75 | 以下にしてみました。 |
| 76 | {{{ |
| 77 | ------------------------------- |
| 78 | [Server] |
| 79 | name=local_Server |
| 80 | baseurl=file:///tmp/Server/ |
| 81 | enabled=1 |
| 82 | gpgcheck=0 |
| 83 | |
| 84 | [VT] |
| 85 | name=local_VT |
| 86 | baseurl=file:///tmp/VT/ |
| 87 | enabled=1 |
| 88 | gpgcheck=0 |
| 89 | |
| 90 | [Cluster] |
| 91 | name=local_Cluster |
| 92 | baseurl=file:///tmp/Cluster/ |
| 93 | enabled=1 |
| 94 | gpgcheck=0 |
| 95 | |
| 96 | [ClusterStorage] |
| 97 | name=local_ClusterStorage |
| 98 | baseurl=file:///tmp/ClusterStorage/ |
| 99 | enabled=1 |
| 100 | gpgcheck=0 |
| 101 | ------------------------------- |
| 102 | }}} |
| 103 | |
| 104 | で、updateかける前に最初にbaseurl=file:///mnt/Server/で |
| 105 | キャッシュされた情報を削除するため、yum clean all を実行。 |
| 106 | |
| 107 | その後、yum updateしたら無事にRHEL5.1になりました。 |
| 108 | |
| 109 | ちなみにこの状態で yum gruoplist すると |
| 110 | Virtualization や Clustering ってのも登場しますので |
| 111 | |
| 112 | {{{ |
| 113 | yum groupinstall Virtualization |
| 114 | }}} |
| 115 | |
| 116 | を実行したらXen環境に必要なパッケージがインストールされます。 |
| 117 | |
| 118 | 最初にOS入れる際にインストレーション番号を入れなくても |
| 119 | 仮想化環境とかクラスターとか構築可能になります・・・ |
| 120 | |
| 121 | = yumレポジトリサーバの構築手順 = |
| 122 | |
| 123 | ここでは「ローカルディスク上のRPMパッケージ管理機能」と「ネットワーク経由でRPMパッケージを取得する機能」両方を持ったyumレポジトリサーバを |
| 124 | 構築する手順を紹介します。 |
| 125 | |
| 126 | まず、ネットワーク経由でRPMパッケージを配信するためのyumレポジトリサーバを構築する場合、配信するプロトコルを決めます。今回はHTTP経由で行うとします。 |
| 127 | |
| 128 | yumレポジトリサーバがHTTP経由でRPMパッケージを配信するためには、Webサーバを構築する必要があります。 |
| 129 | |
| 130 | Red Hat Enterprise Linux 5に付属のApacheが標準で提供するWebサービスのディレクトリは「/var/www/html」です。そのため今回は「/var/www/html」以下にyumのレポジトリを作成します。 |
| 131 | |
| 132 | 作成するyumレポジトリのRPMパッケージを保管するディレクトリは「/var/www/html/yum/network1/RPMS」とするので「mkdirコマンド」でディレクトリを作成します。 |
| 133 | {{{ |
| 134 | # mkdir -p /var/www/html/yum/network1/RPMS |
| 135 | }}} |
| 136 | |
| 137 | 次にyumレポジトリで管理したいRPMパッケージを上記のディレクトリにコピーします。今回は、Red Hat Enterprise Linux 5の |
| 138 | CD-ROMのコアコンポーネントである「Serverディレクトリ」に含まれるすべてのRPMをコピーします。 |
| 139 | |
| 140 | {{{ |
| 141 | # mount /dev/cdrom /media/ |
| 142 | # cp -a /media/Server?*.rpm /var/www/html/yum/network1/RPMS/ |
| 143 | # umount /media |
| 144 | }}} |
| 145 | |
| 146 | このコマンドは、すべてのCD-ROMで繰り返し行います。 |
| 147 | |
| 148 | |
| 149 | yumレポジトリのメタデータを生成する |
| 150 | |
| 151 | 次にyumレポジトリのメタデータを生成します。メタデータとは、yumレポジトリの全体を管理するための情報であり、yumコマンドはメタデータに登録されている情報をもとにパッケージの現在の状態を知ることができます。 |
| 152 | |
| 153 | yumレポジトリのメタデータの生成はcreaterepoコマンドを使います。 |
| 154 | {{{ |
| 155 | # createrepo /var/www/html/yum/network1/RPMS/ |
| 156 | }}} |
| 157 | |
| 158 | 「ローカルディスク上のRPMパッケージ管理機能」を実現するため、yumレポジトリサーバ自身でyumのレポジトリにアクセスできるようにyumの設定ファイルを作成します。 |
| 159 | {{{ |
| 160 | # vi /etc/yum.repos.d/network1.repo |
| 161 | [network1] |
| 162 | name=Red Hat Enterprise Linux $releasever - $basearch via Newtork |
| 163 | baseurl=http://172.16.10.50/yum/network1/RPMS/ |
| 164 | enabled=1 |
| 165 | gpgcheck=1 |
| 166 | gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release |
| 167 | }}} |
| 168 | |
| 169 | ここで重要なのは「baseurlの行」です。まずhttpでyumレポジトリサーバのWebサービスのURLを指定します。また「/etc /yum.repos.d」 |
| 170 | ディレクトリには、複数のレポジトリ設定ファイルを配置しておき、設定ファイル内の「enabled=」と書かれた箇所でこのレポジトリの有効・無効を切り替える |
| 171 | ことができます。enabled=1に設定すると、そのレポジトリは有効になります。 |
| 172 | |
| 173 | 次にyumレポジトリサーバでメタデータを読み込みます。 |
| 174 | {{{ |
| 175 | # yum list available |
| 176 | }}} |
| 177 | |
| 178 | 以上でyumレポジトリサーバは構築は終了です。 |
| 179 | |
| 180 | == yumコマンドでインストールできるかテストする == |
| 181 | |
| 182 | ではテスト用のパッケージをyumコマンドでインストールできるかを確認します。 |
| 183 | 今回はテスト用のRPMパッケージとしてlogwatch RPMをインストールしてみましょう。 |
| 184 | 事前にlogwatchコマンドがインストールされていないことをrpmコマンドで確認しておきます。 |
| 185 | {{{ |
| 186 | # rpm -qa |grep logwatch |
| 187 | }}} |
| 188 | |
| 189 | yumコマンドでlogwatch RPMパッケージをインストールします。 |
| 190 | {{{ |
| 191 | # yum -y install logwatch |
| 192 | }}} |
| 193 | |
| 194 | logwatch RPMパッケージがシステムにインストールされているかを再度確認します。 |
| 195 | {{{ |
| 196 | # rpm -qa |grep logwatch |
| 197 | logwatch-7.3-5 |
| 198 | }}} |
| 199 | |
| 200 | これでApache Webサービスを利用したネットワーク経由でのRPM配信を実現するyumレポジトリサーバは構築できました。 |
| 201 | あとはRPMを取得したいクライアント側(管理対象)にyumの設定ファイルをコピーすれば、その管理対象はyumレポジトリサーバ |
| 202 | を利用してRPMパッケージの取得が可能になります。 |
| 203 | |
| 204 | 管理対象のマシンのホスト名を「bl460c01」とすると、以下のようにコピーしてください。 |
| 205 | |
| 206 | {{{ |
| 207 | # scp /etc/yum.repos.d/network1.repo bl460c01:/etc/yum.repos.d/ |
| 208 | root@bl460c01's password: |
| 209 | network1.repo 100% 203 0.2KB/s 00:00 |
| 210 | }}} |
| 211 | では管理対象のマシンからyumコマンドでRPMパッケージが取得できるかどうかを確認しましょう。 |
| 212 | {{{ |
| 213 | [root@bl460c01 ~]# yum -y install logwatch |
| 214 | }}} |
| 215 | これで管理対象のマシン「bl460c01」上でyumコマンドまたはsystem-config-packagesを利用することにより、yumレポジトリサーバに保管されているRPMパッケージを取得できるようになりました。 |
| 216 | |
| 217 | == 基本を押さえれば設定は難しくない == |
| 218 | |
| 219 | 以上でApache、Samba、FTP、NFSサーバ、yumレポジトリサーバの構築の基本的な手順を追いながら説明しました。 |
| 220 | これらの設定は Red Hat Enterprise Linux 5のサーバ構築の基礎知識です。どんな大きなシステムでも |
| 221 | これらの基本を押さえておかないと、正しい管理はできません。 |
| 222 | |
| 223 | |