/*
 * INSTALL
 *
 */

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

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

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

 (1) SONY NEWS、HP-UX、386BSD、BSD/386、EWS-UX/V(CISC)、FT-UX、JLE な
     しの SunOS をお使いの方は、まず付録 A の該当部分に目をお通しくだ
     さい。

 (2) X11/Xosdefs.h で X_WCHAR を define していたり、cc のオプションに 
     -DNOTSTDHDRS を付けている場合にはまず付録 A.10 に目をお通しくださ
     い。

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

   % xmkmf
   % make Makefile
   % make canna
   (ここに７分〜６０分ほどかかります)
   % su
   # make install
   # make install.man

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


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

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

   『かんな』Version 3.2 に関しては以下のマシンでコンパイル確認してお
   ります。

    マシン               ＯＳ                                 コンパイラ
    Sparc Station 2     SunOS 4.1.2 + JLE 1.1.2              gcc 2.4.5
    Sparc Station 2	Solaris 2.2 (SVR4)                   cc
    Sparc Station 10    SunOS 4.1.3 - JLE 1.1.3              gcc-2.5.8
    Sparc IPX           SunOS 4.1.1 - JLE 1.1.1
    Sparc 1             SunOS 4.1.1 - JLE 1.1.1
    SS2                 SunOS 4.1.2 - JLE 1.1.2              gcc-2.5.8
    HP A 9000/720,730   HP-UX A.08.07                        /bin/cc
    HP 9000/720         HP-UX8.05                            /bin/cc
    HP 9000/425         HP-UX9.00                            gcc2.5.8
    COMPAQ DESKPRO 4/33i UNIX System V Release 4.2           /usr/ccs/bin/cc
    SONY NWS-1750       NEWS-OS Release 4.2.1C #0            gcc-2.5.8
    NWS-3860            NEWS-OS 4.2R                         /bin/cc
    EWS 4800/35		EWS-UX/V 10.1 (SYSV)                 /bin/cc
    EWS 4800/220	EWS-UX/V(Rel 4.2) R9.1 (SVR4.2)	     /usr/abiccs/bin/cc
    IBM-PC 互換機       FreeBSD 1.1R                         gcc 2.4.5
    IBM-PC 互換機       FreeBSD 1.1.5(RELEASE)
    IBM-PC 互換機       BSD/386 v1.1                         gcc 1.42

   また Version 3.2b1 までの版は以下のマシンでコンパイル確認されていま
   す。これらのマシン以外のマシンでコンパイルを行ったり動作させたかた
   は是非 Canna@astec.co.jp までご連絡ください。

    マシン               ＯＳ                                 コンパイラ
    Sparc Station 2     SunOS 4.1.2 + JLE 1.1.2              gcc 2.4.5
    Sparc Station 2	Solaris 2.2 (SVR4)                   cc
    SS 2/10/IPX/IPC     SunOS 4.1.3(GENERIC)                 gcc 2.5.8
    Sun SS2             Solaris 2.3                          gcc-2.5.8
    Sparc Station 10/41 SunOS 4.1.3+JLE1.1.3
    SUN 630MP           SunOS Release 4.1.3-JLE1.1.3
    東芝 SPARC-LT       SunOS Release 4.1.1-JLE1.1.1 OS/AS=V4.11
    PC                  NEXTSTEP 3.1J for Intel Processors   gcc 2.5.8
    PC-486GR+ODP        386bsd-pc98c2                        gcc-2.5.8
    PC-9801FA(+DX2-64MHz) 386bsd-0.9-pc98-c2                 gcc-2.5.8
    PC-9801BX           PANIX Ver.3.0                        gcc
    PC-9801             PANIX for98 Ver3.0
    486DX33MHz          Linux Slackware 1.1.1                gcc 2.5.8
    Macintosh LC475 KT7 MachTen R2.1.1VM                     gcc 2.5.8
    HP A 9000/720,730   HP-UX A.08.07                        /bin/cc
    HP9000 715/50       HP-UX 9.03, 9.05                     /bin/cc
    SONY NWS-1750       NEWS-OS Release 4.2.1C #0            gcc-2.5.8
    SONY NWS-1460       NEWS-OS Release 4.2.1C
    NWS-3720            NEWS-OS Release 6.0.1 (SVR4.2)       /usr/ccs/bin/cc
    DECsystem 5240      日本語ULTRIX 4.3                     /bin/cc
    IBM Sys./6000 M220  AIX Version 3                        /usr/bin/cc
    IBM RS/6000 570     AIX Ver3.2.5
    EWS 4800/350,210	EWS-UX/V(Rel 4.2) R8.1 (SVR4.2)	     /usr/bin/cc
    EWS 4800/350,210	EWS-UX/V(Rel 4.0) R5.3 (SVR4.0)	     /usr/bin/cc
    EWS 4800/20		EWS-UX/V R9.1/10.1 (SYSV)            /usr/bin/cc

   『かんな』のコンパイルに関して何らかの問題があった場合にも 
   Canna@astec.co.jp にお問い合わせください。

   Canna@astec.co.jp は『かんな』に関するメーリングリストです。
   Canna@astec.co.jp に加入なさりたい場合には 
   Canna-request@astec.co.jp までお申込ください。

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

   Version 1.2 から Version 2.2 への変更点、およびそれ以降の変更点につ
   いては CHANGES.jp をご覧ください。


