PukiWiki1.5.2を1.5.3にバージョンアップする!具体的な作業手順を解説!

そろそろ新バージョンがリリースされるかな?」と思っていた。PukiWiki1.5.2がリリースされて1年が経過しているからだ。思えばPukiWiki1.5.2を改造し、ライブラリとプラグインを独自で開発して、もう1年も経ったのか。PukiWiki自体はずいぶん前に1.4系を運用した経験があるものの、まさか自分でこうも手を加えるとは思ってもみなかった。
調べてみると案の定、3月30日PukiWiki1.5.3がリリースされている。リリース内容を確認し、私なりに色々と検証して独自開発したライブラリとプラグインをPukiWiki1.5.3に対応したので、まとめて記事にする。

今回はいつもの「PukiWiki改造計画」記事と内容的にちょっと違うが、サブドメインを連番で用意して検証可能にしてあるのはいつもと同じだ。PukiWiki1.5.2の状態のPukiWiki配布テストサイト内容をサーバからバックアップしてmuseum-24サブドメインにコピーし、ローカルでPukiWiki1.5.3にアップデート作業を実施、PukiWiki配布テストサイトFTPして検証した。

1.5.3にバージョンアップするべきか?

本記事の読者は既にPukiWiki1.5.2か、またはそれ以前のバージョンのPukiWikiを利用しているだろうから、新しいバージョンのPukiWikiがリリースされると「バージョンアップすべきかどうか問題」に悩むと思う。実は私も悩んだクチだ。
詳細はPukiWiki公式のリリース内容を参照して欲しいが、1.5.2からの変更点はザックリ次の5点に集約される。

  1. PHP7.4対応
  2. スマホ対応
  3. AutoAlias対応
  4. 3カラムレイアウトサポート
  5. バグ修正等

