安定的な Perl アプリケーション運用のための perlbrew 運用テクニック
前提知識
- Perl5 は minor version 間ではバイナリ互換性が保証されている
- Perl5 の minor update では、bug fix しか基本的に行われない
- Perl5 Porters の保守的さ度合いは信用できる
perlbrew でセットアップするときに気をつけること
インストール名をデフォルトの perl-5.16.3
などとせず、perl-5.16
と minor version を含めないようにする。
例:
perlbrew install perl-5.16.2 --as perl-5.16
セキュリティフィックスがでた場合の処理
chromaticの記事で知ったのだが、perlbrew には upgrade-perl というコマンドがあり、最新のバージョン(マイナーアップデートのみ)にアップグレードすることが簡単にできる。
perlbrew upgrade-perl
これを利用すると、簡単にセキュリティフィックスをあてることが可能となる。
やっていることは ./configure -Dprefix=... で前のバージョンのディレクトリを上書きしているだけである。
このとき、perl-5.16.2 を perl-5.16 という名前でインストールしておいたのが生きてくる。perl 5.16.2 という名前でインストールしていると、perl-5.16.2 という名前なのに 5.16.3 がはいっているというよくわからない状況になってしまうのだ。
↓よくわからなくなってる例
(とはいえ、別にきもちわるいだけでとくに問題がない)
気をつけるべきはバイナリ互換性
当たり前のことながら、-Dusethreads
の有無などを変更したりすると、バイナリ互換性が失われるので、同じオプションでコンパイルする必要があることに注意しよう。
まとめ
perlbrew upgrade-perl
を使いこなすことにより安定的な運用が可能となってくる。
【追記】 perlbrew が古いと(0.51 とか)、library の path がうまくとおらないので、perlbrew self-upgrade
しておくことが重要です。
【追記】 なお、ある程度の規模感のサーバー台数があって、絶対におとしたらアカン!みたいな状況じゃなければ、こんなことをする必要はないですし、そもそも OS にはいってる perl をつかってれば、OS のアップデートパッチだけあててれば、セキュリティなど考える必要がありません。OS ってすごい!