次のページ 前のページ 目次へ

4. Red Hat 4.2 インストール

何であれコンピュータ関連のものは、3カ月そこらで時代遅れになってしまう ので、アップグレードをする必要があります。Linuxも例外ではなく、次々と アップデートパッケージがリリースされていますが、その度にドキュメントを アップデートする時間があるとは限りません。ですが、せめて配付パッケージ のバージョンが上がった時には、この文書をアップデートするようベストを 尽くします。RedHat以外の配布パッケージに関しては、各パッケージの章の 作者が送ってこない限りアップデートはしません。

4.1 著者の環境

私のインストールでは:

を使っています。

4.2 パッケージインストール

最初ZipディスクにRed Hatをインストールしようと思った時、Red Hatのブート ディスクを使えばいいから(インストールなんて)「超簡単」であると思っていまし た。でも気づきました。メールでRed Hatユーザーの様々な方から手助けをいただ いたのでブートディスクを作りそうになりましたが、最終的にはrpmの--root オプションに気づきその方法(project)をとることはやめました。

--root <dir>

全ての操作において<dir>にルートされたシステムを使います。 これはデータベースは全て<dir>以下で読み込まれたり修正されたり 、<dir>にchroot()した後にスクリプトが実行されるということを意味 しています。

パッケージの入手

あるRed Hatミラーで見つけたファイルをみて、インストールするパッケージを 見つけました。このファイルは

  redhat/redhat-4.2/i386/RedHat/base/comps

にあります。 このインストールにおいてネットワークサポートをしたいのですが、 Red HatのX network設定用ツールはX上のものしか用意されていないのでマニュアル 設定をしなければなりません。むしろマニュアルで/etc/sysconfig/にある ネットワークセットアップスクリプト、設定を試みるべきでしょう。

私の場合は、Zipドライブに開発パッケージをインストールしていません。 (少なくともパッチを当てていないカーネルでは)何をコンパイルするにしても 遅いです。また私はディスクスペースの都合からXのインストールはしていません。 Xを使えるようにしたければ、後でハードディスクをマウントして/usrに シンボリックリンク(symlink)をはっておくという手もあるのですから。

以下は私がインストールしたパッケージのリストです。*でマークしたもの はRed Hatの問題のあった(errata)パッケージをアップデートしたものです。 丸括弧で囲った箇所はアップデートのパッケージ番号です:

