7.5. ApplixWare

ApplixWareは 少なくとも複数のプラットフォームでサポートされている ODBCデータベースインタフェースを持っています。 ApplixWare4.4.2は Linux上のPostgres7.0で、 Postgresのディストリビューションに含まれている psqlODBCドライバを使用して動作確認されています。

7.5.1. 設定

PostgresODBC ソフトウェアに接続するためには、ApplixWareは 正しく設定される必要があります。

ApplixWareデータベース接続を可能にする

これらの説明はLinux用の ApplixWare4.4.2のため のものです。より詳細はLinux Sys Adminの オンラインブックを参照して下さい。

  1. libodbc.so(ODBCドライバマネージャー) 共有ライブラリをelfodbcが認知できるように axnet.cnfを書き換える必要があります。 このライブラリはApplixWareディストリビューションに含まれていますが、 axnet.cnfを修正して、このライブラリの正しい位置を指すようにする必要があります。

    ルートで、 applixroot/applix/axdata/axnet.cnf を編集して下さい。

    1. axnet.cnfの下記で始まる 行を見つけて下さい。

      #libFor elfodbc /ax/...
      	 

    2. その行のコメントを外して有効にして下さい。

      libFor elfodbc applixroot/applix/axdata/axshlib/lib
      	 
      これはODBCサポートライブラリを このディレクトリで探すようにelfodbcに指示しています。 一般的に、Applix/optにインストールされているので、 絶対パスは/opt/applix/axdata/axshlib/libと なりますが、Applixを別の場所に インストールした場合はそれに合ったパスを設定して下さい。

  2. 上記の説明のように、.odbc.iniを 作成して下さい。また、

    TextAsLongVarchar=0
           
    のフラグを、データベース特定の.odbc.iniに 追加すると、フィールドの表示は**BLOB**のように なりません。

ApplixWare ODBC接続のテスト

  1. Applix Dataを起動させて下さい。

  2. 使用したいPostgresデータベースを選択して下さい。

    1. Query->Choose Serverを選択して下さい。

    2. ODBCを選択し、Browseを クリックして下さい。.odbc.iniで設定した データベースが現れるはずです。Host: fieldが 空であることを確認して下さい。(空でない場合、axnetはデータベースを 検索するために他のマシンと接続しようとします。)

    3. Browseで開かれたダイアログボックスからデータベースを 選択し、OKをクリックして下さい。

    4. 認証ダイアログで、ユーザ名とパスワードを入力し、 OKをクリックして下さい。

    左下の端に"Starting elfodbc server"と 表示されているはずです。エラーメッセージのダイアログが 表示された場合には、下記のデバッグ方法のセクションを 参照して下さい。

  3. データウィンドウの左下に'Ready'メッセージが表示されます。 これは問い合わせを入力できる状態であることを意味します。

  4. Query->Choose tablesでテーブルを選択し、データベースに 接続するためにQuery->Queryを選択して下さい。最初の50行ほどが 表示されます。

7.5.2. よくある問題点

Applix Dataを使って ODBC接続を行う際に下記のようなメッセージ が表示される場合があります。

Cannot launch gateway on server

elfodbclibodbc.soを 見つけることができなかったことを意味します。 axnet.cnfを確認して下さい。

Error from ODBC Gateway: IM003::[iODBC][Driver Manager]Specified driver could not be loaded

.odbc.iniで指定されているドライバを libodbc.soが見つけることができなかったことを 意味します。設定を確認して下さい。

Server: Broken Pipe

ドライバのプロセスが、他の問題によって終了したことを 意味します。Postgres ODBCの最新のバージョンではないことが 原因として考えられます。

setuid to 256: failed to launch gateway

9月にリリースされたApplixWare v4.4.1 (Linuxの初の公式ODBCサポートがあるリリース) では、ユーザ名が8文字を越える長さの場合、少々問題が生じます。 その問題の解説はSteve Campbell氏によるものです ()。

