フリーSolarisでここまでやれる! |
山森丈範 YAMAMORI Takenori ●yamamori |
X11R6.4 は,tog-1,2,3,4 という4つのアーカイブで配布されていますが,プログラム本体が入っているのは tog-1 ですので,これのみを展開すれば OK です.
フォントは tog-2 に入っていて,そこには 14,16,24dot の日本語フォントも含まれていますが,筆者の場合, 他のサイズのフリーの日本語フォントを含むものを既に構築しているので, 今回は新たなフォント構築は行なわず,NFS で共有して使うことにします.なお,現在,fix-03 までの patch が出ていますので,順番に当てます.
$ tar zxvf tog-1.tar.gz $ cd xc $ patch -p1 -f --dry-run < パッチのあるディレクトリ/fix-01
で確認してから,
$ patch -p1 -f < パッチのあるディレクトリ/fix-01
とします.fix-02,fix-03 も同様です.font 関係など,tog-1 以外のソースに対するパッチを自動的にスキップするために,-f オプションも付けます.XFree86 関係など,Solaris/SPARC に関係ないものも含まれていますが,念のため fix-03 まですべて当てました.
ソース全体をリードオンリーにし,隣に作業ディレクトリを作って lndir します.
$ cd .. $ chmod -R go+u,a-w xc $ mkdir sol7; cd sol7 $ lndir ../xc
●lndir方式のディレクトリ構成
ソースの修正は,元のファイル (リードオンリー) は一切修正せず,作業ディレクトリ上の lndir でできたシンボリックリンクをリネームして, 新たな修正後のファイルを作るという方法で行ないます.
site.sample を,site.def にコピーしてから,以下のような修正を行ないます.
#ifndef HasGcc2 #define HasGcc2 YES #endif #define XsunMonoServer YES #define Xsun24Server YES #define BuildFonts NO #define OSMajorVersion 5 #define OSMinorVersion 7 #define OSTeenyVersion 0 #define OptimizedCDebugFlags -O2 -pipe -s #define ExtraLoadFlags #define ArCmdBase ar #define LdCmd ld #define LexCmd flex #define MakeCmd make #define YaccCmd bison -y #define SharedLibraryLoadFlags -x -G -z text #define UseExportLists NO #define HasVarDirectory NO |
#undef StandardDefines #define StandardDefines -Dsun -DSVR4 -DX_LOCALE #undef InstallCmd #define InstallCmd install |
HasVarDirectory を NO にして,/var を使わないようにします.LdCmd 等が svr4.cf で,
/usr/ccs/bin/ld
と絶対 PATH で定義されているのを単に ld として定義し,これによって GNU ld を使うようにします.GNU ld,as 等が /usr/local/bin にインストールされていて,/usr/local/bin に先に PATH が通っているものとします.
X11R6.4 の INSTALL.TXT には,GNU の ld, as, make はサポートしていないというようなことが書かれており,また,X11 以外でも,GNU の binutils はインストールしない方がいいという話もよく聞きますが, 少なくとも,現在のバージョンで筆者が試した限りは大丈夫です.
CC = gcc CDEBUGFLAGS = -O2 -pipe -s |
Solaris 7 では,Solaris 2.6 以前にはあった以下のフレームバッファー関係のヘッダがなくなっているようです.
cg2reg.h cg2var.h cg4reg.h cg4var.h cg8-p4reg.h cg8-p4var.h cg9reg.h cg9var.h
そこで,これらに関する部分のソースを修正します.
programs/Xserver/hw/sun/sunCfb.c
に,sunCfb.c.patch という patch を当てて下さい.ここでは,sunCG2Init() と sunCG4Init() をダミーの関数に置き換えて外しています.
X11R6.4 の make の途中,libXmu.so が内部で /usr/X11R6.4/lib を参照したりします.そこで,先に仮に /usr/X11R6.4 ディレクトリを作り,
/usr/X11R6.4/lib --> 作業ディレクトリ/exports/lib
とシンボリックリンクしておきます.これは,install 直前に必ず消すことを忘れないようにします.なお,この exports/lib というディレクトリは,X11R6.4 の make 前にはまだ作成されていないことに注意して下さい.
以上で準備が出来たはずです.
$ make World 2>&1 | tee World-log
として待ちましょう.途中 libxrx.so の作成で,/usr/openwin/lib を強制的に見るため,この部分のみ error となりますが無視します.
ちなみに SPARCstation 2 で約5時間30分かかりました.
無事 make できたらインストールしますが,その前に先ほどの仮シンボリックリンクを消します.
# rm /usr/X11R6.4/lib # make install
/usr/X11R6.4/lib/X11/locale/ja/XLC_LOCALE
の37行目付近の
primary JISX0201.1976-0:GR
の次の行に,
substitute JISX0201.1976-0:GR
を追加します.X11R6.3 では,この修正をしないと fvwm2 で日本語タイトルが表示されませんでした.
X11R6.4 ではこの修正をしなくても問題ないようですが,念のため修正しておきました.
※なお、私自身の環境では再現しませんでしたが、X11R6.4
でも、やはり XLC_LOCALE を修正しておかないと、Netscape
で一部の日本語が化けるとの情報もあります。
→ Thanks to daisuke@cc.kyushu-u.ac.jp
というわけで、念のため修正しておきましょう。
筆者の場合,X11 のフォントを automount の間接 マップに登録してあります.そこで,
# ln -s /local/fonts /usr/X11R6.4/lib/X11/fonts
とやることにより,フォントが共有できます.