Denodo ODBC ドライバーのコンパイル

Denodo は、Windows および Linux 用の Denodo ODBC ドライバーを提供しています。これらは、ドライバーマネージャー unixODBC および iODBC と互換性があります。しかし、以下が必要になった場合に備えて、ドライバーのソースコードも同梱しています。

  1. ドライバーを Unix で使用する

  2. または、unixODBC または iODBC 以外のドライバーマネージャーを使用する

ここでは、Denodo ODBC ドライバーをコンパイルする方法について説明します。

Linux で ODBC ドライバーをコンパイルするための前提条件

Denodo ODBC ドライバーは、以下のパッケージとバージョンに依存しています。

  1. gcc

  2. unixODBC バージョン 2.2.14 以降。

  3. unixODBC-devel バージョン 2.2.14 以降 (一部の Linux ディストリビューションでは「unixodbc-dev」と呼ばれています)。

  4. openssl-devel (一部の Linux ディストリビューションでは「libssl-dev」呼ばれています): このパッケージは、ODBC ドライバーで Kerberos 認証をサポートしたい場合にのみ必要です。

  5. postgresql-devel バージョン 9.x 以降 (一部の Linux ディストリビューションでは「postgresql-server-dev-9.5」と呼ばれています)。

注釈

Kerberos 認証を使用して Denodo サーバーに接続する必要があり、 かつ 、Denodo の JDBC データソースの少なくとも 1 つがパススルーセッション資格情報を使用する場合は、 postgresql-devel パッケージをインストールしないでください 。これは後ほど手動で作成します。

ODBC ドライバーをコンパイルする前に、ドライバーをコンパイルするホストにこれらのパッケージがインストールされていることを確認してください。

RPM パッケージングシステムを使用する Linux ディストリビューション (Red Hat、CentOS など) の場合

  • 上記の すべてのパッケージ がインストールされていることを確認します。そのためには、 yum list installed <package name> を実行します。次に例を示します。

    yum list installed gcc postgresql-devel unixODBC unixODBC-devel openssl-devel
    

    次のようなテキストが出力されます。

    Installed Packages
    gcc.x86_64                                                     4.8.2-16.2.el7_0
    openssl-devel.x86_64                                            1:1.0.1e-60.el7
    postgresql-devel.x86_64                                            9.2.18-1.el7
    unixODBC.x86_64                                                    2.3.1-11.el7
    unixODBC-devel.x86_64                                              2.3.1-11.el7
    

    5 つ のパッケージがインストールされており、 かつ 、パッケージのバージョンが要件を満たしていることを確認します。あるパッケージがリストに表示されていない場合、そのパッケージをインストールする必要があります。

  • パッケージをインストールするには、 yum install <package name> コマンドを実行します。次に例を示します。

    sudo yum install openssl-devel
    

    「No package ... available.」が返された場合、この特定のディストリビューションではパッケージの名前が異なっていることを意味します。この場合、 yum list available <package name> コマンドでパッケージの名前を検索します。次に例を示します。

    yum list available *openssl-devel*
    

    パラメーターにアスタリスクが含まれていることに注意してください。これは、完全な名前ではなくパターンを渡すことができるためです。

    少なくとも 1 つのパッケージが返されます。その名前をコピーし、 yum install <package name> を使用してインストールします。


