[解決!]undefined symbol: isc__socket_sendtov2

スポンサーリンク

原因と解決方法

原因は、
namedやdigが利用するライブラリ(bind-libs)が正しいものを参照していなかったからだということにたどり着きました。

まずは「bind-libs」が提供するパッケージを確認してみました。

# rpm -ql bind-libs-9.8.2-0.37.rc1.el6_7.5.x86_64
/usr/lib64/libbind9.so.80
/usr/lib64/libbind9.so.80.0.4
/usr/lib64/libdns.so.81
/usr/lib64/libdns.so.81.4.1
/usr/lib64/libisc.so.83
/usr/lib64/libisc.so.83.0.3
/usr/lib64/libisccc.so.80
/usr/lib64/libisccc.so.80.0.0
/usr/lib64/libisccfg.so.82
/usr/lib64/libisccfg.so.82.0.1
/usr/lib64/liblwres.so.80
/usr/lib64/liblwres.so.80.0.2
#

上記コマンド結果を対象に「ls -la」コマンドを用いて、そのファイルの現状を確認してみました。

[root@infra ld.so.conf.d]# ls -la `rpm -ql bind-libs-9.8.2-0.37.rc1.el6_7.5.x86_64 `
lrwxrwxrwx 1 root root 18 1月 24 22:39 2016 /usr/lib64/libbind9.so.80 -> libbind9.so.80.0.4
-rwxr-xr-x 1 root root 49936 12月 17 02:46 2015 /usr/lib64/libbind9.so.80.0.4
lrwxrwxrwx 1 root root 16 1月 24 22:39 2016 /usr/lib64/libdns.so.81 -> libdns.so.81.6.0
-rwxr-xr-x 1 root root 1680288 12月 17 02:46 2015 /usr/lib64/libdns.so.81.4.1
lrwxrwxrwx 1 root root 16 1月 24 22:39 2016 /usr/lib64/libisc.so.83 -> libisc.so.83.0.5
-rwxr-xr-x 1 root root 360048 12月 17 02:46 2015 /usr/lib64/libisc.so.83.0.3
lrwxrwxrwx 1 root root 18 1月 24 22:39 2016 /usr/lib64/libisccc.so.80 -> libisccc.so.80.0.1
-rwxr-xr-x 1 root root 32056 12月 17 02:46 2015 /usr/lib64/libisccc.so.80.0.0
lrwxrwxrwx 1 root root 19 1月 24 22:39 2016 /usr/lib64/libisccfg.so.82 -> libisccfg.so.82.0.1
-rwxr-xr-x 1 root root 137664 12月 17 02:46 2015 /usr/lib64/libisccfg.so.82.0.1
lrwxrwxrwx 1 root root 18 1月 24 22:39 2016 /usr/lib64/liblwres.so.80 -> liblwres.so.80.0.2
-rwxr-xr-x 1 root root 73336 12月 17 02:46 2015 /usr/lib64/liblwres.so.80.0.2
[root@infra ld.so.conf.d]#

パッと見気付かなかったのですが、いくつかのライブラリの参照先がおかしかったのでそこを直しました。

「おかしかった」の具体例をだしますと、
以下の2行に注目してみましょう。

lrwxrwxrwx 1 root root 16 1月 24 22:39 2016 /usr/lib64/libdns.so.81 -> libdns.so.81.6.0
 -rwxr-xr-x 1 root root 1680288 12月 17 02:46 2015 /usr/lib64/libdns.so.81.4.1

これは、bind-libsに「/usr/lib64/libdns.so.81」と「/usr/lib64/libdns.so.81.4.1」が含まれているから表示されているものなのですが、「/usr/lib64/libdns.so.81」が見ている先は、「/usr/lib64/libdns.so.81.6.0を見ています。

本来は
/usr/lib64/libdns.so.81 -> libdns.so.81.4.1 であるべきところが
/usr/lib64/libdns.so.81 -> libdns.so.81.6.0 となっているのが問題なのかと。

このように、最新のbind-libsに含まれているライブラリをリンク先として参照していないものをすべて確認し、参照先と参照元を削除し、リンクの再作成を行い解決に至りました。

現在のbind-libsが提供するものと、現状が異なるものを赤字にしてみました。

# ls -la `rpm -ql bind-libs-9.8.2-0.37.rc1.el6_7.5.x86_64 `
lrwxrwxrwx 1 root root 18 1月 24 22:39 2016 /usr/lib64/libbind9.so.80 -> libbind9.so.80.0.4
-rwxr-xr-x 1 root root 49936 12月 17 02:46 2015 /usr/lib64/libbind9.so.80.0.4
lrwxrwxrwx 1 root root 16 1月 24 22:39 2016 /usr/lib64/libdns.so.81 -> libdns.so.81.6.0
-rwxr-xr-x 1 root root 1680288 12月 17 02:46 2015 /usr/lib64/libdns.so.81.4.1
lrwxrwxrwx 1 root root 16 1月 24 22:39 2016 /usr/lib64/libisc.so.83 -> libisc.so.83.0.5
-rwxr-xr-x 1 root root 360048 12月 17 02:46 2015 /usr/lib64/libisc.so.83.0.3
lrwxrwxrwx 1 root root 18 1月 24 22:39 2016 /usr/lib64/libisccc.so.80 -> libisccc.so.80.0.1
-rwxr-xr-x 1 root root 32056 12月 17 02:46 2015 /usr/lib64/libisccc.so.80.0.0
lrwxrwxrwx 1 root root 19 1月 24 22:39 2016 /usr/lib64/libisccfg.so.82 -> libisccfg.so.82.0.1
-rwxr-xr-x 1 root root 137664 12月 17 02:46 2015 /usr/lib64/libisccfg.so.82.0.1
lrwxrwxrwx 1 root root 18 1月 24 22:39 2016 /usr/lib64/liblwres.so.80 -> liblwres.so.80.0.2
-rwxr-xr-x 1 root root 73336 12月 17 02:46 2015 /usr/lib64/liblwres.so.80.0.2
#

該当の参照を修正するために、

  • リンク元とリンク先の削除
  • 正しいリンクの再作成

を行いました。

# rm -rf /usr/lib64/libdns.so.81 /usr/lib64/libdns.so.81.6.0
# ln -s /usr/lib64/libdns.so.81.4.1 /usr/lib64/libdns.so.81
#
# rm -rf /usr/lib64/libisc.so.83 /usr/lib64/libisc.so.83.0.5
# ln -s /usr/lib64/libisc.so.83.0.3 /usr/lib64/libisc.so.83
#
# rm -rf /usr/lib64/libisccc.so.80 /usr/lib64/libisccc.so.80.0.1
# ln -s /usr/lib64/libisccc.so.80.0.0 /usr/lib64/libisccc.so.80
#

これで晴れて問題解決!

digも実行できるしnamedも起動できるようになりました。

めでたしめでたし

コメント

タイトルとURLをコピーしました