著者: 寄贈:Steve Campbell (), 1998-10-20

axnetプログラムのセキュリティには、 少々問題があるようです。axnetは ユーザの代わりにさまざまなことを行うので、複数のユーザシステムでは ルートのセキュリティを実行しながら(各ユーザのディレクトリ内に 読み書きができるため)使用すべきです。しかし、この方法をお勧めするのは少々躊躇してしまいます。 この方法がどんなセキュリティホールを作りだすか分からないからです。

7.5.3. ApplixWare ODBC接続のデバッグ

接続問題のデバッグの方法としては、Unixシステムの straceユーティリティを使用する方法が あげられます。

straceを使用してのデバッグ方法

  1. applixwareを起動させて下さい。

  2. axnetプロセスに対してstraceを 開始させて下さい。例えば、

    % ps -aucx | grep ax 
           
    では、下記のように表示されます。
    cary   10432  0.0  2.6  1740   392  ?  S  Oct  9  0:00 axnet
    cary   27883  0.9 31.0 12692  4596  ?  S   10:24  0:04 axmain
           

    そして、下記のコマンドを実行して下さい。

    % strace -f -s 1024 -p 10432
           

  3. straceの結果を確認して下さい。

    Caryからの捕捉: ApplixWareからのエラーメッセージの 多くはstderrに出力されますが、その stderrが実際にどこに出力されるのかが 不明なため、straceを使用されることを お勧めします。

一例として、"Cannot launch gateway on server"が 表示された後、axnetにstraceを実行すると下記のものが 表示されました。

[pid 27947] open("/usr/lib/libodbc.so", O_RDONLY) = -1 ENOENT
(No such file or directory)
[pid 27947] open("/lib/libodbc.so", O_RDONLY) = -1 ENOENT
(No such file or directory)
[pid 27947] write(2, "/usr2/applix/axdata/elfodbc:
can't load library 'libodbc.so'\n", 61) = -1 EIO (I/O error)
     
これは、applix elfodbcはlibodbc.soを 見つけることができなかったということを意味しています。 これからもお分かり頂けますように、axnet.cnfを変更する必要があります。

7.5.4. ApplixWare Demoを起動させる

ApplixWareデータチュートリアルを読み進める前に、 まず、チュートリアルが扱っているサンプルテーブルを作成する必要が あります。テーブルを作成する際に使用されているELFマクロは 多くのデータベースの列をNULL状態にしようとしますが、現在の Postgresでは、これは不可能となっています。

この問題を解決するためには、下記のことを実行して下さい。

ApplixWare Demoを編集する

  1. ローカルディレクトリに /opt/applix/axdata/eng/Demos/sqldemo.am をコピーして下さい。

  2. コピーしたローカルのsqldemo.amの 内容を下記のように編集して下さい。

    1. 'null_clause = "NULL"という行を検索します。

    2. これを'null_clause = ""'に変更します。

  3. Applix Macro Editorを起動させて下さい。

  4. Macro Editorでsqldemo.am ファイルを開いて下さい。

  5. File->Compile and Saveを選択して下さい。

  6. Macro Editorを終了させて下さい。

  7. Applix Dataを起動させて下さい。

  8. *->Run Macroを選択して下さい。

  9. "sqldemo"と入力し、OKを クリックして下さい。

    左下にあるデータウィンドウのステータスラインに、進行状況が 表示されます。

  10. これでサンプルテーブルが参照できます。

7.5.5. 有用なマクロ

標準Applix起動マクロファイルにデータベースのログイン名と パスワード情報を追加することができます。下記のものは ~/axhome/macros/login.amファイルの 例です。

macro login
set_set_system_var@("sql_username@","tgl")
set_system_var@("sql_passwd@","no$way")
endmacro
     

Caution

ユーザ名やパスワード情報が書かれたファイルの保護には 十分ご注意下さい。