1. 前準備

  1.1 Canna.conf の設定

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

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

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

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

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

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

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

    ErrDir          ログファイルをインストールするディレクトリです。

    LockDir         ロックファイルをインストールするディレクトリです。

    wcharDefinition wchar_t としてシステムのものを使うかどうかを指定し
                    ます。

    Wlib            wchar_t 関連の関数が入っているライブラリを指定しま
                    す。libc に入っている場合にはブランクのままにして
                    おきます。 System V では通常 -lw です。

    JapaneseLocale  日本語を使うときの LANG 環境変数の値を指定します。


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

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

    pointerIntegerDef
		    ポインタのサイズが long のサイズよりも大きい場合で、
		    long long 型が存在する場合はここに -DBIGPOINTER を
		    定義してください(例えば SX3 の SUPER-UX の場合)。

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

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

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

    LockFile        ロックファイルの名前です。

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



   エンジン切替え機能を用いる場合には以下の設定も必要です。エンジン切
   替え機能を用いない場合には設定は不要です。エンジン切り替え機能を用
   いる場合には別のドキュメント doc/misc/engine.tx もご一読ください。

    engineSwitch    かな漢字変換エンジンの切り替え機能を利用するかどうか
                    を指定します。指定は #define するかしないかで行い
                    ます。

    kinput2SrcDir   kinput2 のソースが置いてあるディレクトリを指定しま
                    す。

    wnn4SrcDir      Wnn4 のソースが置いてあるディレクトリを指定します。

    sj3SrcDir       Sj3 のソースが置いてあるディレクトリを指定します。

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


                cannaBinDir = /usr/local/canna/bin
                cannaSrvDir = /usr/local/canna/bin
                cannaLibDir = /usr/local/canna/lib
                cannaManDir = /usr/local/canna/man
                cannaIncDir = /usr/local/canna/include/canna
                libCannaDir = /usr/lib
                ErrDir = /usr/spool/canna
                LockDir = /usr/spool/canna/lock
                wcharDefinition = -DCANNA_WCHAR
                Wlib =
                JapaneseLocale = japan
                cannaOwner = bin
                cannaGroup = bin
                pointerIntegerDef =
                sharedLibExtension = so.1
                cannaDsoRev = 1
                DicDir = $(cannaLibDir)/dic
                LockFile = .CANNALOCK
                #define JAPANESEMAN
                /* #define engineSwitch */
                kinput2SrcDir = /work/X11R5/contrib/im/kinput2
                wnn4SrcDir = /work/X11R5/contrib/im/Xsi/Wnn

   wcharDefinition は、OS の wchar_t 定義と mbstowcs などの関数定義を
   用いる時には何も指定しません。OS が wchar_t の定義を行っていなかっ
   たり、mbstowcs などの関数を持っていなかったり、あるいは mbstowcs を
   持っていても日本語環境 (/usr/lib/locale/ja_JP など)を用意していない
   場合には -DCANNA_WCHAR を指定してください。

   -DCANNA_WCHAR を指定しなかった場合には JapaneseLocale の設定が必要
   となります。OS の定義しているロケール名を設定してください。このとき
   設定するロケール名は、EUC コードを用いるロケール名を用いてください。
   ロケール名には以下のようなものがあります。

    japanese    SUN JLE
    japan       NEC EWS4800
    ja_JP.EUC   SONY NEWS

  1.2 widedef.h の設定

   本バージョンでは、-DCANNA_WCHAR が付いている場合をデフォルトとし、
   wchar_t として 4 バイト幅、32 ビット表現のものを使うようにしました。

   OS の wchar_t 表現に合わせたいかたは以下の注意を良く読み、
   -DCANNA_WCHAR をはずしてください。

   -DCANNA_WCHAR を設定しなかった場合には OS の wchar_t 定義などが正し
   く参照されるように注意する必要があります。少なくとも wchar_t の定義
   だけは正しく参照されるように canna/widedef.h を修正してください。

   特に GCC を用いる時などに、どのヘッダのどの定義が使われるかについて
   細心の注意が必要です。

   widedef.h の以下の行を、利用する OS に合わせて変更してください。

    /* replace widec.h instead, if SunOS 4.0 */
    #include <stddef.h>

   また、SunOS の JLE なし版や、EWS-UX/V など、wchar_t 型の定義がなさ
   れていても _WCHAR_T マクロが定義されていないため wchar_t の typedef 
   が重複して行われることがあります。wchar_t 型の定義の時に _WCHAR_T 
   マクロの定義も同時に行われることを確認してください。wchar_t 型の定義
   の典型的な例は以下のようになります。

    #ifndef _WCHAR_T
    #define _WCHAR_T
    typedef unsigned long wchar_t;
    #endif

   SunOS の JLE なし版や、EWS-UX/V などの対処法に関しては本文書の最後
   の部分に説明を書きましたので参照してください。


