unixodbc and netezza ODBC driver issue (Undefined symbol: SSL_connect)
I'm trying to set up unixODBC to connect to a Netezza database, however I'm getting a "Undefined symbol: SSL_connect" when I try to connect using isql.
Currently using: CentOS 5.5, unixODBC 2.3.0 (Same issue with 2.2.11).
I have done the following:
- Configured the LD_LIBRARY_PATH, ODBCINI, and NZ_INI_FILE_PATH according to the README.txt that came with the ODBC drivers.
- Ensued that all libraries are loaded by using the ldd command and setting up symbolic links for libssl and libcrypto.
- Updated the /etc/ld.so.conf file to ensure the netezza drivers path is loaded.
- Used nm to confirm that the SSL_connect symbol is in the driver.
Running dltest against the file for this symbol reports a "file not found" error, which is what I normally get when I try to run isql -v, however I changed the LD_DEBUG environment variable to get additional debugging info, which led me to SSL_connect.
(FYI, export LD_DEBU开发者_JAVA百科G=files isql sospos
is what I used.)
Any thoughts? This is driving my crazy as it appears everything is there, but it's still not working. Worst part is that I set up the same thing on Ubuntu 10.10 months ago and it worked without any issues.
UPDATE:
First, ldd on the libnzodbc.so file looks good. All dependencies have been satisfied.
Second, the only thing I could see in the file that was missing was the libc.mo file for the en_US locale, so I set up a symbolic link to the en_GB one. Unfortunately, it's still throwing the same error even though it it looks like it found every other lib it's looking for. Is there anything else in the strace output I should be looking for?
UPDATE 2:
An issue I'm currently seeing is that isql is looking for gconv_end in ISO8859-1.so, however that symbol does not exist. Interestingly enough, the symbol does not exist on my Ubuntu server VM and isql works fine. Both versions of unixODBC I specified above have the same issue.
UPDATE 3:
O.K. Re-ran ldd with the -d and -r options and yes, there are still issues. Every SSL* symbol is missing. I'm guessing this means that I created a symbolic link to the wrong file. Anyone know which ssl library file contains SSL_connect?
O.K. Figured it out. It turns out the symbolic link I created was pointing to the wrong library file. Originally I did this:
(/usr/lib/) ln -s libssl3.so libssl.so.4
I should have done this:
(/usr/lib) ln -s ../../lib/libssl.so.0.9.8e libssl.so.4
Well, SSL_connect is from the OpenSSL libs. Maybe you could try using strace on isql and post the parts where it fails (I suspect) to load a libssl. It may be that your existing ssl lib doesn't match what the driver is looking for. What does ldd show on the driver lib?
If anyone is still looking at a similar issue, there's a django-netezza package that works well: https://github.com/msabramo/django-netezza
精彩评论