ある時点の ports tree
データセンター他においてある FreeBSD マシンのいくつかで、net-snmp の snmpd が異常にメモリを消費し、最後には core dump して落ちるという症状に遭遇しています。メモリリークしているようなのですが、
- OS が 4.x か 5.x かには依存していない
- net-snmp のバージョンが 5.1 か 5.2 かの違い? (最新の ports で入れた net-snmp 5.2_1 は落ちる、みたい...)
ということしか分かりません。なので、4.x と 5.x のマシンで一台ずつパッケージを 5.1 に downgrade して一日様子を見てみたところ、メモリの消費量は正常でした。よって FreeBSD マシンでメモリ消費量が異常なマシンは全て 5.1 に downgrade するハメに...
ところが 5.3-RELEASE-p2 のマシンで問題が。
で、仕方なく perl 5.8 に入れ替えてみたのですが、今度は
- qmail-scanner(mail/qmail-scanner) が動かなくなってしまった
のです orz。これはマズイ。うちでは outbound SMTP を全てウイルスチェックするために ipfw を使って qmail-scanner を噛ませた SMTP サーバに fwd しており、このままではメールが送れないというクレームが出てしまいます。
うーん、と無い脳みそを絞った結果、「perl5.6 のまま、net-snmp 5.1 を ports から入れるしかない」と思い至りました。でも、いつも cvsup 掛けるときには最新の ports を持ってきていたため、supfile の書き方が分かりません。それに net-snmp のためだけに ports tree 全体を古いものにするのはかなり無駄な気がします。
ということで「net-snmp の バージョン 5.1 系の ports skelton を入手するには?」ということで FreshPorts -- The Place For Ports からその 5.3-RELEASE の頃のファイルを一つずつダウンロードしようかと思ったのですが、files/ 以下の大量のパッチファイルを前に断念...
最終的に、以下のような supfile を書けば良いことに気づきました :-)。
# # $Id: ports-supfile,v 1.1 2003/11/11 01:13:21 ueda Exp $ # *default host=forest.netforest.co.jp *default base=/usr *default prefix=/usr *default release=cvs tag=. *default release=cvs tag=RELEASE_5_3_0 # *default delete use-rel-suffix # ports-all ports-net-mgmt
これで、FreeBSD 5.3.0-RELEASE 時点の ports tree から、ports/net-mgmt だけ持ってくることが出来ました。net-mgmt 以下の ports は数が少ないこともあり、短時間で取得でき、無事に net-snmp 5.1_2 をインストールすることができました。その後、設定ファイルを元に戻し、ports tree を最新の状態に戻したことは言うまでもありません。