perl 5.8 から 5.10 に移行したらいろいろgdgdになった

| 0 Comments | 0 TrackBacks

perl 5.8 から 5.10 に移行したらいろいろgdgdになったらしく、MTOS が perl の panic を引き起こすようになりました。とりあえず MTOS 専用に perl 5.8 を入れたヴァーチャルマシーンを作ってしのぐことにしました。

VMware Server 2 101586 を 122956 に更新

perl をアップグレードした影響は VMware にまで及んでおり、ヴァーチャルマシーンが起動してくれません!

なので、VMware Server もアップグレードしました。

ubuntu 8 server を入れる

VMware Server の Web UI から、事前割当・2G 分割を指示しても sparse file を作りやがります。ここら辺は前からおかしいですね。

vmware-vdiskmanager が使うライブラリが変な場所を参照してたので、変な symlink を貼ってその場しのぎしました。

  • ln -s /usr/local/lib/vmware /usr/local/bin/libdir

sparse file でなく、実容量を確保するようにしてディスクイメージを作り直します。

  • vmware-vdiskmanager -c -s 8GB -a lsilogic -t 3 mtdisk.vmdk

あとは適当にインスコります。

インスコ後にやったことは、

  • apt-get install emacs22-nox lv build-essential subversion ncurses-term nfs-common
  • /etc/default/rcS を UTC=no
  • /etc/network/interfaces, /etc/networks
  • apt-get install apache2 apache2-mpm-prefork libapache2-mod-fcgid

という感じで作業しました。

MTOS を設定し直す

方針としては、

  • 動かないと困る cgi に関してのみバック(ヴァーチャルマシーン)へ移行
  • フロントとバックの両方から同じディレクトリに見えるように nfs mount

と、いじる範囲を最小限にするようにしました。

blog.woremacx.com/MT/mt*.cgi へのアクセスをリバースプロクシでヴァーチャルマシーンに飛ばすようにしました。が、mt.cgi にアクセスしても cgi が動いてくれないので mt-check.cgi で確認することにしました。なんと、mt-check.cgi までうまく動いてくれません。

Got an error: Can't locate object method "configure" via package "MT::ObjectDriverFactory" at lib/MT.pm line 1013.

MT::ObjectDriverFactory 周りが足りなくて中途半端な表示になっていました。DBI 関連だろうということで、

  • apt-get install libdbd-mysql-perl

するとうまく進めました。それから、mt-config.cgi に足りないと言われたものをインスコしました。(Crypt::DSA に関しては、テストが止まってしまうので除外)

  • apt-get install libarchive-zip-perl libgd-gd2-perl libarchive-tar-perl libdigest-sha1-perl perlmagick libmail-sendmail-perl

fastcgi でぶら下げておきたいので、libcgi-fast-perl をいれます。(このモジュールを入れ忘れていて、うまく動かせませんでしたw)

  • apt-get install libcgi-fast-perl

あとは、CGIPath, AdminCGIPath, StaticWebPath, DBHost 等を適切な値にしていちおう動くようになりました。

TextHatena プラグインのためのモジュール

  • apt-get install libdatetime-perl libdatetime-format-w3cdtf-perl libcache-memcached-perl libparse-recdescent-perl libcgi-simple-perl libgearman-client-perl
  • deb 作ってインストール: libregexp-assemble-perl libcache-memcached-perl libcache-memcached-getparserxs-perl

シリアライザ関連でハマった

ぼくのところでは、LIMILIC 由来の Text::Hatena ではてな記法を処理しています。super pre のVimColor は gearman 経由で呼ばれるようになっています。

worker はホスト側で amd64、MTOS はヴァーチャルマシーン側で 386 で動いており、アーキテクチャが異なります。

Job 'vimcolor_html' died: Byte order is not compatible at ../../lib/Storable.pm (autosplit into ../../lib/auto/Storable/thaw.al) line 415, at worker.pl line 14

実際、こういうエラーが出て、うまく動きませんでした。

IRC で助けを求めたところ、hideden さんと dann さんに、nstore や nfreeze を使えばよいということを教えていただきました。freeze している部分を nfreeze に書き換え、速効で解決できました。hideden さん、dann さん、ありがとうございます!!

ということで、perl 移行に伴うgdgdをとりあえず片付けることが出来ました。

perl-mongers.org の MTOS も同様に panic するのを目にしたので、数日中に移行しようと思います。

No TrackBacks

TrackBack URL: http://blog.woremacx.com/MT/mt-tb.cgi/262

Leave a comment