「Portable Wikipedia への長い道のり」

……大変だった!

なにがって WikipediaEPWING 形式に変換するのが。

なんどか挑戦してきて、なんども挫折を味わったこの難行。今日はけっこう頑張りました(手に入るデータが随分と古いことに背を押されました)。

それにしても、初っぱなから 64bitint の有効な Perlコンパイルする方法が分からず諦めかけたり(UNIX界隈はソースを自分でコンパイルする文化圏!)。Cygwin のインストールすらままならなかったり。意味不明のエラーに「ash で rebaseall」という意味不明の対処法でどうにかしたり。山あり谷ありでしたとも!

BitTorrentWIkipedia 日本語版 (2010/07/31)

おお、我が子が拡散していく様が愛おしい……。手近な友人の iPhoneXperia に放り込んだりもして。

以下、今回やった手順です。しかし……望みの PerlCygwin に始めから入っているとはね(ActivePerl よ、さようなら)。

基本的には ■[PC関連][備忘録]0から始めるwikipediaのローカル用変換:数式対応 の通りですが、多少の違いはあったので書いておきます。

Cygwin のインストール

まずはそこからかよ! と言いたくなりますね。でも変換スクリプトUNIX 用なんだから仕方ない(CygwinWindows 環境で動かせる UNIX 環境だと思いねえ)。

Cygwin Information and Installation から Setup.exe を落としてきて実行。必要なファイルをネットからダウンロードする形式なので軽いです。必要なのは Archive、Base、Devel、Graphics、Perl、Libs なので、それだけをインストールすることをお勧めします。

インストール中に固まったらそのパッケージをインストールしないようにして再チャレンジ! 私は Inetutils.sh と xinet.d で2回もありました……。

Cygwin環境変数

さあ、これで bash を始めとした UNIX の便利ツールを使えるぞ。……と、その前に。環境変数の設定です。以下の通りに設定いたしましょう(もちろん bash の代わりに ash を使うとかはご自由に)。ちなみに、全て「ユーザー変数」です。

変数名
CYGWIN ntsec
HOME /home/ユーザー名
MAKE_MODE UNIX
SHELL /bin/bash

ユーザー名は、Cygwin を起動したときにでるプロンプトから分かります。私の場合は firedfly ですね。

FreePWING のインストール

お次は、色んなデータを EPWING 形式に変換してくれる優れもの。FreePWING のインストールです。FreePWING から freepwing-1.6.1.tar.bz2 を落としてきて

wget ftp://ftp.sra.co.jp/pub/misc/freepwing/freepwing-1.6.1.tar.bz2
bzip2 -dc freepwing-1.6.1.tar.bz2 | tar xvf -
cd freepwing-1.6.1
./configure
make
make install

つまりは bz2 形式の圧縮ファイルを解凍し、さらに tar 形式でまとめられたファイル群をバラして……それらをコンパイルしたものを、Cygwin 環境にインストールしている訳です。……クリックしてればインストールできちゃう Windows 文化圏の人からすると、これだけで心が折れそうですよね。ちなみに、これを実行することで /usr/local/bin に fpwmake というコマンドが用意されます。

mimeTeXをインストール(数式を使いたい人だけ)

言わずと知れた数式組版ソフト TeX です。記事中の数式をインライン画像にしたい人は入れましょう(其の分、あとで変換に時間がかかりますけども)。mimetex から mimtex.zip を落としてきてもいいですが、wget というコマンドで Cygwin からダウンロードしちゃうこともできます。

wget http://www.forkosh.com/mimetex.zip
unzip mimetex.zip
gcc -DAA -DAA mimetex.c gifsave.c -lm -o mimetex.exe
cp -p ./mimetex.exe /usr/local/bin/

ダウンロード、解凍、コンパイル、インストール、と言う手順ですね。

PerlMagick をインストール(数式を使いたい人だけ)

画像処理ソフト。これも mimxtex と同様にコンパイルする……と書いてあるサイトがありましたが、最近の Cygwin は、Setup 時にチェックを付けるだけでインストールされるようです。楽ちん楽ちん。

perl -MImage::Magick -e 'print $Image::Magick::VERSION . "\n"'

このコマンドを打てば、PerlMagick が入っているかどうか確認できます。

Wikipedia-fpw のインストール

FreePWING を使って辞書データを変換するにしても、Wikipedia に対応するためには いろいろと細かいルールを決めなきゃいけませんよね。その処理を Perl で書いてあるのが、この Wikipedia-fpw です。

wget http://ikazuhiro.g.ribbon.to/dic/files/wikipedia-fpw-20090126-src.tar.gz
tar zxvf wikipedia-fpw-20090126-src.tar.gz

普通に落としても wget を使ってもなんでもいいので、どっかに解凍してください。ちなみにフォルダの中の wikipedia-fpw.conf が設定ファイルです。数式の有無とか、数式画像の背景色とか(標準だと黒背景!)、mimtex のフルパスを指定したりします。見ておきましょう。

'mimetex' => 'E:/cygwin/usr/local/bin/mimetex.exe'

たとえばこんな感じに書き直す訳です。

Wikipedia 日本語版の最新版をダウンロード

jawikilatest に入って「jawiki-latest-pages-articles.xml.bz2」をダウンロードします。

wget http://download.wikimedia.org/jawiki/latest/jawiki-latest-pages-articles.xml.bz2
bunzip2 -v jawiki-latest-pages-articles.xml.bz2
mv jawiki-latest-pages-articles.xml wikipedia.xml

回線に自信があるなら、こんな風に wget でどうぞ。落としたら解凍し、wikipedia.xml と改名します。でもって Wikipedia-fpw のフォルダに。

Wikipedia 記事データのダウンロードと変換

ここまで来ればあとは簡単。

fpwmake
fpwmake catalogs
fpwmake package

この三つのコマンドを打つだけで(まあ数時間はかかる訳ですが)、圧縮された EPWING データができあがります。


一行ずつ実行するのが嫌なら簡単なシェルスクリプトをどうぞ(Windows でいうバッチファイルです)。

sh wikipedia.sh

使いたいフォルダに入れて、このコマンドを打つだけで、そのうち Wikipedia has become a EPWING format! なんて表示されるはずです。

あとは解凍して、EBWin なり Jamming なり EBPocekt なりに放り込むだけ。

……あ、できたファイルは 2.6G と大変にビッグですが、所詮はテキストファイルなので圧縮すると 1/3 ほどに縮まります。EBShrink というソフトを使って圧縮し、(対応してれば)そのまま検索できて便利です。当然ですが、 EBWin や EBPocekt は対応してます。

おまけ……fpwmake で error


C:\cygwin\bin\perl.exe (268): *** unable to remap C:\cygwin\bin\cygfreetype-6.dll to same address as parent(0xE00000) != 0xE90000

なんだよそのエラー! ……という場合には、まず Cygwin を終了させまして、Windowsコマンドプロンプトを起動します。で、Cygwin の bin フォルダに行き、ash を起動。そこから rebaseall を起動すると、解消されます。

cd C:\cygwin\bin\
ash
/bin/rebaseall

コマンドはこんな感じ。

おまけ2……fpwmake catalogs で error

普通は関係無いですが、何度も変換した場合なんかに古い catalogs ファイルがあると上書きしてくれないようです。削除しておきましょう。