FreeBSD ボックスで最近動作を停止した古い perl コードがいくつかあります。失敗するコードは (最も単純な形式で) 次のようになります。
#!/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_r を使用すべきときに libmysqlclient を使用しようとしている可能性がありますか? もしそうなら、どのように解決するのですか?