Netezza データベースに接続するように unixODBC をセットアップしようとしていますが、isql を使用して接続しようとすると、「Undefined symbol: SSL_connect」というメッセージが表示されます。
現在使用中: CentOS 5.5、unixODBC 2.3.0 (2.2.11 と同じ問題)。
私は次のことをしました:
- ODBC ドライバーに付属の README.txt に従って、LD_LIBRARY_PATH、ODBCINI、および NZ_INI_FILE_PATH を構成しました。
- ldd コマンドを使用し、libssl と libcrypto のシンボリック リンクを設定することで、すべてのライブラリが読み込まれるようになりました。
- /etc/ld.so.conf ファイルを更新して、netezza ドライバー パスが確実に読み込まれるようにしました。
- nm を使用して、SSL_connect シンボルがドライバーに含まれていることを確認しました。
このシンボルのファイルに対して dltest を実行すると、「ファイルが見つかりません」というエラーが報告されます。これは、isql -v を実行しようとすると通常発生するものですが、LD_DEBUG 環境変数を変更して追加のデバッグ情報を取得し、SSL_connect につながりました。 .
(参考までに、export LD_DEBUG=files isql sospos
私が使用したものです。)
何かご意見は?すべてがそこにあるように見えるので、これは私の頭を悩ませていますが、まだ機能していません。最悪の部分は、Ubuntu 10.10 か月前に同じことをセットアップし、問題なく動作したことです。
アップデート:
まず、libnzodbc.so ファイルの ldd は問題ないようです。すべての依存関係が満たされました。
第 2 に、欠落していたファイルで確認できたのは、en_US ロケールの libc.mo ファイルだけだったので、en_GB ロケールへのシンボリック リンクを設定しました。残念ながら、探している他のすべてのライブラリが見つかったように見えても、同じエラーがスローされます。strace の出力に他に探すべきものはありますか?
更新 2:
私が現在見ている問題は、isql が ISO8859-1.so で gconv_end を探しているということですが、そのシンボルは存在しません。興味深いことに、シンボルは私の Ubuntu サーバー VM に存在せず、isql は正常に動作します。上記で指定した unixODBC の両方のバージョンには、同じ問題があります。
更新 3:
OK -d オプションと -r オプションを指定して ldd を再実行しました。はい、まだ問題があります。すべての SSL* 記号が欠落しています。これは、間違ったファイルへのシンボリック リンクを作成したことを意味していると思います。SSL_connect が含まれている ssl ライブラリ ファイルを知っている人はいますか?