tokuhirom's blog

安定的な 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 ってすごい!

Created: 2013-03-13 06:02:02 UTC
Updated: 2013-03-13 06:02:02 UTC