ようこそゲストさん

はんかくさい日報

2011/09/27(火) perl CPAN ExtUtils-MakeMaker のインストール時ハングアップ

perl の拡張モジュールをインストールする際、CPAN ( http://www.cpan.org/ ) のお世話になっている方々は非常に多いと思いますが、これは 数ヶ月前から悩んでいる内容。

同じ環境による同じ現象のバグ報告(#70232)が上がってはいます。
https://rt.cpan.org/Public/Bug/Display.html?id=70232

英語がダメダメなσ(^^) はこういう場に出れないのだが。。orz

 --- ここから
Manifying blib/man3/ExtUtils::MM_Any.3
MSTROUT/ExtUtils-MakeMaker-6.59.tar.gz
/usr/bin/make -- OK
Running make test
PERL_DL_NONLAZY=1 /usr/local/bin/perl "-Iblib/arch" "-Iblib/lib"
"-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib','blib/arch')" t/*.t
t/00compile.t ............. ok
t/arch_check.t ............ ok
t/backwards.t ............. ok
t/basic.t ................. ok
t/build_man.t ............. ok
t/cd.t .................... ok
t/config.t ................ ok
t/dir_target.t ............ ok
t/FIRST_MAKEFILE.t ........ ok
t/fix_libs.t .............. ok
t/fixin.t ................. ok
t/hints.t ................. ok
t/INST.t .................. ok
t/INST_PREFIX.t ........... ok
t/INSTALL_BASE.t .......... 1/20
 --- ここまで

t/INSTALL_BASE.t のところで、こんな感じでハングアップし、crtl+C でテストを中断する羽目になります。
このモジュールが 6.58 になったときからの現象で、perl のバージョンは 5.12 でも 5.14 でもこの現象は発生。現在の公開バージョンは 6.59 ですが、一向に解決されていません。

とりあえず、当方は、 force install ... で凌いでいます。

1: r-anazawa 『はじめまして。同じ問題にぶつかりました。 すでに解決されたかもしれませんが、Portsを最新版に更新して、 Perlをインストー...』 (2011/11/20 2:33)

2: たかはし@札幌 『情報ありがとうございます。 こちらでも、FreeBSD 8.2R-p4/Perl 5.14.1_3(Ports) にて、確認でき...』 (2011/11/22 23:45)

3: r-anazawa 『なるほど。上のパッチをあてる前、ExtUtils::MakeMaker の別バージョンも試しましたが、こちらでは相変わらずテスト...』 (2011/11/24 3:45)

4: たかはし@札幌 『・ExtUtils::MakeMaker の件  あーなるほど。  これですね → http://www.freebsd.org...』 (2011/11/25 1:39)

5: r-anazawa 『> ExtUtils::MakeMaker 確かに両方考えられますね。 有用な情報を提供いただき、感謝します。』 (2011/11/25 7:32)

2011/09/12(月) 電力用 MOSFET の消費電力計算方法

2011/09/12 19:59 電子工作
トランジスタには、コレクタ損失と呼ばれる電力損失があります。
同じようにFETにもドレイン損失と呼ばれる電力損失があります。

ここでは特に電力駆動に用いる MOSFET についての計算方法を示します。


青文字は、素子の特性をメーカカタログ・規格表などから参照。
緑文字は、設計者が決める部分。

swは、表記が悪いが、ここではスイッチング遷移時間を示します。
一般に、tr(上昇時間) < tf (下降時間) 且つ td(on) (ターンon時間) < td(off) (ターンoff時間) なので、ここで採用する値は、tf + toff とします。

もし、tr > tf だったり、ton > toff の場合は、値の大きい方を採用するといいでしょう。

ジュール発熱というのは、FET の on 抵抗による、抵抗発熱を言います。
最近の電力用MOSFET には、on 抵抗が 40mΩ以下のものもあり、TO-220タイプのものでも 10A 以上の直流電流を放熱板無しで扱うことが可能なケースもあります。

2011/09/12(月) 携帯向け音声ストリーミングファイルの形式

自分メモ。

docomo
3gpファイル
AAC LC モノラル ビットレート=22kbps サンプルレート=16kbps
ファイルの最大サイズ 10Mbyte

au
3g2ファイル
AAC LC モノラル ビットレート=22kbps サンプルレート=16kbps
ファイルの最大サイズ 2Mbyte

softbank
3gpファイル
AMR-NB モノラル ビットレート= 8kbps サンプルレート=8kbps
ファイルの最大サイズ 300kbyte

上記でないと、どうも上手く再生できないことが多い。
一番制限が厳しいのはソフトバンクで、このパラメータ以外では再生がまともに出来ない。
音質も極限まで落とす形になります。

特にファイルサイズが致命的で、約4分以上の音声ストリーミングは不可能です。
その点、docomo は 10Mbyte で AAR LC であれば、ステレオで 128kbps でも再生できます。但し、10MByte の制限に注意が必要です。

2011/09/03(土) SSL 証明書要求の際の 2048bit長キーの生成方法

2011/09/03 2:10 サーバ運営・管理
自分メモ、ということで・・

パスフレーズなしの秘密鍵(通常はこちら)
openssl genrsa -out www.example.com.key 2048


パスフレーズありの秘密鍵(専用サーバの場合)
openssl genrsa -des3 -out www.example.com.key 2048

トリプルDESでパスフレーズ設定。
途上で、設定したいパスフレーズを2回設問されるので、2回とも設定したいパスフレーズを入力。このとき、パスフレーズは2回とも同じものを入力しましょう。
忘れるとお手上げです。

あとはCSR(証明書要求)を作成。
openssl req -new -key www.example.com.key -out www.example.com.csr

設問に従って入力。
特に common name のところは間違わないように。
パスフレーズを設定した場合は、ここでパスフレーズの入力を求められます。

2011/09/01(木) SSL サーバ証明書の怪

2011/09/01 14:58 サーバ運営・管理
先ほど、8/25に更新申請し、新しい証明書を受け取ったしたものの、入れ替えを忘れていたため、数日間、コントロールパネルへのアクセスでセキュリティ警告が出る始末となっていましたorz

更新自体は先ほど終えましたが、何回か Apache が起動できなくて悩みました。
どこにもエラーメッセージが出ません。
が、なんと、原因はサーバ証明書の書式。

ご存知の方も多いと思いますが、サーバ証明書は暗号化されており、実態はテキストファイルです。そして、そのテキストファイルは
-----BEGIN CERTIFICATE-----

の行で始まり、
-----END CERTIFICATE-----

の行で終わります。

コピー&ペーストのミスで、最後の行が
-----END CERTIFICATE----

になっていただけで、 Apache が起動しません。

よーぅく見れば判りますが、最後のハイフン '-' が1個足りないだけなのです。

「サーバ証明書入れたら Apacheが起動しない」
と言う場合、証明書のフォーマットも疑って見るべきのようです。

2011/07/30(土) FreeBSD 9.0R のリリース作業開始

2011/07/30 21:39 サーバ運営・管理
筆者においては、FreeBSD 2.2.5 あたりから、ずっと使い続けている FreeBSD ですが、次のリリースは 9.0R になるようです。

9.0R の目玉となりそうなものは、
* OpenSSH に HPNサポート導入 ― SSL/SSH の転送速度が最大10倍くらいになる。
* Capsicum を導入 ― 本当に「唐辛子」を組みこむわけではありません。新たなセキュリティ機構の名称で、プログラムモジュール単位で細かなアクセス制御ができるようになるらしいです。

あと、
* BIND をベースシステムから外すか否かの検討 ― 今のところは実施保留

という話もあるようです。

予定通りに進んだことは一度も無いですが、一応、予定は組まれています。
http://www.freebsd.org/releases/9.0R/schedule.html

20110730.png

また、インストーラーが変わるようです。
名称も今までの sysinstall から bsdinstall に変わります。
画面などが変わるらしい上に、従来どおり日本語はサポートされない/日本語対応が間に合わないため、リリース後に時間とれれば、弊社サイトか、このブログで紹介したいと考えています。

2011/07/06(水) ルータの修理

2011/07/06 1:32 サーバ運営・管理
ルータというか、約10年使っているL3スイッチですが、
先日、筐体の一部が素手で触れないほど熱くなっており、
様子を見てみると、1台は3つある冷却ファン全てが逝っており、もう一台は3つある冷却ファンのうち、2つが逝っていて、もうひとつは逝くのが時間の問題であるのが確認できました。
このままでは、熱故障してしまう。

急遽、予備のスイッチングHUB をセットアップし、通信サービスを維持しつつ、調査開始。
ここにはお見せできないくらい、酷い綿ゴミの山(約10年分 orz)が築かれておりましたが、掃除機で吸い取った状態が以下:
20110706-1.jpg

20110706-2.jpg

コンデンサ膨張もなく、問題ありません。
さすがに連続稼動を意図した設計になっているみたい。
電源部も問題なさそうで、よくあの灼熱状態で動作していたなぁと。

早速、交換用ファンを調達し、修理・復旧しました。
冷却ファンは、大きさ 40mm で統一されていましたが、5V が 1つ、12V ものが 2つ。
12V ものは ATXパソコン用のものが使えます。これは比較的入手容易。
5V ものはやや特殊で、価格も高め。電子部品を扱っている販売店でないと入手困難です。

復旧後は生温かい感じになっています。

2011/07/01(金) perl 5.14.0 以降のバージョン + PostgreSQL 9.0.4 以前のバージョンにおける構築

2011/07/01 19:51 サーバ運営・管理
perl 5.14.0 以降は旧バージョンの perl とバイナリレベルでの互換がありません。
perl サポートを組み込むのであれば、再構築する必要があります。

また、perl 5.14.0 以降のバージョンと postgreSQL 9.0.4 までのバージョンの組み合わせでは、plperl の構築でコンパイルエラーになります。

postgreSQL 側のソースコードを以下の様に修正すると良いようです。
※該当行番号は、PostgreSQL のバージョンによって異なります。
20110701.png

修正後、再度コンパイルすることで解決します。
PostgreSQL 9.0.5 で解決されることが期待されます。

2011/06/25(土) /usr/local/lib/libldap.so: undefined reference to `fetchGetURL'

2011/06/25 3:02 サーバ運営・管理
openLDAP 2.4.25 を FreeBSD 7.x もしくは FreeBSD 8.x 上でソースコードから構築し、
openLDAP サポートを必要とする他のアプリケーションを構築しようとすると、

/usr/local/lib/libldap.so: undefined reference to `fetchGetURL'

のようなリンクエラーが出て構築できないという状況になる場合があります。
日本語での情報が全く無いため、記録しておきます。
google のお世話になりました。英語が苦手なのでちと苦労を。。(爆)

これは、openLDAP 2.4.24 以降の新しいバージョンで fetch(3) ライブラリをデフォルトで組み込まなくなったことによります。
FreeBSD の場合は、fetch(3) ライブラリはOS標準で用意されています。

OpenLDAP 2.4.23 以前と同じ挙動にするためには、openLDAP 2.4 コンパイルの configure 時に、

 --with-fetch

をconfigure オプションに追加します。
しかし、FreeBSD の場合、これだけでは駄目なのです。
コンパイル、インストールは何の問題もなくされるのですが、なんと、configure スクリプト自身にバグが潜んでいます。
以下のパッチを当てる必要があります:
@@ -22234,7 +22234,7 @@


    if test $ol_cv_lib_fetch != no ; then
-      LUTIL_LIBS="$LUTIL_LIBS $ol_link_fetch"
+      LIBS="$LIBS $ol_link_fetch"
      ol_link_fetch=freebsd
    elif test $ol_with_fetch != auto ; then

上記の修正後、--with-fetch オプションを追加した状態にて、いつもどおり configure から openLDAP 2.4 を構築することで解決します。

(追記 2011/07/14)
OpenLDAP 2.4.26 に於いて、このバグは解消されているようです。

2011/06/15(水) dovecot 2.0.13 を FreeBSD8.2R 上で構築

2011/06/15 17:19 サーバ運営・管理
ちょうど丸1年、メールサーバの更新をしていなかったのと、経験上、このままではセキュリティ耐性が急低下する状況(謎)だったので、集中メンテナンスを開始しています。

* dovecot 2.0.x のインストール準備
OSに dovecot と dovenull アカウントを作成。
# dovenull アカウントは 2.0 になってから必要になった

./configure 、make は v1.2.x と同じようにできる。

* dovecot 2.0 のコンフィギュレーションファイル dovecot.conf
v1.2 からは書式が大幅に変更されていて、正直難解なものになってしまった。
しかし、v1.2 のコンフィギュレーションファイルがあれば、v2.0 用に変換するツールが付いている。先ずは以下の要領で変換する:

# copy dovecot.conf dovecot.conf.old
# doveconf -n -c dovecot.conf.old > dovecot.conf

弊社では ver 1.2 からのアップグレードで、
これでOKかと言いたいところだが、リハーサルしてみると、実際はそのままではまともに起動しなかった。 dovecot.conf に以下の変更が必要だった:

service auth {
 executable = /usr/local/libexec/dovecot/dovecot-auth  ← 削除
 unix_listener /var/spool/postfix/private/auth {
  group = postdrop
  mode = 0660
  user = postfix
 }
 user = root
 vsz_limit = 128 M
}

ちなみにこれは、SMTP-AUTH に dovecot SASL を使う場合の設定。
これで起動できる。
また、SSL 署名ファイルの書式はちょっと特殊。

ssl_cert = </etc/postfix/tlskey/clione.basekernel.ne.jp.pem
ssl_key = </etc/postfix/tlskey/clione.basekernel.ne.jp.key

赤文字部分の '<' が何故か必要。消す必要はありません。
最初は変換エラーかと勝手に思い込んで、わざわざ削除してしまい、填ってしまった...orz

参考にどうぞ。