Movable Type(5.02 or 5.03)の tools/rebuild-pages を使ってみた

Movable Typeでリビルドさせるコマンドとして mt-rebuild.pl があるようだが、これはTypePadにsign inしないとダウンロードできないし、随分前のスクリプトなので MTに同梱されている tools/rebuild-pages を試してみた。

なお、参考したのは以下のページだが、こちらの環境はMTOS 5.02/5.03なのでスクリプトの実行権、ライブラリの読み込みはすでに設定済みであった。

http://techno-st.net/2008/08/11/toolsrebuildpages.html
http://profligate.peewee.jp/blog/2010/06/mt5-toolsrebuild-pages.html

  • perldoc rebuild-pagesすると使用方法と必要なモジュールが表示されるので一読。
  • Web::Scraper が必要で、これは rebuild-pages のmanpageに書いてあるとおり、CPANによりインストールする(その前にperlのlibxml関連をyum経由で入れておく)。
  • LWP::UserAgent::Local が必要で、これは rebuild-pages のmanpageに書いてあるリポジトリから取得する。
# yum install perl-libxml-perl.noarch
# cpan
cpan> install Web::Scraper
cpan> quit
#

$ cd MT/extlib
$ cd LWP
$ mkdir UserAgent
$ cd UserAgent
$ wget http://code.sixapart.com/svn/movabletype/trunk/t/lib/LWP/UserAgent/Local.pm
$ cp -ip Local.pm Local.pm.org
$ vi Local.pm

# rebuild-pagesは tools 配下にあり、mt.cgi はその上にあるので、"./$script_name"
# ではなく、"../$script_name"に修正。

$ diff -u Local.pm.org Local.pm
--- Local.pm.org        2010-03-23 09:44:30.000000000 +0900
+++ Local.pm    2010-09-09 16:08:53.000000000 +0900
@@ -75,12 +75,12 @@

     if ($request->content()) {
         $ENV{CONTENT_LENGTH} = length $request->content();
-        my $pid = open2(\*RESPONSE, \*REQUEST, "./$script_name")
-            or die "Couldn't spawn ./$script_name";
+        my $pid = open2(\*RESPONSE, \*REQUEST, "../$script_name")
+            or die "Couldn't spawn ../$script_name";
         print REQUEST $request->content();
         close REQUEST;
     } else {
-        open RESPONSE, "./$script_name|" or die "Couldn't spawn $script_name";
+        open RESPONSE, "../$script_name|" or die "Couldn't spawn $script_name";
         print STDERR "$script_name exit status: $?\n" if $?;
     }

$ cd ../../../tools
$ cp -ip rebuild-pages rebuild-pages-on-this-site
$ vi rebuild-pages-on-this-site

my $script_path = '/cgi-bin/MT/'; # 環境に合わせて修正
my $hostname    = 'localhost';    # localhostでアクセスできない場合はホスト名

$ ./rebuild-pages-on-this-site --user=管理者名 --pass=パスワード

これでblog_id=1(トップのウェブサイト)のindexページが再構築される。