/*
 * 『かんな』インストールの手引き
 *
 */

本文書では、『かんな』のインストールについて説明します。なお、『かんな』
のコンパイルには X11R6 の imake が必要です。

-1.クイックインストール

   本文書に目を通すのが面倒で、各種パラメタの設定やインストールディレ
   クトリがデフォルトで良い場合は以下を行ってください。インストールは 
   /usr/local/canna 下に行われます。

 (1) OS/2 をお使いの方は、まず付録 A の該当部分に目をお通しください。

 (2) 以下を実行します。

   % xmkmf
   % make canna
   % su
   # make install
   # make install.man

   なにかしらエラーが出た場合には以下に目をお通しください。root になれ
   ない場合には「5. root になれない場合のコンパイルおよびインストール」
   を参照してください。


0.はじめに
  
   『かんな』の環境設定の概要を示します。なお、root になれない場合の手
   順を最後に記述しておきますので root の権限がない場合はそこを参照し
   てコンパイル・インストールしてください。

     1. 前準備
     2. コンパイル
     3. インストール
     4. 運用

   『かんな』のコンパイル、インストールに関して何らかの問題があった場合、
   canna-dev@lists.sourceforge.jpに御報告ください。その際、できれば
   詳しいエラーの様子などを報告していただけると助かります。

   『かんな』には現在 3つのメーリングリストがあります。

   ・Canna@nec.co.jp
   NECのメーリングリストです。かつてはここで開発等も行われていましたが、
   開発がsourceforge.jpに移ったので、当面はユーザー向けメーリングリスト
   という位置づけとします。詳しい説明が
   http://www.nec.co.jp/canna/c-mail.html
   にあります。

   ・canna-dev@lists.sourceforge.jp
   開発用メーリングリストです。開発に参加したい方、バグ報告等をなさる方
   はこちらをお使いください。

   ・canna-cvs@lists.sourceforge.jp
   CVSのcommitlogが送られます。購読専用です。

   sourceforge.jpの2つのメーリングリストについては、
   http://sourceforge.jp/mail/?group_id=285
   にインターフェースがあります。

   X11R5 にコントリビューションした『かんな』は、物件自体にはバージョ
   ンが明記されていなかったのですが、Version 1.2 ということにします。

   旧バージョンからの変更履歴については CHANGES.jp をご覧ください。