1.5.2を独自に改造し、ライブラリとプラグインを開発して来た私からすると・・・
ぶっちゃけ嬉しい変更点はない (´・ω・`)
まず 1. だが、1.5.1でPHP7.0に対応していたし、1.5.2ではPHP7.3に対応していたから、それほど嬉しい対応でもない。下手をすると、ホスティングしているサーバがPHP7.4に対応していない可能性の方が高いぐらいだ。
また 2. にしても「今頃になってやっと対応したか」とは思うし、すでに私のような有志は独自にスマホ対応をしている

その他、5. に関しては有り難いものの、3.4. に関しては今いちピンと来ないし、そんなに重要だとも思えない(私個人は1ミリもメリットだとは思わない)。
つまり、新規でPukiWikiを導入する場合か、すでにPukiWikiでサイトを運営していてスマホ対応していない場合以外、1.5.3にバージョンアップするメリットは薄いと思う。
むしろ、独自にスマホ対応していたり、サイトを独自にデザインしていたりする場合、PukiWiki本体の機能が大幅に改善されていなければ、バージョンアップする労力に見合うだけのメリットが得られないのが普通だ。それに、他人が開発したプラグインを導入している場合、最新バージョンに対応しているケースの方が少ないだろう。
一般的な結論として、PukiWiki1.5.2から無理して1.5.3にバージョンアップする必要はないと言える。少なくとも、急いでバージョンアップするメリットは無い
ただ、それだと話が終ってしまうので1.5.2から1.5.3へアップデートするパッチを検証してみたところ、簡単にバージョンアップが可能だったので、その手順を書いておこうと思う。
なお、PukiWiki公式パッチからバージョンアップする前提は、次の通りである。

  1. バージョンアップ対象はPukiWiki配布テストサイト1.5.2museum-24サブドメインに退避)とする
  2. パッチ作業はWindows10で実施する
  3. 上記 2. に関連してGit for Windows 64bit版をインストールする
  4. 必要に応じてCSSを修正する
  5. 必要に応じて独自ライブラリとプラグインを1.5.3対応とする

上記 1. に関して補足すると、従来の「PukiWiki改造計画」記事で使用している検証用PukiWikiでは必要最低限の構成でしかないため、より実運用に近い(?)PukiWiki配布テストサイトを使って検証した。

バージョンアップ手順

1.5.2から1.5.3へバージョンアップする手順は次の通りになる。

  1. バージョンアップ対象のPukiWikiをサーバからローカルにコピー(バックアップ)する
  2. PukiWiki1.5.3をダウンロードする
  3. Git for Windowsをインストールする
  4. PukiWiki公式パッチを当てる
  5. CSS・ライブラリ・プラグインを調整する

本記事の読者は既にPukiWikiでサイトを運用しているだろうから、上記手順 1. については省略する。
手順 2. に関しては必ずしも必須ではない。ただ、手順 5. でライブラリやプラグインを調整する際に、1.5.3があればファイルの差異から調整が可能となる。PHPプログラムの修正が出来る人は、次のPukiWiki公式サイトからダウンロードしておいて欲しい。

手順 3. に関しては、PukiWiki公式パッチを利用するため、WindowsにGit for Windowsをインストールしてpatchコマンドを使えるようにする。よって、Windowsを利用していてGit for Windowsをインストールしていない人以外は読み飛ばして欲しい(マックやLinux系OSを使っている人は、patchコマンドが標準で使える)。

Git for Windowsをインストールする

利用しているWindows10が64bitなので、インストールするGit for Windowsも64bit版をダウンロードしてインストールする。
一点だけ注意しておかなければならないが、ブラウザが32bit版の場合はダウンロードするGit for Windowsは32bit版になるし、64bit版の場合は自動的に64bit版になる。

図をクリックすると当該ダウンロードページに飛ぶようにしてあるので、図赤枠Download」ボタンをクリックしてダウンロードする。
画面を見て分かるように、どこにも32bit版や64bit版のダウンロードなんて記述がありゃしませんな!ちなみにダウンロードすると、ファイル名が次のどちらかになる(2020年5月現在)。

  • Git-2.26.2-32-bit.exe(32bit版)
  • Git-2.26.2-32-bit.exe(64bit版)

64bit版をダウンロードしたかったのに32bit版のGit for Windowsをダウンロードしてしまう場合、使っているブラウザが32bit版だということなので、ブラウザを見直してみよう。
ダウンロードが完了したらファイルをダブルクリックし、プログラムを実行する。

プログラムが起動したら、図赤枠Next」ボタンをクリックする。

インストール場所を特に指定しない場合は、そのまま図赤枠Next」ボタンをクリックする。

今回はpatchコマンドを使いたいだけなので、インストールするコンポーネントも標準のままとする。よって、そのまま図赤枠Next」ボタンをクリックする。

スタートメニューに登録するグループ名は「Git」のままで一向に構わないので、そのまま図赤枠Next」ボタンをクリックする。

デフォルトのエディタを選択する画面となるが、特にGitをコマンドラインで使おうとは思わないので、そのまま図赤枠Next」ボタンをクリックする。この場合、標準でエディタに「Vim」が選択される。

パス環境の設定だが、図の「Git from the command line and from 3rd-party software」を選択し、図赤枠Next」ボタンをクリックする。

HTTPSトランスポートの設定だが、通常は図の通り「OpenSSL library」で構わない。いや、今回の作業では使わないからどうでも良いのだが。
そのまま図赤枠Next」ボタンをクリックする。

改行コードの変換をどうするか?の設定で、GitからファイルをWindowsにチェックアウトしたらCR+LFに変換し、Gitへコミットする時にLFに変換するのが標準になっている。
実際にGitをこのツールで使うなら「変換なし」にした方が安全だったりもするが、このまま図赤枠Next」ボタンをクリックする。

Git Bashコンソールの設定だが、普通に「MinTTY」で良いだろう。そのまま図赤枠Next」ボタンをクリックする。

最後にインストールの追加オプションの設定だが、このまま図赤枠Install」ボタンをクリックし、インストールを開始する。

図のようにインストールが開始されるので、終了するまでしばらく待つ。

インストールが完了すると、図の画面になる。このまま図赤枠Next」ボタンをクリックすると、リリースノートが開く。リリースノートを見たくない場合は、「Next」ボタンをクリックする前に図赤↑部分のチェックを外しておこう。

PukiWiki公式パッチを当てる

まずは、PukiWiki公式から1.5.3へアップデートするパッチをダウンロードする。

図をクリックすると当該ダウンロードページに飛ぶようにしてあるので、運用しているPukiWikiがUTF-8版の場合は図赤枠update_pukiwiki_152to153_utf8.patch.zip」リンクをクリックしてダウンロードする。

次にパッチ作業用のフォルダを用意し、パッチを当てるPukiWikiサイトのファイルとダウンロードしたパッチファイルをコピーする。図はCドライブ直下に「work」フォルダを作成して必要なファイルをコピーした例だ。
なお、ルート(この場合は「work」フォルダ直下)に「INSTALL.txt」ファイルがないとパッチが出来ないようなので、サーバ上で当該ファイルを削除している場合は、PukiWiki1.5.2のアーカイブファイルから当該ファイルをコピーしておく必要がある。

インストールしたGit for WindowsのGit Bashを起動し、図のように入力する。

  1. cd c:\work パッチ作業用フォルダに移動
  2. unzip update_pukiwiki_152to153_utf8.patch.zip ZIPファイルの解凍
  3. patch -p1 < ./update_pukiwiki_152to153_utf8.patch アップデートパッチ実行

パッチ実行例(ログ)

$ patch -p1 < ./update_pukiwiki_152to153_utf8.patch
patching file .htaccess
Reversed (or previously applied) patch detected!  Assume -R? [n] n
Apply anyway? [n] n
Skipping patch.
1 out of 1 hunk ignored -- saving rejects to file .htaccess.rej
patching file INSTALL.txt
patching file README.txt
patching file attach/.htaccess
patching file backup/.htaccess
patching file cache/.htaccess
patching file counter/.htaccess
patching file diff/.htaccess
patching file en.lng.php
patching file ja.lng.php
Hunk #2 FAILED at 67.
1 out of 2 hunks FAILED -- saving rejects to file ja.lng.php.rej
patching file lib/.htaccess
patching file lib/auth.php
patching file lib/convert_html.php
patching file lib/file.php
Hunk #4 succeeded at 145 (offset 7 lines).
Hunk #5 succeeded at 620 (offset 7 lines).
Hunk #6 succeeded at 651 (offset 7 lines).
patching file lib/func.php
patching file lib/html.php
patching file lib/init.php
patching file lib/link.php
patching file lib/make_link.php
Hunk #3 succeeded at 776 (offset 8 lines).
Hunk #4 succeeded at 904 (offset 25 lines).
Hunk #5 succeeded at 1088 (offset 25 lines).
patching file plugin/.htaccess
patching file plugin/aname.inc.php
patching file plugin/article.inc.php
Hunk #2 FAILED at 163.
1 out of 2 hunks FAILED -- saving rejects to file plugin/article.inc.php.rej
patching file plugin/attach.inc.php
patching file plugin/bugtrack.inc.php
patching file plugin/calendar.inc.php
patching file plugin/calendar2.inc.php
patching file plugin/calendar_viewer.inc.php
patching file plugin/comment.inc.php
Hunk #2 FAILED at 119.
Hunk #3 FAILED at 128.
2 out of 3 hunks FAILED -- saving rejects to file plugin/comment.inc.php.rej
patching file plugin/edit.inc.php
patching file plugin/loginform.inc.php
patching file plugin/pcomment.inc.php
Hunk #2 FAILED at 126.
1 out of 2 hunks FAILED -- saving rejects to file plugin/pcomment.inc.php.rej
patching file plugin/random.inc.php
patching file plugin/read.inc.php
patching file plugin/ref.inc.php
Hunk #2 succeeded at 28 (offset 15 lines).
Hunk #3 succeeded at 98 (offset 19 lines).
patching file plugin/rightbar.inc.php
patching file plugin/search2.inc.php
Hunk #1 succeeded at 372 (offset 20 lines).
patching file plugin/size.inc.php
patching file plugin/topicpath.inc.php
patching file plugin/tracker.inc.php
patching file plugin/yetlist.inc.php
patching file pukiwiki.ini.php
patching file skin/.htaccess
patching file skin/main.js
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file skin/main.js.rej
patching file skin/pukiwiki.css
Hunk #6 FAILED at 150.
Hunk #7 succeeded at 241 (offset 2 lines).
Hunk #8 succeeded at 261 (offset 2 lines).
Hunk #9 succeeded at 347 (offset 2 lines).
Hunk #10 succeeded at 393 (offset 2 lines).
Hunk #11 succeeded at 483 (offset 2 lines).
Hunk #12 succeeded at 564 (offset 2 lines).
Hunk #13 succeeded at 589 (offset 2 lines).
Hunk #14 succeeded at 599 (offset 2 lines).
Hunk #15 succeeded at 633 (offset 2 lines).
Hunk #16 succeeded at 690 (offset 7 lines).
Hunk #17 succeeded at 723 (offset 7 lines).
Hunk #18 succeeded at 881 with fuzz 1 (offset 144 lines).
Hunk #19 succeeded at 953 (offset 144 lines).
1 out of 19 hunks FAILED -- saving rejects to file skin/pukiwiki.css.rej
patching file skin/pukiwiki.skin.php
Hunk #2 FAILED at 46.
Hunk #3 FAILED at 61.
Hunk #4 FAILED at 153.
3 out of 4 hunks FAILED -- saving rejects to file skin/pukiwiki.skin.php.rej
patching file skin/search2.js
patching file skin/tdiary.css
patching file wiki/.htaccess
patching file wiki/3A636F6E6669672F706C7567696E2F6174746163682F6D696D652D74797065.txt
patching file wiki/496E74657257696B694E616D65.txt
patching file wiki/504850.txt
patching file wiki/50756B6957696B69.txt
patching file wiki/50756B6957696B692F312E342F4D616E75616C2F506C7567696E2F412D44.txt
patching file wiki/50756B6957696B692F312E342F4D616E75616C2F506C7567696E2F482D4B.txt
patching file wiki/50756B6957696B692F312E342F4D616E75616C2F506C7567696E2F4C2D4E.txt
patching file wiki/57696B6957696B69576562.txt
patching file wiki/59756B6957696B69.txt

パッチを実行すると、上記のようなログをコンソールに吐きながらパッチが完了する。
パッチ対象ファイルの一部でも書き換えに失敗すると、例えば

Hunk #2 FAILED at 67.
1 out of 2 hunks FAILED — saving rejects to file ja.lng.php.rej

となり、

  • ja.lng.php.orig 元ファイル(オリジナル)
  • ja.lng.php.rej パッチ更新内容ファイル(リジェクト内容)
  • ja.lng.php パッチ更新済みファイル

上記3ファイルが出力される。
パッチ実行ログとパッチ更新内容ファイル(リジェクト内容)を参照すると、何を更新しようとして失敗したのかが分かる。

\ja.lng.php.rej

--- ja.lng.php    2018-05-29 00:02:46.000000000 +0900
+++ ja.lng.php    2020-02-08 20:06:10.000000000 +0900
@@ -67,7 +67,7 @@
 ///////////////////////////////////////
 // Symbols
 $_symbol_anchor   = '&dagger;';
-$_symbol_noexists = '?';
+$_symbol_noexists = '';
 
 ///////////////////////////////////////
 // Form buttons

上記の場合、7行目の内容を削除して8行目の内容を追加しようとして失敗していることがパッチ実行ログの「Hunk #2 FAILED at 67.」から分かる。
割と広範囲にパッチが当たっているが、検証してみるとパッチによるファイル更新が失敗しているケースであっても致命的な問題は皆無で、そのままファイルを整理して丸ごとFTPしても問題ないレベルだった。
そこで、パッチ作業したフォルダを丸ごとFTP用フォルダとして別途コピーして不要なファイルを整理し、サーバにFTPして検証してみた。

CSS・ライブラリ・プラグインを調整する

パソコンで確認してみると、ChromeとOperaではメニューバーの幅が1.5.2の時にCSSで設定していた300pxで表示されるが(pukiwiki-rspnsv.cssで定義)、FirefoxとEdgeでは1.5.3標準の12emの幅で表示される。

図はPukiWiki公式パッチ1.5.3にバージョンアップしたPukiWiki配布テストサイトをFirefoxで表示した画面だが、図赤①のメニューバーの幅が狭く表示されている以外に、図赤②の部分が分かりやすいが、独自開発しているソートテーブル(表)プラグインの表示が変だ。
メニューバーの幅に関しては、独自でスマホ対応した際にサイトのレスポンシブデザイン部分をpukiwiki-rspnsv.cssファイルで定義しているため、1.5.3の「div#menubar」CSS定義と衝突(?)したようだ。コレは簡単で何とでもなるが、図赤②のテーブル(表)表示部分が困った。
要するに、「ブラウザによるCSSの実装と日本語の禁則処理を含むワードラップをテーブルでどうするか問題」である。なぜか1.5.3のCSS定義では

skin\pukiwiki.css

div#contents {
  display:flex;
  flex-flow:row nowrap;
  word-break:break-all;
  overflow-wrap:break-word;
  word-wrap:break-word;
}

が追加され、ご丁寧にも

word-break:break-all;

を定義してくれちゃっているので、独自開発しているソートテーブル(表)プラグインの表示に悪影響を及ぼしている。
ちなみに「ブラウザによるCSSの実装と日本語の禁則処理を含むワードラップをテーブルでどうするか問題」に関して詳しいことを知りたい場合は、次の記事が分りやすいと思う。

結論から言えば、CSSを次の通り修正することでウマク行った

skin\pukiwiki.css

div#contents {
  display:flex;
  flex-flow:row nowrap;
/*  word-break:break-all; 削除 */
  overflow-wrap:break-word;
  word-wrap:break-word;
}

div#menubar {
/*  min-width:12em;
  max-width:12em; 削除 */
  padding:0;
  margin:4px;
  font-size:90%;
  overflow:hidden;
  order:1;
  flex-grow:0;
}

1.5.3では、PukiWiki本体内部のライブラリや標準プラグインに関しても機能拡張とバグ修正等がなされている。PukiWiki公式パッチではその辺もカバーして更新をかけてくれているのを確認した。
念のため私が独自で開発し、本サイトで公開しているライブラリとプラグインについて1.5.3でテストをしたが、ほぼ問題なく動作する。
ただ、1.5.2のままで本サイトで公開しているライブラリおよびプラグインを利用したいニーズはあるだろうし、今後は1.5.3を利用し、本サイトで公開しているライブラリおよびプラグインを利用したいニーズが増えて来るだろう。
そこで、次のライブラリとプラグインに関しては従来バージョンを1.5.2用とし、新たに1.5.3用を開発してダウンロードページで公開することにした。

ちなみに、本サイトで公開しているPukiWiki用ライブラリとプラグインはGitHubでも公開しているので、GitHubの方が使い勝手の良い人は参照して欲しい。

なお、その他のライブラリやプラグインを利用しているPukiWikiの場合は、パッチ前と後でファイルを比較し、「どこが変更になっているのか」を確認して独自に調整する必要があるかも知れない。
CSSの調整も含め、PukiWiki公式ではCSS用にCSSDiffをサイトで利用出来るようにしているが、Windowsを使っている場合はDiffツールとして個人的に昔から使っている「WinMerge」をオススメしておく。

バージョンアップの成果

サイト内容がほぼ同じPukiWiki1.5.21.5.3とで、「実際どうなのか?」を確認したい人は参照して欲しい。

PukiWiki配布テストサイト(検証用:PukiWiki1.5.2

PukiWiki配布テストサイト(本運用:PukiWiki1.5.3

なお、特にゲストユーザは設けていないので悪しからず。

おわりに

本記事の最初の章でも書いたが、新規でPukiWikiを導入する場合か、すでにPukiWikiでサイトを運営していてスマホ対応していない場合以外、1.5.3にバージョンアップするメリットは薄い。ゆえに、私には1.5.3にバージョンアップするモチベーションがなく、本記事の執筆も中々進まなかった。
1.5.2からのバージョンアップに関して福音なのは、ひとえにPukiWiki公式によるバージョンアップパッチの存在だろう。正直、このパッチが無ければ本記事を書く気にすらならなかった。
もっとも、すでにPukiWiki配布テストサイトをテスト運用しているような私であるから、1.5.3へバージョンアップしないとか、独自開発しているライブラリやプラグインを1.5.3対応にしないといった選択肢はない。当初の予定ではとっくに開始しているハズだったが、私はPukiWiki公式とは全く別で、PukiWikiディストリビューターをやろうと考えているのである。
無論、「PukiWiki SEの良心バージョン」(仮名)は無料で配布するが、個人・法人を問わずPukiWikiに関する一切のコンサルティングや、それに付随するあらゆる開発、単なるサイトの設置作業までをも含め有料で引き受けるサービスを予定している。あともう少しPukiWiki本体を改造し、2~3のプラグインの開発を予定したまま現状では止まっているが、近日中に再開する予定だ。
・・・なかなか、人生は予定通りに進みませんな。(;´Д`)

 

 

この記事が気に入ったら
いいね ! をお願いします


ITで何かお手伝いできることはありませんか?

CTA-IMAGE

本サイトでは、外部サービスと連携して「ITの困った」を解決します!

PukiWikiカテゴリの最新記事