2009年2月19日木曜日

MediaWiki-PostgreSQLのアップグレード(結局失敗)

 まだまだネットワーク管理者モードは続くよ。おれマネジメントもしなきゃいけないんですけど…どうすんの?という事で、MediaWikiのアップグレード奮闘記なのだ。

 MediaWikiの方もバックアップを取ってくれないと困る…という話に…まぁ、PostgreSQL からダンプしとけばいいだけの話なんだけどさ…。こいつは Mediawiki-1.10.1 + PostgreSQL 8.1 の構成で、さっさとPostgreSQL 8.3 に上げたいのだ。で、見つけたのがここ。喜び勇んでやったけど、世の中そんなに甘くない。

 環境は、ubuntu上で、apt-get install mediawiki した。

 wikidb-data.sql をインポートする段階で、不正な UTF-8 のコードエラーになった。試行錯誤の上、セキュリィティ対策でコマンドからは UTF-8 のコードが流せないらしい事がわかり、pgAdmin3 から実行するために、データのダンプは

$ pg_dump --host=hoge --username=fuga --password -a -d -n mediawiki wikidb > wikidb-data.sql

とした。それにプラスして、textsearch_ja も入れておく事に…(作業はUbuntu上です)

$ apt-get install mecab
$ apt-get install mecab-ipadic
$ apt-get install libmecab-devel
$ /usr/lib/mecab/mecab-dict-index -d /usr/share/mecab/dic/ipadic -o /var/lib/mecab/dic/ipadic -f euc-jp -t utf-8 -p

で、textsearch_ja の Makefile を一部コメントアウトしました

#ifdef USE_PGXS
PG_CONFIG = pg_config
PGXS := $(shell $(PG_CONFIG) --pgxs)
include $(PGXS)
#else
#subdir = contrib/textsearch_ja
#top_builddir = ../..
#include $(top_builddir)/src/Makefile.global
#include $(top_srcdir)/contrib/contrib-global.mk
#endif

インストールは、make と make install と textsearch_ja.sql を実行するという事で…。
これにプラスして、以下のsqlを事前に実行

CREATE FUNCTION int4text(int4) RETURNS text AS
'SELECT textin(int4out($1));'
LANGUAGE sql STRICT IMMUTABLE;
CREATE CAST (int4 as text)
WITH FUNCTION int4text(int4) AS IMPLICIT;

CREATE FUNCTION mediawiki.rank(tsvector, tsquery, integer)
RETURNS real AS
'SELECT pg_catalog.ts_rank($1,$2,$3);'
LANGUAGE sql;

CREATE TEXT SEARCH CONFIGURATION mediawiki.default
(COPY = pg_catalog.japanese);

これだけやって、ようやくデータの引越しが終わったが、ここからが脱力Showの始まりだ。

php update.php でエラーになるザンス。hasConstraint が無い。あーそうですか… /usr/share/mediawiki/includes/DatabasePostgres.php にリポジトリからもってきて以下の関数を加えればいいんでしょ。

function hasConstraint( $name ) {
global $wgDBmwschema;
$SQL = "SELECT 1 FROM pg_catalog.pg_constraint c, pg_catalog.pg_namespace n WHERE c.connamespace = n.oid AND conname = '" . pg_escape_string( $name ) . "' AND n.nspname = '" . pg_escape_string($wgDBmwschema) ."'";
return $this->numRows($res = $this->doQuery($SQL));
}

しかしだ…しかし…。upgrade DONE... しても、Mediawiki はセットアップ画面になる。こちらを実行してもアップグレードになるので、セットアップを継続してみたが、tsearch2 がインストールされていないと文句をたれる。

あー、わかりましたとも、PostgreSQL8.3 から tsearch2 は標準になったけど、apt-get できるバージョンは、これを考慮していないんですね?ハイハイ、最新のmediawikiをダウンロードして、アップグレードしましょう。

これで、どうだーーーーーー!!!!!!

どうだーーーーー!!!!



インストールに成功しました!!!!やったーーーー!!!

どれどれ、アクセス・・・ん???

Could not determine the numeric version from !

・・・

そして、こんな情報をみつけた。こりゃ、まだまだ時期尚早のようで…。

0 件のコメント: