今朝はとても暖かい。研究室にくる途中も,正門傍と経済学部裏の桜は5分咲きくらいになっていて,春の訪れを感じて気持ちがよい。昨日始めたgccのインストールであるが,なかなか難物である。まずはNetNewsのfj.sys.ews4800の情報を頼りに,どこか(たぶん秋田大)からgcc-2.7.0-ews4800.diff.tar.gzを,ftp.riken.go.jpからgcc-2.7.2.tar.gzをダウンロードして,INSTALL.EWS48に書いてある通りに展開してパッチをあててみたわけだが,パッチはあたってconfigureまではできるものの,makeするとfatal errorで止まってしまう。cccpでプロトタイプ宣言がおかしいとかいうメッセージなので秋田大の方がまとめた「EWSへの実装がうまくいかないときは」のFAQを見てcccpではない方を使うようにコメントアウトを外してみたりしたが,どうもうまくいかない。
そこで,やはりバージョンの違うパッチではだめなのではないかと思い至り,今度はftp.meshnet.or.jpに行って,/pub/48pub/Freeware96/src/DEV/gccからgcc-2.7.1とそのews4800パッチをダウンロードしてきた。展開してパッチをあててconfigureしてmake,と今度はエラー無しでコンパイルまでは進んだが,リンクでfatal errorが出て止まってしまう。/pubには十分な空きがあるのになぜディスクI/Oエラーが出るのだろうというところで昨日は止めたわけだが,考えてみたらインストール先が/usr/localだから/usr/localに空きがないと駄目なのは当然である。それで今朝は,/usr/local/binなど,インストール先ディレクトリをすべて/pubに移してシンボリックリンクを張ってからmakeしてみたが,やはり駄目である。シンボリックリンクでは駄目なのだろうか。
シンボリックリンクを張りすぎているような気がする(そもそも/pubがNFSマウントだし)ので,インストール先を/pub/gccに変更して
(./configure --prefix=/pub/gcc mips-nec-sysv42とする)
再びmakeに挑戦する。さてどうだろうと待つこと数分,やはり同じところで止まってしまう。
/usr/abiccs/bin/cc -Wf,-XNg1500,-XNh2000 -KOlimit=3000 -DIN_GCC -g -o cc1 c-parse.o c-lang.o c-lex.o c-pragma.o c-decl.o c-typeck.o c-convert.o c-aux-info.o c-common.o c-iterate.o toplev.o version.o tree.o print-tree.o stor-layout.o fold-const.o function.o stmt.o expr.o calls.o expmed.o explow.o optabs.o varasm.o rtl.o print-rtl.o rtlanal.o emit-rtl.o real.o dbxout.o sdbout.o dwarfout.o xcoffout.o integrate.o jump.o cse.o loop.o unroll.o flow.o stupid.o combine.o regclass.o local-alloc.o global.o reload.o reload1.o caller-save.o insn-peep.o reorg.o sched.o final.o recog.o reg-stack.o insn-opinit.o insn-recog.oinsn-extract.o insn-output.o insn-emit.o insn-attrtab.o mips.o getpwd.o convert.o bc-emit.o bc-optab.o obstack.o ` case "/usr/abiccs/bin/cc -Wf,-XNg1500,-XNh2000 -KOlimit=3000 " in "/usr/abiccs/bin/cc -Wf,-XNg1500,-XNh2000 -KOlimit=3000 ") echo "alloca.o" ;; esac `
というリンクのコマンドが長過ぎるのだろうか。うーむ。一縷の望みをかけてスーパーユーザになって再コンパイルしてみる。今度はPermission deniedといきなりのエラー。スーパーユーザよりlibmgrの権限の方が強いというのは妙な話だが,しかたないのでlibmgrで全ファイルをchmodしてからsuしてやってみる。さあどうだ(こう書いている間もWZ Editorの隣にはTera Term Pro 2.3のウィンドウが開いてコンパイルが進行しているのはすばらしい)。うーん,駄目だ。
うなっていても仕方がないので,gccのバージョンを下げてみることにした。2.4や2.5はバグバグだというので,2.6にしてみよう。まずは/pub/gccに入って,rm -fr *して全部消してしまってから,秋田大(quartet.ipc.akita-u.ac.jp)に行こうと思ったが,日曜の朝だというのにAnonymousアクセスは蹴られてしまう。しかたないのでmeshnetに行ってみる。/pub/48pub/GNU/src/gccから2.6.0のパッチを手に入れて来たが,うまくいくだろうか。2.6.0自体はこのサイトにはないようなので(2.5.8まではあるし,2.6.0から2.6.1へのパッチなどはあるのに妙である),再びrikenに行って取って来ようと思ったがここにもなかったので,sv1にログインして,archieでgcc-2.6.0.tar.gzを検索してみたが,出てこない。いまやarchieよりも検索ならWEBでgooでも使ったほうが良いことに思い至り,gooで検索してみると,国文学研究資料館の情報メディア室にあったので,早速ダウンロードしてコンパイルしてみたが,やはり駄目だ。うーん。
ローカルディスクの容量の問題なら仕方ないので,とりあえずsendmail-8.8.8をコンパイルしてみることにした。大きな声ではいえないが,これまでのhumeco1のsendmailはバージョン5.6だったのだ。コンパイルは/usr/abiccs/bin/ccでも問題ないという話がfj.sys.ews4800にあったことだし,やってみることにした。まず展開してsrcにMakefiles/Makefile.EWS-UXをMakefileとしてコピーし,sh makesendmailを走らせると,Warningは若干出るもののコンパイルは無事成功。しかしgroffがないといってmakeが中断するので,Makefileを書き換えてNROFF=nroff -hとし,MANDOCの定義を消してmakeしたらうまくいった。sh makesendmailでは/Makefiles/Makefile.EWS-UXを使ったmakeになってしまうので,ただmakeでよい。後は,たぶんsendmail.cfを用意してから,make installすればよいのだと思われる。で,やってみたら,一旦rootにならなくてはいけなかったのと,ps -eで探した実行中のsendmailをkillしなければならなかったが,make installは成功した。後は用意した(CF-3.6Wで作った;defファイルのACCEPT_ADDRESSにhumeco1.humecoとhumecoを両方定義することに注意;dnsのMXは配送の優先順位を指定するだけだから,受け側のsendmail.cfの方でもこれは受け付けますよと宣言する必要がある)sendmail.cfを/etcにコピーして/usr/ucblibでsendmail -bd -q30mしたら,うまく動いたようである。無事にセキュリティチェック(外から外へのリレーを拒否する)もパスした。長い間気になっていたことが漸く解決して晴れ晴れとした気分である。