Ubuntu などの Debian パッケージングシステムに基づく Linux ディストリビューションの場合

  • 上記の すべてのパッケージ がインストールされていることを確認します。そのためには、 apt list --installed <package name> を実行します。次に例を示します。

    apt list --installed gcc postgresql-server-dev-9.5 unixODBC unixodbc-dev libssl-dev
    

    次のようなテキストが出力されます。

    Listing... Done
    gcc/trusty,now 4:4.8.2-1ubuntu6 amd64 [installed]
    libssl-dev/trusty-updates,trusty-security,now 1.0.1f-1ubuntu2.22 amd64 [installed]
    postgresql-server-dev-9.5/trusty-updates,now 9.5.14-0ubuntu0.14.04 amd64 [installed]
    unixodbc/trusty,now 2.2.14p2-5ubuntu5 amd64 [installed]
    unixodbc-dev/trusty,now 2.2.14p2-5ubuntu5 amd64 [installed]
    

    5 つ のパッケージがインストールされており、 かつ 、パッケージのバージョンが要件を満たしていることを確認します。あるパッケージがリストに表示されていない場合、そのパッケージをインストールする必要があります。

    パッケージ名は、RPM ベースのディストリビューションに関する説明の中で示したものとは異なります。これは、多くの Debian ベースのディストリビューションではパッケージ名が異なるためです。

  • あるパッケージがインストール されていない 場合、 apt-get install <package name> コマンドを使用してインストールします。

    sudo apt-get install unixODBC
    

    「Unable to locate package <package name>」が返された場合、この特定のディストリビューションではパッケージの名前が異なっていることを意味します。この場合、 apt list <package name> コマンドでパッケージの名前を検索します。次に例を示します。

    apt list *unixODBC*
    

    パラメーターにアスタリスクが含まれていることに注意してください。これは、完全な名前ではなくパターンを渡すことができるためです。

    少なくとも 1 つのパッケージが返されます。その名前をコピーし、 apt-get install <package name> を使用してインストールします。

注釈

sudo を実行する権限がない場合、「 su 」と入力して Enter キーを押し、「root」のパスワードを入力します。このセッションの期間中はルートユーザーになります。

ODBC ドライバーのコンパイル (標準の方法)

ここでは、Denodo ODBC ドライバーをコンパイルする方法について説明します。コマンドラインを開き、以下のコマンドを実行します。Denodo ODBC ドライバーは、そのドライバーが使用される クライアントマシンでコンパイルする 必要があります。

注釈

Kerberos 認証を使用して Denodo サーバーに接続する必要があり、 かつ 、Denodo の JDBC データソースの少なくとも 1 つがパススルーセッション資格情報を使用する場合は、このセクションの手順に 従わない でください。代わりに、「 転送可能チケットを取得するための ODBC ドライバーのコンパイル 」に進んでください。

# Important: in the line below, replace "<DENODO_ODBC_HOME>" with the path to the
# directory that contains the denodo-vdp-odbcdriver-linux.tar.gz file.
# This file can be obtained from <DENODO_HOME>/tools/client-drivers/odbc in
# the machine where the Denodo server is installed.

export DENODO_ODBC_HOME=<DENODO_ODBC_HOME>

cd $DENODO_ODBC_HOME

# Building the denodoODBC driver.
tar -xzf denodo-vdp-odbcdriver-linux.tar.gz
cd denodo-vdp-odbcdriver-linux/src/denodo-pgsqlodbc
./configure --prefix=$DENODO_ODBC_HOME/dist
make install

これでドライバーがコンパイルされました。ドライバーは「<DENODO_ODBC_HOME>/dist/lib」に保存されています。

依存関係が存在しないために ./configure または make が失敗した場合は、「 Troubleshooting the Compilation of the Denodo ODBC Driver 」に進みます。たとえば、次のエラーで ./configure が失敗した場合です。

configure: error: odbc_config not found (required for unixODBC build)

転送可能チケットを取得するための ODBC ドライバーのコンパイル

ここでは、Denodo ODBC ドライバーをコンパイルして、「転送可能」 Kerberos チケットを取得できるようにする方法について説明します。これが必要なのは、Kerberos 認証を使用する必要があり、Denodo の JDBC データソースの少なくとも 1 つがパススルーセッション資格情報を使用する場合です。このドライバーは、ログイン/パスワード認証に使用することもできます。この機能が必要ない場合は、 上記 の手順に従います。

注釈

次のプロセス中に、システムで patch コマンドを使用できる必要があります。

ドライバーが使用されるクライアントマシンに接続し、コマンドラインを開き、以下のコマンドを実行します。

# Important: in the line below, replace "<DENODO_ODBC_HOME>" with the path to the
# directory that contains the denodo-vdp-odbcdriver-linux.tar.gz file.
# This file can be obtained from <DENODO_HOME>/tools/client-drivers/odbc in
# the machine where the Denodo server is installed.

export DENODO_ODBC_HOME=<DENODO_ODBC_HOME>

cd $DENODO_ODBC_HOME
tar -xzf denodo-vdp-odbcdriver-linux.tar.gz
cd denodo-vdp-odbcdriver-linux/src

