Я пытаюсь настроить unixODBC для подключения к базе данных Netezza, однако я получаю «Неопределенный символ: SSL_connect», когда пытаюсь подключиться с помощью isql.
В настоящее время используется: CentOS 5.5, unixODBC 2.3.0 (та же проблема с 2.2.11).
Я сделал следующее:
- Настроил LD_LIBRARY_PATH, ODBCINI и NZ_INI_FILE_PATH в соответствии с файлом README.txt, поставляемым с драйверами ODBC.
- Предполагается, что все библиотеки загружаются с помощью команды 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 месяцев назад, и это работало без проблем.
UPDATE:
Во-первых, ldd в файле libnzodbc.so выглядит хорошо. Все зависимости были удовлетворены.
Во-вторых, единственное, что я мог видеть в пропавшем файле, это файл libc.mo для локали en_US, поэтому я установил символическую ссылку на en_GB. К сожалению, он по-прежнему выдает ту же ошибку, хотя, похоже, он нашел все остальные библиотеки, которые ищет. Есть ли что-то еще в выводе strace, который я должен искать?
ОБНОВЛЕНИЕ 2:
Проблема, с которой я сталкиваюсь в настоящее время, заключается в том, что isql ищет gconv_end в ISO8859-1.so, однако этот символ не существует. Интересно, что этот символ не существует на моей виртуальной машине на сервере Ubuntu, и isql работает нормально. Обе версии unixODBC, указанные выше, имеют одинаковую проблему.
ОБНОВЛЕНИЕ 3:
O.K. Перезапустите ldd с опциями -d и -r, и да, проблемы все еще есть. Каждый символ SSL * отсутствует. Я предполагаю, что это означает, что я создал символическую ссылку на неправильный файл. Кто-нибудь знает, какой файл библиотеки ssl содержит SSL_connect?