У меня есть какой-то старый perl-код, который недавно перестал работать на коробке FreeBSD. Код, который не работает, выглядит (в простейшем виде) так:
#!/usr/local/bin/perl -w
use strict;
use DBI;
my $datasource = "DBI:mysql:dbname:hostname.domain.com";
my $user = "username";
my $pass = "password";
DBI->connect($datasource, $user, $pass);
Это происходит со следующей ошибкой:
/libexec/ld-elf.so.1: /usr/local/lib/mysql/libmysqlclient.so.15: Undefined symbol "gethostbyname_r"
Если я изменю источник данных на ссылку "localhost", код выполнится успешно.
Я переустановил mysql-client, DBI и DBD-mysql из портов; без эффекта.
Другие приложения на этом сервере (PHP, инструменты командной строки) могут без проблем получать доступ к базам данных mysql по имени хоста.
Предложения, как решить эту проблему?
ИЗМЕНЕНО ДЛЯ ДОБАВЛЕНИЯ: Я заметил, что в моей коробке есть и libmysqlclient.so.15
, и libmysqlclient_r.so.15
. Может ли быть проблема в том, что DBD :: mysql пытается использовать libmysqlclient, когда он должен использовать libmysqlclient_r? И если да, то как решить?