例: NetKit-B-0.09-6 は NetKit-B-0.09-8 にアップデートされています。
     この場合のエントリは *91) NetKit-B-0.09-6 (-8) となります。



       (コマンド rpm --root /iomega -qa によって作られたリスト)

       1) setup-1.7-2                   2) pamconfig-0.51-2
       3) filesystem-1.3-1              4) MAKEDEV-2.2-9
       5) adduser-1.7-1                 6) libc-5.3.12-18
       7) SysVinit-2.64-8               8) ash-0.2-8
       9) at-2.9b-2                    10) libtermcap-2.0.8-4
      11) bash-1.14.7-1                12) bc-1.03-6
      13) bdflush-1.5-5                14) cpio-2.4.2-4
      15) cracklib-dicts-2.5-1         16) tmpwatch-1.2-1
      17) crontabs-1.5-1              *18) db-1.85-10 (-11)
      19) dev-2.5.1-1                  20) diffutils-2.7-5
      21) etcskel-1.3-1                22) file-3.22-5
      23) fileutils-3.16-1             24) findutils-4.1-11
      25) grep-2.0-5                   26) groff-1.10-8
     *27) ld.so-1.7.14-4 (-5)          28) getty_ps-2.0.7h-4
      29) gZip-1.2.4-7                 30) mingetty-0.9.4-3
     *31) initscripts-2.92-1 (93-1)    32) ed-0.2-5
      33) info-3.9-1                   34) ncurses-1.9.9e-4
      35) libg++-2.7.1.4-5            *36) pwdb-0.54-3 (-4)
      37) rootfiles-1.5-1             *38) pam-0.57-2 (-4)
      39) redhat-release-4.2-1         40) less-321-3
      41) mount-2.5l-2                 42) zlib-1.0.4-1
      43) rpm-2.3.11-1                 44) e2fsprogs-1.10-0
      45) sysklogd-1.3-15              46) tar-1.11.8-11
      47) passwd-0.50-7                48) gawk-3.0.2-1
      49) gdbm-1.7.3-8                 50) gpm-1.10-8
      51) hdparm-3.1-2                 52) kbd-0.91-9
      53) slang-0.99.37-2              54) newt-0.8-1
      55) kbdconfig-1.4-1              56) ncompress-4.2.4-7
     *57) sh-utils-1.16-4 (-5)         58) procinfo-0.9-1
     *59) logrotate-2.3-3 (4-1)        60) lilo-0.19-1
      61) losetup-2.5l-2               62) linuxthreads-0.5-1
     *63) mkinitrd-1.6-1 (7-1)         64) mailcap-1.0-3
     *65) man-1.4h-5 (j-1)             66) mt-st-0.4-2
      67) modules-2.0.0-5              68) mailx-5.5.kw-6
      69) net-tools-1.32.alpha-2       70) procmail-3.10-10
      71) procps-1.01-11               72) psmisc-11-4
      73) quota-1.55-4                 74) readline-2.0-10
      75) sed-2.05-6                   76) setconsole-1.0-1
      77) sendmail-8.8.5-4             78) shadow-utils-960530-6
      79) stat-1.5-5                   80) tcsh-6.06-10
      81) termcap-9.12.6-5             82) textutils-1.22-1
      83) time-1.7-1                   84) timeconfig-1.8-1
      85) util-linux-2.5-38            86) vim-4.5-2
      87) vixie-cron-3.0.1-14          88) which-1.0-5
      89) zoneinfo-96i-4               90) tcp_wrappers-7.5-1
     *91) NetKit-B-0.09-6 (-8)        *92) lpr-0.18-1 (19-1)
     *93) bind-4.9.5p1-2 (9.6-1)      *94) bind-utils-4.9.5p1-2 (9.6-1)
     *95) wu-ftpd-2.4.2b12-6 (b15-1)   96) anonftp-2.3-3
      97) Zip-2.1-1                    98) unZip-5.12-5
      99) statserial-1.1-7            100) minicom-1.75-2
     101) lrzsz-0.12.14-1             102) dip-3.3.7o-9
     103) ppp-2.2.0f-3                104) portmap-4.0-3
     105) perl-5.003-8               *106) traceroute-1.0.4.4bsd-2 (1.4a5-1)
    *107) elm-2.4.25-7 (-8)           108) lynx-2.6-2 
     109) ncftp-2.3.0-5               110) pine-3.95-2
     111) rdate-0.960923-1            112) apache-1.1.3-3
    *113) nfs-server-2.2beta16-7     *114) nfs-server-clients-2.2beta16-7
          (2.2beta16-8)                    (2.2beta16-8)

これらがインストールされていてもまだ32MBも残っています!

アップデート:誤り

多くのRedHatユーザーはご存知の通り(であることを願っていますが) あるパッケージではセキュリティ上の欠点があったり問題があったりします。 その修正のため、Red Hatは欠点/問題のあったパッケージのアップデートをリリース します。アップデートしたり上記リストでマークされたパッケージを更新しました。 アップデートされたパッケージについてはRed Hatのwebパッケージを参照して下さい:

http://www.redhat.com/support/docs/rhl/rh42-errata-general.html


   NOTE: パッケージをアップデートする前に4.3.1.1で述べたldconfigを実行します。

glintを使わず、rpmを使ってどのようにパッケージをインストールするか:

インストールにおいて、マウントしたディレクトリをルートだと指定するために、 rpmに--rootオプションをつけます。 しかしいろいろなパッケージのインストールに失敗することを発見しました。 これはpreinstallあるいはpostinstallスクリプトは本当のルートディレクトリ 以外に対しては正常に動作しないためです。そこで--noscriptsオプションを 使います:

==> rpm --root /iomega -i --noscripts PACKAGE.i386.rpm

多くのユーザーが確認しているように、以下のエラーメッセージが出ます:


  failed to open /iomega/var/lib/rpm/packages.rpm
  error: cannot open /iomega/var/lib/rpm/packages.rpm

そこでvar/lib/rpmディレクトリを作ります :)。

==> mkdir /iomega/var; mkdir /iomega/var/lib; mkdir /iomega/var/lib/rpm

pamconfigあるいはpamどちらが先か?

pamconfigをインストールしようとすると、pamに依存したエラーが出ます。一方 pamをインストールしようとするとpamconfigに依存したエラーが出ます! これはまるで「卵が先かにわとりが先か」ということのようですが、--nodeps フラグを使って強制的にpamconfigをインストールすることができます。 pamはpamconfigよりも依存性のエラーが出るようです。

==> rpm --root /iomega -i --nodeps --noscripts pamconfig-0.51-2

4.3 パッケージのインストール後の問題

うまく全てインストールされても、残念なことにディスクはこれだけでは 十分に機能しません。私の言っていることは、もし現状のままフロッピーを使って ブートしようとしても、initがスタートアップしようとすると間もなく、2つの ラブリーな:) エラー出ます。