2. コンパイル

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

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

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

       xmkmf; make Makefile
       make canna

   と入力してください。

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

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

   (i) make Makefiles

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

  (ii) make clean

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

 (iii) make includes

     色々なディレクトリから参照されるヘッダファイルを include ディレク
     トリに集めます。また、このとき、ディレクトリ階層の構築も行われま
     す。ディレクトリ階層の構築には mkdirhier と言うプログラムが必要で
     す。mkdirhier が $(BINDIR)(通常は /usr/bin/X11) に存在することを
     確認してください。存在していない場合には、Ｘウィンドウのリリーステー
     プの mit/util 下から入手して $(BINDIR) にインストールしておいてく
     ださい。

  (iv) make depend

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

     ここでも makedepend というプログラムが必要です。存在しない場合に
     はＸウィンドウのリリーステープの mit/util 下から入手してインストー
     ルしておいてください。

   (v) make

     実際にプログラムのコンパイルを行います。


3.インストール

  3.1 通信環境の設定

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

          canna        5680/tcp

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

    「かんな」を以前から利用していた場合 /etc/services に同じポート番 
   号で iroha というサービスが登録されている場合があります。その場合 
   以前の名前でサービスポートを参照する場合もあると思われますので、そ 
   の行はそのまま残しておいて、さらに canna に関する行を追加するよう 
   にしてください。

  3.2 インストール

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

      1) make install

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


      2) make install.man

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

      3) make instserver

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

      4) make instclient

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

      5) make instsgs

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

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


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

    以下に『かんな』のソース構成について示します。
    
    -+ lib ----+- RK       かな漢字変換エンジンのライブラリです。
     |         +- RKC      かな漢字変換サーバとの通信用のライブラリです。
     |         +- canna    クライアント用のライブラリです。
     |         +- RKWnn    jserver と接続するためのライブラリです
     |         |           (※kinput2 ライブラリが必要です)。
     |         +- RKSj3    sj3serv と接続するためのライブラリです
     |         |
     |         +- RKC16  ┐
     |         +- canna16│それぞれ wchar_t が16ビット幅のライブラリです。
     |         +- RKWnn16│
     |         +- RKSj316┘
     |
     |               これらのライブラリは $(libCannaDir) で指定された
     |               ディレクトリにインストールされます。
     |                 
     + server        かな漢字変換サーバ のディレクトリです。
     |               $(cannaSrvDir) で指定されたディレクトリにインストー
     |               ルされます。
     |
     + canna         ヘッダファイルです。
     |
     + cmd ----+*    コマンドです。
     |               $(cannaBinDir) で指定されたディレクトリにインストー
     |               ルされます。
     |
     + ccustom       カスタマイズファイル用エディタです。Lisp を意識し
     |               ないでカスタマイズが行えます。
     |
     + dic ----+ ideo
     |         |     かな漢字変換辞書です。
     |         + phono
     |               ローマ字かな変換テーブルです。
     |
     |                $(DicDir) で指定されたディレクトリにインストール 
     |               されます。
     |
     + canuum        『かんな』版 uum (TTY 用の日本語入力フロントエン
     |               ド)を作成するためのパッチおよび追加ファイルがあり
     |               ます。
     |
     + sample        サンプルクライアントです。
     |
     + misc          その他のファイルです。
     |
     + doc           各種ドキュメントが存在します。

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

    1) ログファイル

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

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

                          /usr/spool/canna/CANNA0msgs

     2) ロックファイル

           『かんな』では複数のかな漢字変換サーバを同じポート番号で起
           動することができません。これを防ぐために、かな漢字変換サー
           バは立ち上がると同時にロックファイルを作成します。
           
           ロックファイルは $LockDir/$LockFile で指定されます。デフォ
           ルトでは以下に示すロックファイルが作成されます。

                          /usr/spool/canna/lock/.CANNALOCK

           ロックファイルが作成できない場合には、かな漢字変換サーバを
           終了します。

      ※注
        ロックファイルやログファイルが作られるディレクトリはデフォルト
        では /usr/spool/canna になっていますが、設定によって /tmp など
        にする場合が多いようです。したがって、chown や chmod は行わな
        いようにしています。これらのディレクトリを /usr/spool/canna な
        どに設定する場合にはディレクトリの所有者とパーミッションを適宜
        変更して下さい。

  3.5 メッセージングについて

    『かんな』の辞書メンテナンスコマンドのいくつかはメッセージングが行
    われています。したがって、Solaris 2.1 や EWS-UX/V(Rel4.0) などの 
    System V Release 4 をベースとした OS にて『かんな』を用いる場合に
    は LANG 環境変数(あるいはより細かい指定で LC_MESSAGES 環境変数)に
    て日本語を指示する文字列(例えば japanese や japan、ja_JP.EUC など)
    を指定すると各種メッセージが日本語メッセージに切り替わります(デフォ
    ルトは英語です)。

    各種コマンド用の日本語メッセージファイルは cmd/catdic/cannacmd.jpn 
    として存在します。このメッセージファイルを、例えば、

     # mkmsgs -i japan cannacmd.jpn cannacmd

    と打つことによりシステムのメッセージディレクトリにインストールして
    ください(EWS-UX/V(Rel4.0)の例)。

    実際にはシステムによって mkmsgs コマンド以外のコマンドを使うことも
    あると思います。各システム添付のマニュアルのメッセージングに関する
    部分を参照してください。


