Movable Typeのアップグレード

投稿: 2006年2月23日

気づいてみると、 Movable Typeを試しに使ってみてからかれこれ 2年が立っていた。その間、 Movable Type はフリーのパッケージから主に商用のものになり、バージョンも 2.xから 3.xへと変わったが、僕はずっとインストールしたままの状況をほぼ変えずに使い続けてきた。しかし、今日急に思い立って、最新版にアップグレードしてみることにした。

僕がこれまで 3.xを使わなかったのにはいくつかの理由があるが、その一番大きな理由は、 3.xを使うためには typekeyの登録が必要で、その登録に当たっては、いわゆる Captchaと呼ばれる、画像を用いた確認が必要であるためだった。しかし、コメント・スパムやトラックバック・スパムが増えている今日この頃、 3.xのユーザに話しを聞くと、 3.2にしてから随分状況が改善されたというようなことを耳にすることもしばしばあった。具体的に何がどう良くなったのかはよく分からないのだが、 3.xにするための理由としては十分だろう。そこで今日、現実逃避の一環として、更新作業を始めてみたのだ。

しかし、これが思いの外スムースには行かず、現実逃避の域を出てしまった感があったので、今日のところは途中でやめてしまった。というのは、まず、パッケージのダウンロードがなかなかうまく行かなかったのだ。なぜか、ファイル全体のダウンロードが終わる前にダウンロードが終わってしまうという現象が頻発したのだ。そんなこととは気づかずに、ファイルを展開しようとしても、アーカイブが壊れていると怒られるばかりだったので、配布元に問い合わせてみたものの、返ってきた返事は、「こちらで確認したけど問題なし」というものだった。それで、さっきは目もくれなかったダウンロード中の進行状況を示す画面の内容を確認して驚いた。あきらかに、そこに表示されているファイルのサイズの方が、手元に落としてきたファイルのサイズより大きいのだ。そりゃアーカイブが壊れてると言われても仕方がない。

何度も失敗した後にようやくダウンロードが終了した。早速ファイルを展開して、アップグレード手順を読んでみると、随分簡単そうに見える。基本的にはバックアップを取って、設定ファイルを書いて、後はプログラムを一つ実行すれば終わり、と読めたのだ。

しかし……、この最後の一つ、つまりプログラムの実行がどうにもうまく行かない。マニュアルによれば、 mt-upgrade.cgiという CGIスクリプトにアクセスすれば良いはずなのだが、「作業開始」というようなメッセージが表示されたページが出てきたきり、そのまま止まってしまった。困ったことに、エラーログなどにも何も残っていない。

そこで、展開したファイル群を眺めていたら、 tools/upgrade というスクリプトを見つけたので、これをコマンドラインから実行してみた。すると今度は、作業の進行状況が表示された。そして、どうも mt_templateというテーブルを更新しようとして失敗していることが分かった。メッセージからすると、 mt_templateの template_modified_on というカラムに、 NOT NULLの制限があるのに、 NULLを入れようとしているらしいことが分かる。それならば、ここに適当な値が入るようにしてやればいいんじゃないか、ということで、これを実行している部分を書き換えてやろうと考えた。ところが、である。さっと探しただけでは、どこでこの作業をしているのか全然分からないのだ。いろいろと grepして回ったが、この作業をしているところも、 CREATE TABLEしているところも、結局どこなのかが分からなかった。もしこれが分かれば、このフィールドに適当な値を入れるなり、 NOT NULLの制限なしで CREATE TABLEさせるなりということができると考えたのだが、これはそう簡単な話ではなさそうなのだ。もちろん Googleで検索してみたりもしたのだが、僕と同じような状況に陥って困っている人の話とかは出てくるものの、状況的に全く同じで僕にも適用できそうな解決策を見いだした人の話は、結局見つけられなかった。

帰宅、そして夕食後の 2時間程度を、こんな試行錯誤に費やした結果、方針を変えてみようかということに、しぶしぶ決めた。まず、現在動いている Movable Typeで、エントリーの書き出しの作業を行う。続いて、新規インストールと同様にデータベースを初期化してから、書き出したデータをインポートする。この場合、二つの問題がある。

一つは、テンプレートなども含めて、ブログの設定をやり直さないといけないことだ。しかし、まあこれはそれほど大きな問題ではない。面倒だけど、まあそれほど時間をかけることなくできそうな気がする。

もう一つの方が大きな問題で、これまでの記事の URLが変わってしまうのだ。うまく設定すれば回避できるのかもしれないが (ぜひできて欲しい) 、これは大変なことだ。記事の中から別記事を参照することだってよくあるし、外部から参照してくれている人だっているかもしれない。過去に送ったトラックバック (っても実はそれほど数はないですが) も、こちらの URLが変わってしまえば無価値である。外部からのリンクはあきらめるにしても、自分が過去に書いた記事の中身をいちいちチェックするのは、それほど数がないとは言え、やはりかなり面倒だ。

とりあえず今日はこんなところで、続きはまた明日にでも。 (って、きっとこれを書き込むのは更新作業がおおむね終わった後になると思うので、書き込みのタイミングほぼ同時になると思う。)

というのを、一昨日の夜中に書いたのを、ようやくアップグレード作業が終わったので投稿。続きは近日中にでも。