/etc/ld.so.cacheとlibc.so.5がないケース

ブートしようとすると2つエラーメッセージが出てきます。 1つ目は/etc/ld.so.cacheファイルがないためで、2つ目は libc.so.5がないための警告です。

/etc/ld.so.cache

多くの読者の方から指摘を受けたのですが、以前に書いた手順では(私がそこに 書いたようには)ちゃんと動作しません。このファイルを作るためにZipドライブ がマウントされている内にldconfigを実行しなければなりません:

==> chroot /iomega /sbin/ldconfig

この解決を教えてくれたJavier Rodriguez氏に感謝します。

libc.so.5

ライブラリがない場合の解決として、インストールスクリプトによって作られた ライブラリにシンボリックリンク(symlink)する必要があります。

==> cd /iomega/lib; ln -s libc.so.5.3.12 libc.so.5 この解決を教えてくれたDarcy Boese氏に感謝します。

rootパスワードの設定

4.3.1.1章で実行したldconfigと同様に、新しいシステム用のrootパスワードも 変更/生成しておきます。

==> chroot /iomega passwd root

インストールプログラムが作るもの


       NOTE: これはとても簡単なセットアップ方法です。動作するかどうか
             はテストしていません。理論的には動作するはずですが、動か
             なくても私に文句を言わないように。

Red Had 4.2 CD-ROMを調べている間、興味深いこと(インストールプログラムの ソースコード)に遭遇しました。このコードは/misc/src/install以下 にあります。興味深いのはnet.cファイルです。ここでどのようなファイルが、 インストールプログラムによって実行されることで、生成されるかがわかりました。 これらのほとんどは(net.cという名前の通り)ネットワークサポートを与えて いますが、ネットワークカードがなくてもネットワークとしてlocalhostを使う ことができます(加えてapacheはhostnameを決定できないことに文句を言うかも しれません)。これらのファイルには:

      /etc/hosts
      /etc/HOSTNAME
      /etc/resolv.conf
      /etc/sysconfig/network
      /etc/sysconfig/network-scripts/ifcfg-eth0
      (あるいはあなたが持っているネットワークデバイス)

が含まれています。

ネットワーク設定

このドキュメントにおいて私は「3Com 3c595 fast-ethernetカード」 (以前は別のマシンで数カ月使っていたもの)を使いたいと思います。

まず名前が必要です。私は他のマシンで自分専用のネームサーバを走らせている ので(話せば長いのですが)、(IPアドレスだけでなく)名前 :dash-dot.wig.orgを与えました。IPアドレス無しで名前を与えることは 意味のないことなので、ローカルアドレスとして定義されているIPアドレス 192.168.10.0のネットワークに接続することにしました。ネームサーバもこの ネットワークに接続されています。ホスト名は普通/etc/HOSTNAMEに書か れていますが、Red Hatでは/etc/sysconfig/networkをチェックします。 以下は私の/etc/sysconfig/networkのサンプルです:


  NETWORKING=yes
  HOSTNAME=dash-dot
  DOMAINNAME=wig.org
  GATEWAY=
  GATEWAYDEV=eth0
  NS1=192.168.10.7

次に/etc/HOSTNAME/etc/resolv.conf/etc/hosts に関する情報を挙げます:

/etc/HOSTNAME:


dash-dot.wig.org

/etc/resolv.conf:


search wig.org
nameserver ns.wig.org

/etc/hosts:


127.0.0.1 localhost
192.168.10.99 dash-dot.wig.org dash-dot
192.168.10.7  ns.wig.org ns

Red Hatは/etc/sysconfig/network-scriptsにあるスクリプトから 全ネットワークデバイスを設定します。ネットワークデバイスの設定は普通 はじめにインストールプログラムを使って行われます。そこで手動で これらの設定ファイルを作ります。これらの設定ファイル名は全てifcfg-XXX で始まります。ここでXXXifconfigで表示されるネットワーク インターフェース(ppp0, eth0 など)です。例えば、ifcfg-eth0というファイル を以下のように作ります:


  DEVICE=eth0
  ONBOOT=yes
  BOOTPROTO=none
  BROADCAST=192.168.10.255
  NETWORK=192.168.10.0
  NETMASK=255.255.255.0
  IPADDR=192.168.10.99

これらを正しく行うために、/etc/sysconfig/network-scripts ディレクトリで以下を実行します:

==> ./ifup ifcfg-eth0 boot

これはスクリプトをスタートします。このスクリプトは、インターフェースが ブート時開始するようセットされた場合に、セットネットワークインターフェース の設定をするものです。

詳細については「NET-3-HOWTO」ドキュメントを参照して下さい。


次のページ 前のページ 目次へ