4.運用

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

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

    このとき、cannaserver だけは辞書の読み書きができるように、各辞書ディ
    レクトリ、辞書ファイルなどは、オーナ・グループ canna に対し読み書
    き権を開放し、アザーに対してはアクセス権を与えないようにします。
    cannaserver はオーナとグループをそれぞれ canna にし、setuid ビット
    と setgid ビットを立てておきます。

    System V ではオーナ・グループを canna の代わりに bin にしても良い
    でしょう。

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

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

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

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

                # cannaserver

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

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

    例えば、"/etc/rc.local" の中で以下のように設定すると良いでしょう。

                rm -f /tmp/.CANNALOCK*
                /usr/local/canna/bin/cannaserver
                echo 'cannaserver started.'


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

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

                # cannakill

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

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


  4.4 辞書関連

    (1)かな漢字変換辞書

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

                # cannaserver /usr/lib/canna/dic


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

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

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


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

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

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


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

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


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

   root になれない場合は例えば以下のようにコンパイル・インストールする
   と良いでしょう。

  5.1 Canna.conf の設定

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

                cannaBinDir = /home/kon/canna/bin
                cannaSrvDir = /home/kon/canna/bin
                cannaManDir = /home/kon/canna/man
                cannaLibDir = /home/kon/canna/lib
                cannaIncDir = /home/kon/canna/include/canna
                libCannaDir = /home/kon/canna/lib
                DicDir = $(cannaLibDir)/dic
                ErrDir = /home/kon/spool/canna
                LockDir = /home/kon/spool/canna/lock
                LockFile = .CANNALOCK
                wcharDefinition = -DCANNA_WCHAR
                Wlib =
                JapaneseLocale = japanese
                sharedLibExtension = so.1
                cannaOwner = kon
                cannaGroup = user

   さらに以下の記述も Canna.conf に追加してください。

                INCROOT = /home/kon/canna/include

   また、Canna.conf 内で chown、chgrp、chmod などを行うコマンドが以下
   のように定義されていますが、下記のように直してください。

 《現定義》

   /* 以下の３つは root にならないでインストールするのであれば echo に
      変えてください。 */
   CHOWN = chown
   CHGRP = chgrp
   CHMOD = chmod

 《root になれない場合の定義》

   CHOWN = echo
   CHGRP = echo
   CHMOD = echo

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

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

      xmkmf
      make Makefile
      make canna
      make install
      make install.man

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

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

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

      make -f Makefile.ini

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

   util の下のコンパイルに関しては、util 直下のディレクトリにて、

      ../config/imake -I../config -DTOPDIR=.. -DCURDIR=Canna32

   と打って、Imakefile から Makefile を作った後、

      make Makefiles
      make 

   で、util 下のコンパイルを行ってください。その後は util 下の各コマン
   ドを自分のホームディレクトリ下の特定のディレクトリに移動し、そのディ
   レクトリをコマンドサーチパスに含めておいてください。

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

      BINDIR = /home/kon/xutil

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

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

     (例)
      % ../config/imake -I../config

   あとは、

      % make Makefile
      % make canna
      % make install

   を実行します。

  5.3 通信環境の設定

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

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