1. 前準備

  1.1 Canna.conf の設定

   Canna.conf ファイルを書き換えて、『かんな』システムをインストールす
   るディレクトリなどを指定します。

    cannaBinDir     コマンドをインストールするディレクトリです。

    cannaSrvDir	    cannaserver および cannakill をインストールするディ
                    レクトリです。

    cannaLibDir    『かんな』の種々のファイルをインストールするディレ
                    クトリです。

    cannaManDir     マニュアルページをインストールするディレクトリです。

    cannaIncDir     インクルードファイル等をインストールするディレクト
                    リです。

    libCannaDir     libcanna 等ライブラリ等をインストールするディレク
                    トリです。

    ErrDir          ログファイルが置かれるディレクトリです。

    cannaOwner      辞書とかな漢字変換サーバのオーナを指定します。4.1 
                    の項も参照してください。

    cannaGroup      辞書とかな漢字変換サーバのグループを指定します。
                    4.1 の項も参照してください。

    cannaDsoRev     shared library のリビジョンを指定します。so.1 であ
                    れば 1 です。

    sharedLibExtension
                    shared library の拡張子を指定します。通常は so.1 
                    などが使われます。 HP-UX では sl です。

    DicDir          辞書をインストールするディレクトリです。

    pubdicDir       Pubdic+ では最新の辞書が準備されています。そちらを
                    利用する場合にはここでそのディレクトリを指定します。
                    Canna の make をする前に、指定されたディレクトリに 
                    iroha.t が作られている状態になっているようにしてく
                    ださい。

    JAPANESEMAN     マニュアルページをインストールする時に日本語のマニュ
                    アルページをインストールするか、英語のマニュアルペー
                    ジをインストールするかを示します。このパラメタに関
                    しては #define するかしないかにより動作が切り替わ
                    りますのでご注意ください。
                    日本語のマニュアルページに対して英語のマニュアルペー
                    ジは不十分ですのでご注意ください。

    USE_OBSOLETE_STYLE_FILENAME
                    漢字辞書名、ローマ字テーブル名を Version 3.4 以前
                    の名前のままにする場合には、このマクロを #define 
                    してください。ちなみに、Version 3.5 から、ローマ字
                    か名変換テーブルの拡張子が .kp から .cbp へ、テキ
                    スト辞書ファイル、バイナリ辞書ファイル、辞書学習ファ
                    イルの拡張子がそれぞれ、.t, .d, .fq から .cbd, .
                    ctd, .cld に変更になりました。
    
    SupportOldWchar 『かんな』は Version 3.6 まで、システムの提供するワイド
		    キャラクタの定義を奪って、内部処理やアプリケーション
		    とのやりとりに利用していました。現在でも、kinput2 など
		    の従来のバージョンとの互換性のため、一部でこのような
		    再定義を行っています。このことが原因でコンパイルに失敗
		    する場合、 SupportOldWchar を 0 と定義すると、コンパイル
		    できるようになります。ただし、 3.7 で導入された新しい
		    ワイドキャラクタに対応していないアプリケーションは動作
		    しなくなります。

    UseInet6	    IPv6サポートを組み込みます。システムが IPv6 に対応して
		    いて、必要なヘッダファイルなどが無ければ、コンパイル出来
		    ません。 IPv6 対応システムでも、 Linux などの古い実装
		    では、やはりコンパイル出来ない場合があります。
    
    DIC_3_6_COMPAT  これを #define すると、コンパイル時に Version 3.6 まで
		    の古い形式の辞書を作成します。これを定義しているかどうか
		    に関わらず、 mkbindic では -c 3.0 オプションで旧形式の
		    辞書を作成できます。

    ModernElfLink   (実験的なオプションなので通常は NO のままにしてください)
		    Solaris などでは、 imake による標準的な方法で共有ライブ
		    ラリを作成すると、ライブラリのマイナーバージョンが変わる
		    だけでも、古いライブラリをリンクしているアプリケーション
		    が動作しなくなります。 ModernElfLink を YES にすると、
		    リンカにオプションを渡して、メジャーバージョンが変わら
		    ない限り以前のアプリケーションが動作するようにします。
		    ただし、 imake の仕組みを乗っ取る形になるため、限られた
		    システムでしか動作しません。特に、実行ファイルが ELF 形式
		    でないシステムや、共有ライブラリの名前が libXXX.so.X.X 
		    でないシステムでは、これを YES にしてはいけません。


   例としてデフォルトの設定を以下に示します。

                /* #define InstallAsUser */
		/* #define ObsoleteInstallDir */
		cannaPrefix = DefCannaPrefix
		cannaExecPrefix = $(cannaPrefix)
		cannaBinDir = $(cannaExecPrefix)/bin
		cannaSrvDir = DefCannaSrvDir
		XCOMM cannaLibDir = /var/lib/canna
		XCOMM cannaLibDir = /var/db/canna
		cannaLibDir = DefCannaLibDir
		XCOMM cannaManDir = $(cannaPrefix)/share/man
		cannaManDir = $(cannaPrefix)/man
		cannaIncDir = $(cannaPrefix)/include/canna

		libCannaDir = DefLibCannaDir
		ErrDir  = DefErrDir
		#define SupportOldWchar 1
		#define UseInet6 0
		/* #define DIC_3_6_COMPAT */
		#define ModernElfLink NO
                cannaOwner = bin
                cannaGroup = bin
                DicDir = $(cannaLibDir)/dic
                #define JAPANESEMAN
                pubdicDir = $(CANNAROOT)/dic/ideo/pubdic


