Linux(CentOS4.5)サーバにbind-9.4.1-P1を通常通りインストールするとサーバ起動時に「process `named' is using obsolete setsockopt SO_BSDCOMPAT」のエラーメッセージがコンソールに表示されます。このエラーメッセージは古いソケットオプションを使用しているLinuxに対応しているそうで、新しいLinixカーネル2.6には対応していないため警告メッセージとして表示されるようです。特に何も影響が内容なのでほっといても大丈夫なのですが、サーバ起動時に毎回でるのではあまり気持ちいいものではないのでエラーメッセージを表示させないようにインストールしてみました。
以下、インストールになります。
1. namedユーザの作成
# groupadd named
# useradd -g named -d /var/named -s /bin/false named
2. bindのインストールとエラーメッセージ対策
# cd /root/
# tar -zxvf bind-9.4.1-P1.tar.gz
# vi /root/bind-9.4.1-P1/lib/isc/unix/socket.c
----------------------------------------------------------------------------
//エラーメッセージを表示させないようにsocket.cを修正
// 1401行目くらいに下記のような行があるので以下のように修正
#if defined(USE_CMSG) || defined(SO_BSDCOMPAT)
↓
#if defined(USE_CMSG)
// 1495行目くらいにある下記の部分を削除
#ifdef SO_BSDCOMPAT
if (type != isc_sockettype_unix &&
setsockopt(sock->fd, SOL_SOCKET, SO_BSDCOMPAT,
(void *)&on, sizeof(on)) < 0) {
isc__strerror(errno, strbuf, sizeof(strbuf));
UNEXPECTED_ERROR(__FILE__, __LINE__,
"setsockopt(%d, SO_BSDCOMPAT) %s: %s",
sock->fd,
isc_msgcat_get(isc_msgcat, ISC_MSGSET_GENERAL,
ISC_MSG_FAILED, "failed"),
strbuf);
/* Press on... */
}
#endif
-------------------------------------------------------------------------------
# cd bind-9.4.1-P1
# ./configure --prefix=/usr --sysconfdir=/etc
# make
# make install
以上のようにsocket.cファイルを修正することで「process `named' is using obsolete setsockopt SO_BSDCOMPAT」のエラーメッセージが起動時に表示されなくります。