# Downloading the source code of PostgreSQL
wget https://ftp.postgresql.org/pub/source/v9.5.14/postgresql-9.5.14.tar.gz
tar -xzf postgresql-9.5.14.tar.gz

# The file "denodo-vdp-odbcdriver-linux.tar.gz" includes a patch that modifies the
# libpq library of PostgreSQL so the Kerberos authentication works with Denodo.
cd postgresql-9.5.14
patch ./src/interfaces/libpq/fe-auth.c ./libpq.patch

# Building libpq library included with PostgreSQL.
./configure --with-krb-srvnam=HTTP --with-openssl --without-readline --prefix=$DENODO_ODBC_HOME/dist/postgresql
make install

# Building the denodoODBC driver.
cd $DENODO_ODBC_HOME/denodo-vdp-odbcdriver-linux/src/denodo-pgsqlodbc
./configure --with-libpq=$DENODO_ODBC_HOME/dist/postgresql/bin/pg_config --prefix=$DENODO_ODBC_HOME/dist
make install

# Moving libpq next to the denodoODBC driver.
cd $DENODO_ODBC_HOME/dist
cp postgresql/lib/libpq.so.5 lib/

これでドライバーがコンパイルされました。ドライバーは「<DENODO_ODBC_HOME>/dist/lib」に保存されています。再コンパイルされたライブラリ libpq は同じディレクトリに存在します。

注釈

Denodo ODBC をロードするときにシステムが依存側ライブラリ libpq.so を発見できるように、再コンパイルされた libpq.so.5 のパスを環境変数 LD_LIBRARY_PATH または LIBPATH に追加する必要が生じる場合があります。

依存関係が存在しないために ./configure または make が失敗した場合は、 以下 のセクションに進みます。たとえば、次のエラーで ./configure が失敗した場合です。

configure: error: odbc_config not found (required for unixODBC build)

Denodo ODBC ドライバーのコンパイルのトラブルシューティング

Denodo ODBC ドライバーのコンパイル中に問題が発生した場合は、以下のことを試してください。

  1. Denodo ODBC ドライバーで必要なパッケージがインストールされていること (そのバージョンを含む) を確認します。

  2. それらが正しいパッケージである場合、パッケージ UnixODBC と PostgreSQL-devel を手動でコンパイルします。そのためには、以下のコマンドを実行します。

「PostgreSQL-devel」ライブラリの libpq モジュールのコンパイル

# Important: in the line below, replace "<DENODO_ODBC_HOME>" with the path to the
# directory that contains the denodo-vdp-odbcdriver-linux.tar.gz file.
# This file can be obtained from <DENODO_HOME>/tools/client-drivers/odbc in
# the machine where the Denodo server is installed.

export DENODO_ODBC_HOME=<DENODO_ODBC_HOME>

cd $DENODO_ODBC_HOME

# Downloading and building libpq included with PostgreSQL.
wget https://ftp.postgresql.org/pub/source/v9.5.14/postgresql-9.5.14.tar.gz
tar -xzf postgresql-9.5.14.tar.gz
cd postgresql-9.5.14
./configure --with-krb-srvnam=HTTP --with-openssl --without-readline --prefix=$DENODO_ODBC_HOME/dist/postgresql
make install

UnixODBC のコンパイル

cd $DENODO_ODBC_HOME

# Downloading and building unixODBC.
wget http://www.unixodbc.org/unixODBC-2.3.4.tar.gz
tar -xzf unixODBC-2.3.4.tar.gz
cd unixODBC-2.3.4
./configure
make install

上記でコンパイルした libpq ライブラリを使用して Denodo ODBC ドライバーを再度コンパイルします。

cd $DENODO_ODBC_HOME

# Building the denodoODBC driver.
tar -xzf denodo-vdp-odbcdriver-linux.tar.gz
cd $DENODO_ODBC_HOME/denodo-vdp-odbcdriver-linux/src/denodo-pgsqlodbc
./configure --with-libpq=$DENODO_ODBC_HOME/dist/postgresql/bin/pg_config --prefix=$DENODO_ODBC_HOME/dist
make install

これらのコマンドのいずれも失敗しなかった場合、ドライバーは「<DENODO_ODBC_HOME>/dist/lib」に保存されています。