付録Ａ 各種 OS での注意点

A.1 EWS-UX/V(CISC 版) の場合

   EWS-UX/V では stdio.h で wchar_t の定義が行われます。このとき OS の
   バージョンによっては _WCHAR_T の定義がなされませんで、以下のように 
   wchar_t の周辺部分を書き換えてください。

    #ifndef _WCHAR_T
    #define _WCHAR_T
    typedef unsigned short  wchar;
    typedef unsigned short  wchar_t;        /* R31KNCK02 */
    #endif

   /usr/include/stdio.h を直接書き換えるのがためらわれる場合には、2. 
   の (iii) まで実行した状態で、/usr/include/stdio.h を『かんな』のトッ
   プディレクトリの include/ の下に持ってきて書き換え、(iv) 以降を実行
   するようにするのも良いでしょう。

A.2 FT-UX/V の場合

   -Xc オプションでコンパイルすると、stdio.h と sys/byteorder.h とで 
   warning が発生します。気になる人はヘッダファイルを修正してください。

A.3 SunOS の場合

  ・JLE なしの場合

   /usr/include/sys/stdtypes.h で wchar_t の定義がありますが、以下のよ
   うに変更してください。

    #ifndef _WCHAR_T
    #define _WCHAR_T
    typedef	unsigned short	wchar_t; /* big enough for biggest char set */
    #endif

   さらに、wcharDefinition で -DCANNA_WCHAR を定義するのが良いでしょう。

   /usr/include/sys/stdtypes.h を直接書き換えるのがためらわれる場合に
   は、2. の (iii) まで実行した状態で、/usr/include/sys/stdtypes.h を
   『かんな』のトップディレクトリの include/sys/ の下に持ってきて書き
   換え、(iv) 以降を実行するようにするのも良いでしょう。

  ・shared object を利用する場合

   shared object を利用する場合には Canna.conf 内の shared object のリ
   ビジョンを指定する部分にメジャーリビジョンとマイナーリビジョンの２
   つのリビジョンが必要となります。そこで、

    cannaDsoRev = 1.1

   のように２つのリビジョンを指定するようにお願いします。