2. コンパイル

   コンパイルおよびインストールは X11 の Imakefile をベースに行われま
   す。Imakefile は 機種依存をなくした Makefile であり、Imakefile から
   そのマシン用の Makefile を作成し、実際の make を行います。Imakefile 
   から Makefile を作成するプログラムを imake と呼びます。imake (また
   は imake を呼び出すシェルスクリプトである xmkmf) は X11 ベースのフ
   リーソフトウェアをコンパイルするときに必要となりますので、お持ちで
   ないかたはこの機会にインストールされることをお勧めします。

   ここでは imake を持っていると仮定しての説明を行います。

   imake の環境が既に作成されている場合、

       xmkmf
       make canna

   と入力してください。

   xmkmf ではトップディレクトリの Makefile を Canna.conf のパラメタに
   したがって、作り直します。

   make canna では以下のことが行われます。

   (i) make Makefiles

     全ての下位ディレクトリにて Imakefile から Makefile を作成し直しま
     す。

  (ii) make clean

     各ディレクトリをクリアします。

 (iii) make includes

     色々なディレクトリから参照されるヘッダファイルを include ディレク
     トリに集めます。また、このとき、 accanna.h をはじめとするヘッダ
     ファイルの自動生成や、ディレクトリ階層の構築も行われます。特に、
     accanna.h の生成の際は configure スクリプトが実行されます。
     ディレクトリ階層の構築には mkdirhier と言うプログラムが必要です。
     mkdirhier が $(BINDIR) (通常は /usr/X11R6/bin) に存在することを確認
     してください。存在していない場合には、X11 のディストリビューション
     の xc/config/util (または xc/util) 下から入手して $(BINDIR) に
     インストールしておいてください。

  (iv) make depend

     各ディレクトリでのファイルの依存関係を Makefile に反映します。ま
     たこのとき yacc や lex の展開やシンボリックリンクファイルの作成な
     ども行われます。

     ここでも makedepend というプログラムが必要です。存在しない場合に
     は X11 のディストリビューションの xc/config (または xc/util) 下から
     入手してインストールしておいてください。

   (v) make

     実際にプログラムのコンパイルを行います。
    
   なお、何らかの理由で、 (iii) で実行された configure スクリプトが停止
   したり、不適切な出力を行った場合、問題を修正した後 make reconfig を実行
   すると、 configure をやり直すことができます。


3.インストール

  3.1 通信環境の設定

    かな漢字変換サーバとそのクライアント間における通信のためのポート番
    号を設定します。/etc/services に以下の1行を追加してください。

          canna        5680/tcp

    (NIS を使用している場合は、マスタサーバのデータベース等に設定して
    ください)。

  3.2 インストール

    『かんな』をインストールする場合、ソースのトップディレクトリで以下
    のいずれかのコマンドを実行してください。

      1) make install

          以下のうち 3) 〜 5) のインストールをします。


      2) make install.man

          各コマンドのマニュアルページを cannaManDir で指定されたディ
          レクトリにインストールします。

      3) make instserver

          『かんな』のかな漢字変換サーバ環境をインストールします。

      4) make instclient

          『かんな』のクライアント環境をインストールします。

      5) make instsgs

          『かんな』のライブラリやヘッダなどコンパイル環境をインストー
           ルします。

      6) make instmost

          『かんな』の辞書以外の全てのファイルをインストールします。

    それぞれ、Canna.conf に指定したディレクトリにインストールされます。


  3.3 各ディレクトリの構成について

    以下に『かんな』のソース構成について示します。
    
    -+ lib ----+- RK       かな漢字変換エンジンのライブラリです。
     |         +- RKC      かな漢字変換サーバとの通信用のライブラリです。
     |         +- RKindep  内部で使われる、RK層に依存しない基本ライブラリです。
     |         +- canna    クライアント用のライブラリです。
     |         |
     |         +- RKC16   ┐
     |         +- canna16 ┘それぞれ cannawc が16ビット幅のライブラリです。
     |
     |               これらのライブラリは $(libCannaDir) で指定された
     |               ディレクトリにインストールされます。
     |                 
     + server        かな漢字変換サーバ のディレクトリです。
     |               $(cannaSrvDir) で指定されたディレクトリにインストー
     |               ルされます。
     |
     + canna         ヘッダファイルです。
     |
     + cmd ----+*    コマンドです。
     |               $(cannaBinDir) で指定されたディレクトリにインストー
     |               ルされます。
     |
     + ccustom       カスタマイズファイル用エディタです。Lisp を意識し
     |               ないでカスタマイズが行えます。
     |
     + dic --+ ideo  かな漢字変換辞書です。
     |       |     
     |       + phono ローマ字かな変換テーブルです。
     |
     |                $(DicDir) で指定されたディレクトリにインストール 
     |               されます。
     |
     + canuum        『かんな』版 uum (TTY 用の日本語入力フロントエン
     |               ド)をがあります。
     |
     + misc          その他のファイルです。
     |
     + doc           各種ドキュメントが存在します。

  3.4 種々のファイルについて

    1) ログファイル

      かな漢字変換サーバは起動時にエラーメッセージ等を出力するログファ
      イルを作成します。$ErrDir で設定したディレクトリに作成され、ログ
      ファイルの名前は "CANNA0msgs" です。

      デフォルトでは以下に示すログファイルが作成されます。

                          /var/log/CANNA0msgs

