98年末に、2台のSPARCワークステーションのOSを、Solaris 2.5.1→Solaris 2.6にアップグレードしました。Solaris 7がすでに出ているのに遅れていますが(^^;;)、アップグレードを計画している方の参考のために、手順と注意点を紹介します。
Solaris 2と戦う
Solarisで使うNISのはなし
日経BP, Find'X(コンピュータ・通信分野の専門検索サイト)に「厳選お薦めサイト」として登録されました。
○○と畳は新しい方が良いそうですが、ソフトウェアは必ずしも新しい方が良いとは限りません。枯れたOSの方がうれしい場合もあります。とはいえ、 Solaris 2.5.1→2.6のアップグレードは、OSの機能や安定性を考慮しても、おそらく行った方がお得だと思います。Sunによれば、Solaris 2.6の良いところは、次のようなところです。 ( 日本語 Solaris 2.6 新規機能一覧より抜粋)
また、 日本語 Solaris 2.6 新規機能一覧には挙げられていませんが、 sendmail(1m)がバージョン8.8.8ベースになったのはうれしい。セキュリティ向上のために、sendmailを入れ替える手間が省けます。
バージョン | Solaris 2.6 | Solaris 7 |
---|---|---|
CDE | 1.2 | 1.3 |
sendmail | 8.8.8 | 8.9.1b |
bind | 4.9.4-P1 | 8.1.2 |
Wnn6 | R2.30 | R2.31 |
私の所属する研究室では、2台のSun SPARCstation(実際にはOEM機)のOSをアップグレード・インストールしました。どちらも最終的には、うまくインストールでき、問題なく動作しています。アップグレード・インストール自体は、質問に適切に答えていくだけで簡単に行えるのですが、一つ引っ掛かるところがあったので、そこのところだけ説明します。
「ネームサービスの選択」でNISを選択すると、ドメイン名を聞かれます。うっかりしやすいのですが、これはNISのドメイン名です。インターネット・ドメイン名、たとえば "naoe.t.u-tokyo.ac.jp" ではありません。気をつけましょう。これはアップグレード・インストールだけではなく、新規インストールの場面でも同じです。
私がアップグレード・インストールしたときには、なぜかNISのサーバに接続できないと言われて、エラーになりました。しばらく悩んだのですが、気を取り直してネームサービス「無し」を選択してインストールを行いました。
その後かなり経ってから、その原因が分かりました。「ネームサーバー」を入力するときに、間違えてNISのサーバの名前ではなく、DNSのサーバーの名前を入れたためのようです。(…だってネームサーバーっていったら普通DNSのサーバじゃない? 思い込みって恐ろしい。)
ちなみにネームサービス「無し」を選択してインストールした後、現在に至るまで、NISも含めて何の問題もなく動いています。1台はNISのスレーブサーバでしたが、これも動いています。アップグレードだったからでしょうが、NIS などネームサービスの設定は、困ったら「無し」でも何とかなるみたいですね。
注意: ただしNISのサーバの設定の確認をしておきましょう。 「Solarisで使うNISのはなし」のページを参照してください。
問題は、アップグレードを行ったあとです。生のままのSolaris 2.5.1を、生のままのSPARCstationで使っていたのでしたら、ほとんど問題ないと思いますが、ハードウェアを追加していたり、OSの設定をいじっていたりすると、バージョンアップに合わせた設定が必要になります。私が行った作業、遭遇した事例について、いくつか説明します。
アップグレードの際に置き換えられたファイルが、
/var/sadm/system/data/upgrade_cleanup
に記録されています。何はともあれ、これをじっと読んで、当該システムに必要な調整事項を見極めます。
インストール後、即座に「推奨パッチ」を当てることをお勧めします。パッチに関しては、このページの上の方、パッチを当てよう!! の節をご覧下さい。
98年末の段階で、Solaris 2.6の推奨パッチは21.8MBあります。
「日本語Solaris 2.6 Software」CD-ROMには、すでに2つのパッチが入っています。リリースCD-ROMにすでにパッチが入っているのを不思議に思うかもしれませんが、簡単に言うとOSのリリース凍結後に発見された不具合などの修正を、パッチの形で提供しているのです。これも当てておくことをお勧めします。
ただし、パッチ105689-01の方は、Solaris 2.6推奨パッチの方に統合され、すでに古くなっています。ですから105160-01の方だけをインストールします。
# cd /cdrom/ja_sol_2_6_sparc_smcc_dt/s0/Solaris_2.6/Patches/105160-01 # ./installpatch .
ここから先は、私の管理するマシンでは必要だったために、行った設定です。あなたの管理するマシンでは、必要ないかもしれませんし、逆にここに挙げられていない調整が必要かもしれません。あくまで例としてお読み下さい。
さて、マシンに追加したハードウェアがあるときには、それに対応した調整が必要な場合があります。私の管理するマシンの場合は、追加ハードウェアに対応するため、次の設定を行いました。
/kernel/drv/st.conf
を調整する。このファイルはアップ
グレードの際に置き換えられていることに注意。詳しくは、DDSテープ
ドライブのマニュアルなどを参照してください。
Solaris 2.6のsendmail(1m)はsendmail-8.8.8です。Solaris 2.5.1以前は、 sendmailのセキュリティ向上とSPAM対策のために、sendmailを最新版に入れ替える、という作業を行っていましたが、Solaris 2.6以降ではおそらく必要ないでしょう。システム標準を使うような設定に戻しました。
Solaris 2.6からxntpdがサポートされています。おかげでxntpdのソースを持ってきてコンパイルする手間が省けます。これを利用するには、
/etc/inet/ntp.conf
にxntpdの設定を行います。設定の方法は各サイトによって異なるでしょうから、詳細は説明しません。
TCP Wrapperを使っている場合は、設定が上書きされていないかを確かめてください。OSのアップグレード・インストールの際だけでなく、推奨パッチを当てる際にも設定を上書きされる可能性があります。必要に応じて、正しい状態に修正します。(SolarisもTCP Wrapperに対応してくれるとうれしいんですがねぇ…。そういう方向には進んでないみたい。代替機能があるのかな。)
Solaris 2.5.1→2.6でヘッダファイルなどが大きく入れ替わったので、以前の gccはそのままではうまくコンパイルできなかったり、コンパイルできても動作がおかしい場合があるそうです。そこで、gccを入れ替えることにします。
すでに入っているgccが信用できないとすると、まずはgccのバイナリをどこかから持ってきて、インストールしなければなりません。たとえば以下のリンク先からダウンロードできます。
本稿執筆時点では、gcc-2.8.1が最新ですので、これをダウンロードします。インストール先が/usr/local
以下か/opt
以下かで
2種類のパッケージがありますが、私は/usr/local
以下にインストールする予定でしたので、gcc-2.8.1-local.gz
のほうをダウンロードし、追加しました。
# gunzip gcc-2.8.1-local.gz # pkgadd -d gcc-2.8.1-local
これですでに使えるのですが、当研究室では事情により、 egcsの方を使いたかったので、今インストールしたばかりのgccを使ってegcsをコンパイルし、gccを置き換えます。手順は以下の通り。
# HOST=foo.bar.co.jp; export HOST (HOSTが定義されていない場合のみ) # tar xvfz egcs-1.1.1.tar.gz # mkdir egcs-sparc; cd egcs-sparc # ../egcs-1.1.1/configure # make bootstrap
# pkgrm GNUgcc
# make install
Solaris 2.5.1用にコンパイルしたtopは使えなかったので、入れ替えます。上で紹介したFreeware for Solarisからダウンロードできます。
これはSolaris 2.5.1用のものでも問題なく動作しました。しかし Solaris 2.6以降ではWnn6が利用できますので、これをEmacsから利用したいのでしたら、Wnn6に対応するように、再コンパイルが必要です。
追加情報ですが、emacs-19.34b + mule-2.3パッチに付属する
canna.el
とegg.el
にはバグがあります。
Mewのパッケージの中に詳しい説明とパッチが入っているので、それを当ててからインストールすることをおすすめします。
私がemacs-19.34b + mule-23-alphaパッチをコンパイルする際に、
configure
スクリプトの起動オプション指定のために書いたシェルスクリプトを、ここに挙げます。参考にしてください。
#!/bin/sh CFLAGS=-O2 export CFLAGS ./configure @BACKSLASH@ --enable-terminal-face @BACKSLASH@ --enable-mcpath @BACKSLASH@ --with-wnn6 @BACKSLASH@ --with-wnn-includes=/usr/lib/locale/ja/wnn/demo/include/wnn @BACKSLASH@ --with-wnn-libraries=/usr/lib/locale/ja/wnn/demo/lib @BACKSLASH@ --with-canna @BACKSLASH@ --with-canna-includes=/usr/local/canna/include @BACKSLASH@ --with-canna-libraries=/usr/local/canna/lib # eof
ここに挙げた以外のコマンドは、ほとんどが再コンパイルせずにそのまま利用できるはずです。しかし当研究室のマシンでは、ずいぶん前にコンパイルしたバイナリが動かないことがある、という症状に悩まされました。ld.soが "_init が見つからない"というエラーを出します。どれがこのエラーを出し、どれが出さないのかを見極められないので困ります。
とりあえず、ソースからコンパイルしたコマンドはひととおり当たってみるとか、エラーが出るたびに片っ端から再インストールするなどの対策でしのいでいます。
利用者コマンドは、利用者から苦情が上がってきてから対処してもよいでしょうが、システムレベルのコマンドは要注意です。たとえばIdent daemonなどは動かなくともエラーを報告しないので、注意して確認してください。かく言う私もTCP Wrapperが動かなかったのに気づかず、システムにtelnetでログインできない状態のまま、半日放っておくという失態をやらかしました。
リンクはご自由に。でもメールをくれると嬉しいな。
金野 祥久 konno@researchers.jpLast modified: Wed Mar 29 11:05:36 JST 2000