A.4 SONY NEWS の場合

   SONY NEWS の日本語環境は SJIS と EUC の両方をスイッチすることが可能
   です。『かんな』ではソースのところどころに EUC 文字列が入っています
   ので NEWS でコンパイルするときは LANG 環境変数に EUC 環境を指定する
   名前を設定し、tty の設定を EUC に変えてからコンパイルしてください。

   具体的には以下のようにします(csh の場合)。

    % setenv LANG ja_JP.EUC
    % stty euc sys

A.5 HP-UX の場合 (この部分は松沢氏による記述です)
   HP-UX で共有ライブラリを使う場合、ライブラリはオブジェクトがリンク
   された時に指定されたパス名で参照されます。例えば、 libcanna.sl を
   /usr/local/lib/libcanna.sl という名前で参照させたいのならばリンクを
   するときに libcanna.sl を /usr/local/lib に置いてリンクをしなければ
   いけません。そこで少々手間がかかりますが、次の手順でのインストール
   をお勧めします。

     1) Canna.conf で UseInstalledLibCanna を「NO」とします。
     2) make canna を行ないます。
     3) make install を行ないます。
     4) Canna.conf で UseInstalledLibCanna を「YES」とします。
     5) make canna を行ないます。
     3) make install を行ないます。

   今の所 HP-UX には imake は含まれていません。また MIT から頒布された
   X11R5 には HP-UX 用の共用ライブラリ作成用のコンフィグレーションファ
   イルは含まれていません。これらについては下記サイトからアンサポートで
   頒布されているコンパイル済みオブジェクト、コンフィグファイルなどが
   参考になるかも知れません。

     hpcvaaz.cv.hp.com [15.255.72.15] ~ftp/pub/MitX11R5

A.6 386BSD、BSD/386 など NET/2 をベースとしている OS をお使いの場合、

   4.4BSD の stddef.h のなかでの wchar_t の定義は以下のようになってい
   ます。

     #ifdef	_WCHAR_T_
     typedef	_WCHAR_T_	wchar_t;
     #undef	_WCHAR_T_
     #endif

   このままでは他の OS での _WCHAR_T_ の使いかたと矛盾しておりコンパイ
   ル時にエラーが発生します。これは近い将来の 4.4BSD では以下のように
   変更される予定のようです。

     #ifdef	_BSD_WCHAR_T_
     typedef	_BSD_WCHAR_T_	wchar_t;
     #undef	_BSD_WCHAR_T_
     #endif

   これにあわせて machine/ansi.h の _WCHAR_T_ を _BSD_WCHAR_T_ に変え
   てください。さらに stdlib.h、stddef.h の上記定義を、

     #ifdef	_BSD_WCHAR_T_
     #ifndef    _WCHAR_T
     #define    _WCHAR_T
     typedef	_BSD_WCHAR_T_	wchar_t;
     #endif
     #undef	_BSD_WCHAR_T_
     #endif

   のように変更してください。

   FreeBSD 1.1.5(RELEASE) では、stdlib.h の中で、

     #ifdef	_WCHAR_T_
      typedef	_WCHAR_T_	wchar_t;
      #undef	_WCHAR_T_
     #endif
     #ifdef  _BSD_WCHAR_T_
      #ifndef _ANSI_SOURCE
       typedef _BSD_WCHAR_T_   rune_t;
      #endif
      typedef _BSD_WCHAR_T_   wchar_t;
      #undef  _BSD_WCHAR_T_
     #endif

   のようになっているとの報告があります。このような場合は、#ifdef
   _WCHAR_T_ からそれに対応する #endif までを削除してから前述の作業を
   行うと良いでしょう。

   /usr/include/stddef.h 等を直接書き換えるのがためらわれる場合には、
   2. の (iii) まで実行した状態で、/usr/include/stddef.h 等を『かんな』
   のトップディレクトリの include/ の下に持ってきて書き換え、(iv) 以降
   を実行するようにするのも良いでしょう。

   また、ccustom を 386BSD で用いる場合には ccustom/README.386 を参照
   してください。

