(Documentation) hikiのアップグレード

作成者:西本絵梨子

編集履歴:

  • 2015-11-14(Sat): 新規作成
  • 2015-11-29(Sun): プラグイン関係のパッチ当てを追記
  • 2016-3-4(Fri): 添付ファイルのリンク切れを訂正

目次:

概要

Debianのバージョンをwheezyからjessieにアップグレードするにあたって、 hikiのバージョンも 0.8.8 から github <URL:https://github.com/hiki/hiki> の最新版 (2.0.0.pre1; 2015-11-14現在) に変更した。

これに伴ない、hikiで使用するrubyのバージョンが1.8から2.1に変更され、文字コードもEUC-JPからUTF-8に変更になった。

そのため、データ ( data/ 以下 ) の文字コードを変更する必要がある。

作業手順

  1. Hiki移行
  2. 文字コードの変換
  3. プラグイン関係のパッチ当て

1. Hiki移行( レポジトリ取得からデータ移行まで )

まずは、gitレポジトリから最新版ソースを取得。

% git clone https://github.com/hiki/hiki.git
% cd hiki

つぎに、データを移行する。

% rm -rf data
% rsync -avz /backup/hiki/data .     # バックアップからコピー
% sudo chown www-data:www-data -R data/      # apacheが読めるように権限を変更

設定ファイルの設定。hikiconf.rb の @charset = 'UTF-8' にしておくこと。

% ln -s dot.htaccess .htaccess               # .htaccess
% cp /backup/hiki/hikiconf.rb .      # hikiconf.rb をバックアップからコピー

plugin/attachを使う場合は、<URL:http://hikiwiki.org/ja/attach.rb.html>に書いてあるように、hiki.cgi のあるディレクトリに misc/plugin/attach/attach.cgi をコピーする。 その後、「管理」->「プラグイン選択」で attach.rb を有効にする。しかし、attach.cgiとattach.rbにパッチを当てる必要がある。「3. プラグイン関係のパッチ当て」を参照のこと。

2. 文字コードの変換

hikiconf.rb

hikiconf.rb は手動で変換。

% nkf -w8 --overwrite hikiconf.rb

data

data/ 以下の変換には、tool/convert.rb を使用する。 プラグインでkeyword.rbを使用している場合は、このままでは"keyword"の項目の文字コードが変換されないので訂正が必要。

% diff -u tool/convert.rb.org tool/convert.rb
--- tool/convert.rb.org 2015-11-14 23:14:14.607480264 +0900
+++ tool/convert.rb     2015-11-14 23:35:17.787495781 +0900
@@ -24,6 +24,7 @@
       db[d][:references].map! do |r|
         encode(r, input_encoding, output_encoding, nkf)
       end
+      db[d][:keyword].map!{|r| encode(r, input_encoding, output_encoding, nkf) }
     end
     db.roots.each do |d|
       d_new = Hiki::Util.escape(encode(Hiki::Util.unescape(d),

hiki/util.rbも変更を加えておいたほうが、エラーが低減される。

% diff -u hiki/util.rb.org hiki/util.rb
--- hiki/util.rb.org    2015-11-09 11:42:39.082206783 +0900
+++ hiki/util.rb        2015-11-09 11:44:11.237932017 +0900
@@ -66,6 +66,7 @@
     #   escapeHTML('Usage: foo "bar" <baz>')
     #      # => "Usage: foo &quot;bar&quot; &lt;baz&gt;"
     def escapeHTML(string)
+      string=string.encode("UTF-16BE","UTF-8",:invalid=>:replace, :undef =>:replace, :replace=>'?').encode("UTF-8")
       CGI.escapeHTML(string)
     end

データの文字コード変換を行なう。

% sudo -u www-data ./tool/convert.rb -i euc-jp -o utf-8 --nkf -D ./data > log 2>&1

logファイルを見て、エラーが出ていなかったらOK。

data/hiki.conf の文字コードの変換はうまくいっていないので、手動で書き直す。site_name や author_name の項目など。

3. プラグイン関係のパッチ当て

plugin/attach

attach.rb と attach.cgiにパッチ当て。<URL:https://github.com/hiki/hiki/issues/51>参照。

更新日時:2015/11/29 12:13:02
キーワード:
参照: