フリーSolarisでここまでやれる!

山森丈範 YAMAMORI Takenori ●yamamori

X11R6.4+X_LOCALE のインストール


Free Solaris 7 は英語版のため,libc や openwin のライブラリーが参照する日本語の locale 関係のファイルがありません.そこで,X11R6.4 を,X_LOCALE 付きで make して使います.
■ソースの展開

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

注:FAQ: lndir コマンドが無いのですが・・

●lndir方式のディレクトリ構成
lndir


■ソースの修正

ソースの修正は,元のファイル (リードオンリー) は一切修正せず,作業ディレクトリ上の lndir でできたシンボリックリンクをリネームして, 新たな修正後のファイルを作るという方法で行ないます.

config/cf/site.def の修正

site.sample を,site.def にコピーしてから,以下のような修正を行ないます.

・BeforeVendorCF セクションの修正
#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

・AfterVendorCFセクションの修正
#undef StandardDefines
#define StandardDefines -Dsun -DSVR4 -DX_LOCALE

#undef InstallCmd
#define InstallCmd install

HasVarDirectoryNO にして,/var を使わないようにします.LdCmd 等が svr4.cf で,

    /usr/ccs/bin/ld

と絶対 PATH で定義されているのを単に ld として定義し,これによって GNU ld を使うようにします.GNU ld,as 等が /usr/local/bin にインストールされていて,/usr/local/bin に先に PATH が通っているものとします.

○GNU ld, as, make などについて

X11R6.4INSTALL.TXT には,GNU の ld, as, make はサポートしていないというようなことが書かれており,また,X11 以外でも,GNU の binutils はインストールしない方がいいという話もよく聞きますが, 少なくとも,現在のバージョンで筆者が試した限りは大丈夫です.

config/imake/Makefile.ini の修正

CC = gcc
CDEBUGFLAGS = -O2 -pipe -s
sunCfb.c の修正

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

以上で準備が出来たはずです.

    $ make World 2>&1 | tee World-log

として待ちましょう.途中 libxrx.so の作成で,/usr/openwin/lib を強制的に見るため,この部分のみ error となりますが無視します.

ちなみに SPARCstation 2 で約5時間30分かかりました.

make install

無事 make できたらインストールしますが,その前に先ほどの仮シンボリックリンクを消します.

    # rm /usr/X11R6.4/lib
    # make install
XLC_LOCALE の修正
    /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

とやることにより,フォントが共有できます.


To 『フリー Solaris でここまでやれる!』index


このページは、技術評論社 SoftwareDesign 1999年2月号、『フリーSolarisでここまでやれる!』の原稿を元に、Web 用に再構成したものです。
To 謎の処理系 SunOS 4.1.4 Home
yamamori