mediawikiのinfoboxを有効にする

infoboxはwikipediaで右の方に出てくるボックスを生成するために使用される。
結構手間取ったのでメモ。

参考にしたページ
https://www.mediawiki.org/wiki/Manual:Importing_Wikipedia_infoboxes_tutorial
http://junkato.jp/ja/blog/2014/01/13/mediawiki-import-templates-from-wikipedia/
http://vanguardflight.xii.jp/wp/?p=313

1. ParserFunctionsの有効化

Special:VersionにてParserFunctionsの状態を確認する(デフォルトは向う)。
LocalSettings.phpにて以下を追加する。

require_once "$IP/extensions/ParserFunctions/ParserFunctions.php";

2. Luaをインストール

5.1系列をダウンロードして、インストールする(今回は5.1.4)。
5.3等をいれるとうまく動作しない。

cd ~/local/
wget http://www.lua.org/ftp/lua-5.1.4.tar.gz
tar -zxvf lua-5.*
cd lua-5.1.4
make freebsd
make local
cd bin
ln -s lua lua-5.1.4

Scribuntoのインストール

↓ここを参考にする。
https://www.mediawiki.org/wiki/Extension:Scribunto/ja
extensionsフォルダに解凍し、LocalSettings.php の末尾に以下の文を追加する

require_once "$IP/extensions/Scribunto/Scribunto.php";
$wgScribuntoDefaultEngine = 'luastandalone';
$wgScribuntoEngineConf['luastandalone']['luaPath'] = '/home/username/local/lua-5.1.4/bin/lua';

4. wikipediaのTemplate:Infoboxをエクスポート・インポートする

※この方法だと依存するテンプレート等もダウンロードしてくれる。
Template:InfoboxだけコピーするとNG。
wikipediaのSpecial:Exportにアクセスする。
“Add pages manually:”のテキストボックス(大きい方)に”Template:Infobox”と入力し、下のチェックボックスに全てチェックを入れて(デフォルトではInclude templatesが外れている)、exportボタンを押し、ダウンロードする。
自分のwikiのSpecial:Importにアクセスし、ダウンロードしたファイルを読み込む。

5. 実行とエラー対策

Template:Infoboxにアクセスして、エラーが発生しなければ成功。
右寄せにするために以下を追加しておく。

<div style="float: right">
・・・
</div>

エラー1

Fatal error: Call to undefined function pcntl_wifsignaled() in /extensions/Scribunto/engines/LuaStandalone/LuaStandaloneEngine.php on line 645

↓参考ページ
https://www.mediawiki.org/wiki/Topic:Sydxy2vfvr3m9qme

–enable-pcntlオプションをつけてphpをコンパイルしなおすか、luasandboxをインストールする。
さくらインターネットのスタンダードプランではどちらも難しい(luasandboxをインストールしても良いが、ライブラリの指定等が面倒)。
同じページにパッチが示されているのでこれをダウンロードする。
ここから https://www.mediawiki.org/wiki/Extension:Scribunto#LuaSandbox
これをダウンロード https://gerrit.wikimedia.org/r/cat/273173%2C4%2Cengines/LuaStandalone/LuaStandaloneEngine.php%5E0
解凍して、LuaStandaloneEngine.phpを置き換える(wikiのディレクトリ/extensions/Scribunto/engines/LuaStandalone/LuaStandaloneEngine.php)。

エラー2

#Lua エラー: 内部エラー: インタープリターはシグナル「1」により終了しました。

Luaのバージョンが5.3.2の場合に出たエラー。5.1系をインストールする。

エラー3

#Lua エラー: 内部エラー: インタープリターはシグナル「127」により終了しました。

Luaの実行ファイルパスを間違えている。LocalSettings.phpの以下のファイルパスが間違っていないか確認する。

$wgScribuntoEngineConf['luastandalone']['luaPath'] = '/home/username/local/lua-5.1.4/bin/lua';

6. まとめ

LocalSettings.phpには以下を追加する。

require_once "$IP/extensions/ParserFunctions/ParserFunctions.php";
require_once "$IP/extensions/Scribunto/Scribunto.php";
$wgScribuntoDefaultEngine = 'luastandalone';
$wgScribuntoEngineConf['luastandalone']['luaPath'] = '/home/username/local/lua-5.1.4/bin/lua';

基本的なテンプレートだが、導入は以外と面倒。pcntl_wifsignaled()まわりのエラーは改善される可能性有。

  • このエントリーをはてなブックマークに追加
コメントの入力は終了しました。