A.7 MACHTEN をお使いの場合

   上記 A.6 の machine/ansi.h を machine/machtypes.h と読み替えた上で
   同じ変更を行ってください。

A.8 NeXTのwcharDefinitionの定義(この部分はSRAのひろのぶ氏による記述です)

   1)NeXTSTEP 3.x(J)ではCanna.confのwcharDefinitionにWCHAR16を定義して
   コンパイルしてください。

   wcharDefinition = -DCANNA_WCHAR -DWCHAR16


   2)NeXTSTEP 3.0Jではwchar_tの定義がstddef.hの中の定義とコンフリクト
   します。これを避けるには、NeXTSTEP 3.0Jの 
   /NextDeveloper/Headers/ansi/m68k/stddef.hへ次のパッチを入れててくだ
   さい。

------------( cut here )----------------
14a15,16
> #ifndef _WCHAR_T
> #define _WCHAR_T
15a18
> #endif
-------------( end )----------------

   # cd /NextDeveloper/Headers/ansi/m68k
   # patch stddef.h < /tmp/stddef.h.patch

   3) /lib/cppの仕様が違う点

   NeXTSTEPは/lib/cppの仕様が違うのでcmd/の下のシェルコマンド

	cannakill
	dpbindic
	mkromdic 
	canvert
	mkbindic

   は正しくインストールできません。gnuのCコンパイラのソースコードから
   cpp を取り出してくるか、他のマシンで既に作成しているものをコピーし
   てくるか、他のマシンのcppをrshで使うかしてみてください。


   例： cannakillの場合 --- GNU Emacsのcccpを使う(注意1)

   NeXT> cd cmd
   NeXT> make clean
   NeXT> make CPP="/usr/local/bin/cccp"


   (注意1)Emacsのcccpを使うと各ファイルの最初のコメント部分で1部

   /**/ 

   というのがファイルの中に残ってしまいます。これはエディタで修正して
   ください。

A.9 AIX をお使いの場合(この部分は IBM の古畑氏による記述です)

   imake は OS のインストール TAPE の X11dev.src に含まれるので, これ
   をインストールするか, MITの R[56] を使うかのいづれかが必要です.

A.10 X11/Xosdefs.h で、X_WCHAR を #define している場合や、cc で
    -DNOSTDHDRS が定義されている場合。

   X_WCHAR が #define されていたり、NOSTDHDRS が定義されている場合、 
   Xlib.h をインクルードすると wchar_t の typedef が Xlib.h で行われて
   しまうようになります。

   X11R6 に付いて来るままの Xlib.h では、wchar_t の typedef が、

    #ifndef X_WCHAR
    #include <stddef.h>
    #else
    /* replace this with #include or typedef appropriate for your system */
    typedef unsigned long wchar_t;
    #endif

   となっており、無造作に wchar_t が定義されています。

    /* replace this with #include or typedef appropriate for your system */

   とある通り、typedef をシステムに合った #include に書き換えるか、少
   なくとも typedef を以下のように _WCHAR_T マクロのチェックで囲むかし
   てください。

    #ifndef X_WCHAR
    #include <stddef.h>
    #else
    #ifndef _WCHAR_T
    #define _WCHAR_T
    typedef unsigned long wchar_t;
    #endif
    #endif

   システムの Xlib.h を書き換えるのがためらわれる場合は、 2. の (iii) 
   まで実行した状態で、/usr/include/X11/Xlib.h を『かんな』のトップディ
   レクトリの include/X11/ の下に持ってきて書き換え、 (iv) 以降を実行
   するようにするのも良いでしょう。

以上

/* 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 2.31 1994/07/21 06:49:47 misao Exp $)