4.運用

  4.1 サーバと辞書のオーナ・グループ

    辞書は容易に内容が書き換えられてしまったりしないように、アクセス権
    を制限する必要があります。例えばログイン名 canna、グループ名 canna 
    を作成し、辞書のオーナとグループをそれぞれ canna にしておくと良い
    でしょう。

    このとき、cannaserver だけは辞書の読み書きができるように、各辞書ディ
    レクトリ、辞書ファイルなどは、オーナ・グループ canna に対し読み書
    き権を開放し、アザーに対してはアクセス権を与えないようにします。
    cannaserver は root 権限で起動し、-u canna オプションを渡して canna
    ユーザ権限で動作させます。

    オーナ・グループは canna である必要は無く、他のユーザ権限でも結構です。
    デフォルトでは bin ユーザ、 bin グループに設定されています。

    辞書や cannaserver のオーナやグループの設定は Canna.conf の 
    cannaOwner、cannaGroup にて設定します。

    以下ではオーナ・グループをそれぞれ bin にする場合で例として説明を
    行います。

  4.2 かな漢字変換サーバの起動

    root で以下のコマンドを実行して、かな漢字変換サーバを起動します。

                # cannaserver -u bin

    cannaserver は自分自身で fork して、バックグラウンドジョブになりま
    すので、cannaserver の起動時に "&" をつける必要はありません。

    マシンの起動時に、自動的に cannaserver を立ち上げたい場合には、起
    動スクリプト(/etc/rc.local 等)で cannaserver を起動するように設定
    してください。その際ソケットが残っていると cannaserver が起
    動できないので、必ずソケットを削除してから起動してください。

    2. で述べたように普通に make を行えば、起動スクリプトのサンプルが
    misc/rc.canna に作られますので、詳しくはそちらを参照してください。

  4.3 かな漢字変換サーバの終了

    以下のコマンドを実行して、かな漢字変換サーバを終了させます。

                # cannakill

    かな漢字変換サーバは辞書情報の一部をメモリ上に保存しています。その 
    ため、かな漢字変換サーバを直接 SIGKILL などで kill した場合には、
    メモリ上の辞書情報が辞書ファイルに書き込まれない場合があります。か
    な漢字変換サーバを終了させる場合は、必ず cannakill で終了させるよ
    うにしてください。

    マシンの shutdown の際に自動的にかな漢字変換サーバを kill するよう
    にしたい場合には、shutdown スクリプト等で cannakill を起動するよう
    に設定してください。


  4.4 辞書関連

    (1)かな漢字変換辞書

      かな漢字変換辞書の置かれるディレクトリを『辞書ホームディレクトリ』
      と言います。これは "$(DicDir)" あるいは以下のようにコマンド引数で
      指定されます。
      
      (例) 『辞書ホームディレクトリ』を /var/lib/canna/dic にしたい場合。

                # cannaserver /var/lib/canna/dic


      『辞書ホームディレクトリ』は以下のように構成されています。

              -+-- *.cbp   ローマ字かな変換テーブル 
               |        
               +-- canna   システム辞書ディレクトリ
               |           
               +-- user/*  ユーザ辞書ディレクトリ
               |           
               +-- group/* グループ辞書ディレクトリ

      辞書ホームディレクトリとその下にあるディレクトリとファイルはすべ
      て、cannaserver が読み書きできるようにしてください(※ 4.1 を参照
      してください)。


    (2)ローマ字かな変換テーブル

      ローマ字かな変換テーブルファイルに関してはデフォルトでは 
      "/usr/local/canna/share/dic" の下にあるものを見にいきます。

      これは カスタマイズファイル "$HOME/.canna" でローマ字かな変換テー
      ブルをフルパスで指定することにより "/usr/local/canna/share/dic" の
      下以外に置くことが可能です。


  4.5 初期化(カスタマイズ)ファイル

    『かんな』では、ユーザ毎に初期化(カスタマイズ)ファイルを持つことが
    できます。このファイルにキーバインドや、ローマ字かな変換テーブル・
    かな漢字変換辞書等の設定を行うことによって、ユーザ毎に使用しやすい
    環境を整えることができます。


5. root になれない場合のコンパイルおよびインストール

   Canna3.6から、InstallAsUserマクロと、cannaPrefixが導入されたので、
   rootになれない場合のインストールが多少楽になりました。これを使う
   場合、例えば以下のようにコンパイル・インストールすると良いでしょう。

  5.1 Canna.conf の設定

   コマンドや辞書などがインストールされるディレクトリとして、自分のディ
   レクトリを指定します。また、辞書とかな漢字変換サーバのオーナとグルー
   プを自分のものにします。例えば以下のようになります。

                #define InstallAsUser
                cannaPrefix = /home/kon/canna
		...
                cannaOwner = kon
                cannaGroup = user

  5.2 コンパイルおよびインストール

   X11R6 の imake がすでにシステムにインストールされているのであれば、
   上記の Canna.conf を設定した後は、

      xmkmf
      make canna
      make install
      make install.man

   で、コンパイル・インストールが行えます。

   X11R6 がマシンにはインストールされていないが、ソースは入手可能であ
   ると言う場合は、X11R6 のソースの xc/config を持ってきて、まず、
   config の下を make してください。

   config の下のコンパイルに関しては、config/cf/Makefile.ini の中の
   BOOTSTRAPFLAG を各マシンに応じて必要な修正をして、

      make -f Makefile.ini

   にて、コンパイルします。

   make canna 中、mkdirhier を使用しますが、このコマンドは X11 の 
   $(BINDIR) を用いたフルパスで指定されています。これに対処するために、 
   config 下の適当なファイルをエディットするか、『かんな』の 
   Canna.conf にて、

      BINDIR = /home/kon/xutil

   のようにしてください(ちょっとトリッキーですけど)。

   以上の準備ができたら、『かんな』をコンパイルするディレクトリのトッ
   プディレクトリ(Canna.conf が存在するディレクトリ)にて、imake を相対
   パスで以下のように実行します。

     (例)
      % ../xc/config/imake/imake -I../xc/config/cf -DTOPDIR=../xc \
        -DCURDIR=../CannaXX

   あとは、

      % make Makefile
      % make canna
      % make install
      % make install.man

   を実行します。

  5.3 通信環境の設定

    root の権限がないと /etc/services は書き換えられません。ただし、
    /etc/services に記述がなくてもかな漢字変換サーバやかな漢字変換ライ
    ブラリはポート番号をとりあえず 5680 番で動くのでとりあえずは運用で
    きます。

    ただし、この状態では、cannaserver を起動するたびにログファイルにウォー
    ニングメッセージが出力されますのでご注意ください。


付録A 各種 OS での注意点

A.1  OS/2 をお使いの場合(この部分の記述は上野@日本アイ・ビー・エムに
     よるものです) (時代遅れになった部分があるかも知れません)

   1)『かんな』のコンパイルには emx 0.9c 以上が必要です。 emx 0.9c は
   ftp://ftp.leo.org や ftp://hobbes.nmsu.edu などから入手できます。

   2) XFree86 for OS/2 の imake が必要です。XFree86 for OS/2 は
   http://borneo.gmd.de/~veit/os2/xf86os2.html などから入手可能です。
   XFree86 for OS/2 3.2 の場合であれば、XF32base.zip と XF32prog.zip が
   最低限インストールされている必要があります。

   3) x:\XFree86\bin を PATH に加えてください (x: はインストールした
   ドライブ名です)。また環境変数 X11ROOT が最低限必要です。例えば E:
   ドライブのルートディレクトリにインストールした場合は、

      SET X11ROOT=E:

   を CONFIG.SYS に加えてください。

   4) XFree86/lib/X11/config 以下のファイルを書き換えます。

   os2.cf:
      #define InstallCmd install -> #define InstallCmd ginstall
      #define BourneShell  /**/  -> #define BourneShell cmd

   os2Lib.rules:
      #define HasSharedLibraries YES -> #define HasSharedLibraries NO

   5) GNU の sed/sort/awk/install が必要です。ftp://hobbes.nmsu.edu など
   に以下のようなファイル名でみつかります。

   gnused.zip
   gnuawk.zip
   gnufutil.zip (install はこれに含まれる)
   gnututil.zip (sort はこれに含まれる)

   また sort.exe と install.exe はそれぞれ gsortexe, ginstall.exe とリ
   ネームしておいてください。 これは OS/2 の標準の sort.exe, install.exe
   と区別するためです。

   6) Canna.conf を設定します。詳しくは「1.1 Canna.conf の設定」をご覧く
   ださい。 InstallAsUser フラグを用いるのが楽でしょう。

   7) 以下を実行します。

     [x:\Canna35] xmkmf
     [x:\Canna35] x11make Makefile
     [x:\Canna35] x11make canna
     [x:\Canna35] x11make install

   さらに詳しい説明は本文書の「2. コンパイル」以降をご覧ください。
   
以上

/* Copyright 1994 NEC Corporation, Tokyo, Japan.
 *
 * Permission to use, copy, modify, distribute and sell this software
 * and its documentation for any purpose is hereby granted without
 * fee, provided that the above copyright notice appear in all copies
 * and that both that copyright notice and this permission notice
 * appear in supporting documentation, and that the name of NEC
 * Corporation not be used in advertising or publicity pertaining to
 * distribution of the software without specific, written prior
 * permission.  NEC Corporation makes no representations about the
 * suitability of this software for any purpose.  It is provided "as
 * is" without express or implied warranty.
 *
 * NEC CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
 * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN 
 * NO EVENT SHALL NEC CORPORATION BE LIABLE FOR ANY SPECIAL, INDIRECT OR
 * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF 
 * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR 
 * OTHER TORTUOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 
 * PERFORMANCE OF THIS SOFTWARE. 
 */

($Id: INSTALL.jp,v 1.8 2003/09/25 15:24:31 aida_s Exp $)
