CentOS 6.2 に squid-3.1.18 をソースからインストールした時の備忘録です。

■squid公式
http://www.squid-cache.org/

■説明

CentOS6.2にsquid-3.1.18をインストールしようとしたところ以下のエラーが発生しました。

Debug.h:131: note:                 std::ostream& operator<<(std::ostream&, uint8_t)
ip/IpAddress.h:378: note:                 std::ostream& operator<<(std::ostream&, const IpAddress&)
String.cci:199: note:                 std::ostream& operator<<(std::ostream&, const String&)
base/AsyncCall.h:90: note:                 std::ostream& operator<<(std::ostream&, AsyncCall&)
DnsLookupDetails.h:26: note:                 std::ostream& operator<<(std::ostream&, const DnsLookupDetails&)
HttpRequestMethod.h:156: note:                 std::ostream& operator<<(std::ostream&, const HttpRequestMethod&)
mem_node.h:67: note:                 std::ostream& operator<<(std::ostream&, mem_node&)
make[3]: *** [store.o] エラー 1
make[3]: ディレクトリ `/root/test/squid-3.1.18/src' から出ます
make[2]: *** [all-recursive] エラー 1
make[2]: ディレクトリ `/root/test/squid-3.1.18/src' から出ます
make[1]: *** [all] エラー 2
make[1]: ディレクトリ `/root/test/squid-3.1.18/src' から出ます

調べてみるとsquidのバグみたいでした。
そこで、提供されているパッチを当て上記エラーを回避してみます。

■OS
CentOS 6.2 64bit

■パッチ提供アドレス
http://www.squid-cache.org/Versions/v3/3.1/changesets/

(1)squidをダウンロード
[root@example ~]# cd /usr/local/src/
[root@example src]# wget http://www.squid-cache.org/Versions/v3/3.1/squid-3.1.18.tar.gz

(2)パッチのダウンロード
[root@example src]# wget http://www.squid-cache.org/Versions/v3/3.1/changesets/squid-3.1-10415.patch
[root@example src]# wget http://www.squid-cache.org/Versions/v3/3.1/changesets/squid-3.1-10416.patch
[root@example src]# wget http://www.squid-cache.org/Versions/v3/3.1/changesets/squid-3.1-10417.patch
[root@example src]# wget http://www.squid-cache.org/Versions/v3/3.1/changesets/squid-3.1-10418.patch
[root@example src]# wget http://www.squid-cache.org/Versions/v3/3.1/changesets/squid-3.1-10419.patch
ハイライト部分が今回対象のバグパッチです。

(3)squid-3.1.18の解凍
[root@example src]# tar zxvf squid-3.1.18.tar.gz

(4)パッチを当てる
[root@example src]# cd squid-3.1.18
[root@example squid-3.1.18]# patch -p0 < ../squid-3.1-10415.patch
patching file src/Store.h
patching file src/store.cc
[root@example squid-3.1.18]# patch -p0 < ../squid-3.1-10416.patch
patching file src/Makefile.am
[root@example squid-3.1.18]# patch -p0 < ../squid-3.1-10417.patch
patching file src/fs/ufs/store_dir_ufs.cc
[root@example squid-3.1.18]# patch -p0 < ../squid-3.1-10418.patch
patching file src/external_acl.cc
[root@example squid-3.1.18]# patch -p0 < ../squid-3.1-10419.patch
patching file src/client_side_request.cc

(5)以下アドレスの手順でインストール
http://www.kurobuti.com/blog/?p=4938

終わり:-)

または、CentOSリポジトリからsrc.rpmダウンロードしてきてそのspecファイルやもろもろを利用してインストールしてもいいと思います。
その場合、specファイルのパッチは全て今回のパッチに書き直す必要がありますが:-)

すぐできるし、今度作ってみよう。

参考文献
1. http://d.hatena.ne.jp/tak_yah/20111207


1月 6, 2012 at 11:13 pm by 黒ぶちメガネ
Category: Linux, proxy