【CentOS】apr-1.6.5のrpmパッケージを作ろうとしたらエラーになった件

Linux
スポンサーリンク
スポンサーリンク

関連記事

経緯

関連記事にてApache2.2.34のインストール手順をまとめたのですが、その中でapr-1.6.5をインストールしないといけない箇所がありました。

で、その手順に従ってapr-1.6.5をrpmbuildによりパッケージ化しようとしたのですが、そこで予期しないエラーが発生したため書き留めておきます。

未来の自分が困らないように・・・

詳細と解決方法

環境

 $ uname -a
Linux [ホスト名] 2.6.32-504.el6.x86_64
$cat /etc/redhat-release
CentOS release 6.6 (Final)

いや、アップデートしろよ・・

エラー内容

さて、問題のコマンドは以下となります。

# rpmbuild -ta apr-1.6.5.tar.gz

意気揚々と以上のコマンドを実行したのですが、以下のエラーが出力されてしまいました。

(前略) 
testsockets : /Line 131: Could not bind socket (99): Cannot assign requested address
-Line 189: Condition is false, but expected true FAILED 1 of 7
(中略)
apr_socket_sendfile()->0, sent 370*** bytes
After apr_socket_sendfile(), the kernel file pointer is at offset 0.
client: apr_socket_sendfile() worked as expected!
Waiting for a client to connect…
Processing a client…
server: apr_socket_sendfile() worked as expected!
Programs failed: testall
make: *** [check] Error 1

どうやらtestsocketsでしくっているようです。

しかも、アップデート対象のサーバ全てで起きているわけではなく、一部のサーバでしか発生していませんでした。

なんぞや?ってなって調べ始めました。

原因

ざっくり調べたところ、バグのようでした。

こちらのページが参考になりました。

ipv6を無効にしていると、socketテストに失敗してしまうようです。

対策

ipv6が無効になっているのか、有効になっているのかを確認してみました。

こちらのページを参考に・・・

# cat /etc/sysctl.conf
...
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
...

どうやら無効になっていそうです。

というわけで、有効にしてみました。

# cat /etc/sysctl.conf
...
net.ipv6.conf.all.disable_ipv6 = 0
net.ipv6.conf.default.disable_ipv6 = 0
...

コンフィグファイル編集後、sysctl.confを再読み込み

# sysctl -p

で、再度ビルドしてみました。

・・・無事成功!

あとがき

というわけで、解決できました。

サーバごとに挙動が違うのはipv6が有効になっているものもあったからですね。

それでは!

 

 

 

コメント

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