Vine Linux 4.1 がリリースされた。自宅サーバの OS のバージョンアップを試みたが失敗した。その格闘の記録である。
2007年2月に Vine Linux 4.1 が公開された(2007,02,22 Vine Linux 4.1 を公開)。現在このサイトが使っているのは Vine Linux 3.2 で安定動作しているが,新バージョンに移行したい。最大の魅力は,Kernel-2.6 では SpeedStep が正しく動作するようになったということである。SpeedStep とは,CPU の動作速度を変える機能で,Intel の Mobile Pentium III に搭載されている(SpeedStepとは 【IST】 - 意味・解説 : IT用語辞典 e-Words)。Kernel-2.4 にも対応しているが正確に動作しないので,かなり苦労してきた。
大杉である。以下は,週末の明け方,Web サーバへのアクセスが最も少なくなる時間を狙ってバージョンアップを試みた結果である。結局,移行はできなかったのだが,つまずく点が分かっただけでもよしとしよう。
データの入ったハードディスク。ちっぽけなものだが,とても大切なものなのだ。
Vine Linux の1つの魅力に,インストール CD が1枚だということがある。CD の ISO イメージは Vine Linux のミラーサイトからダウンロードすることができる(Vine Linux)。イメージが正しくダウンロードできたかどうかは,チェックサムで調べることができる(ダウンロードありがとうございます)。しかし,なぜか Cygwin の sha1sum では失敗してしまう。C:\temp にイメージを置いて実行した結果は次の通り。
イメージが壊れているのかというと,そうではない。
別のアプリケーション wSHA1sum
wSHA1sum では成功するのだ。Cygwin の sha1sum がダメなのだろうか? バージョンは sha1sum (GNU coreutils) 5.97 であった。
インストールはとても簡単。CD からブートしてメニューにしたがって進めていけばよい。インストールの種類としては「サーバ」を選択し,サーバに関連するパッケージをすべて選択した。オプションの選択が終わるとインストールが始まり,30分程度で完了した。
PHP はインストールされないので,apt-get する。
このあたりで,Apache が Apache2 になっていることに気づく。
Movable Type 2.661 に必要な Perl モジュールは,基本的には CPAN から,その他は Vine のパッケージからインストールする。
DBD::mysql のインストールには,mysql の他に zlib-devel が必要だった。
Image::Magick は CPAN でインストールできなかったので,apt-get で。
その他のオプショナルモジュールをインストールする。
GD は apt-get でインストールしてしまったが,
CPAN 経由でできたかも知れない。GD のパッケージ名は「perl-GD」,Image:Magick のパッケージ名は「ImageMagick-perl」となっていて,「perl」は前につくことや後につくことがある。統一されていない。
あらかじめ Movable Type の MySQL 形式データベースをバックアップしておく。
新OSはデータベースを新規に作成する (nlog(n): Berkeley DB から MySQL への移行を試す)。
このサイトで使っている文字コードは EUC-JP である。EUC-JP のまま新しいデータベースに移行するとき,公式マニュアル(Movable Type 3.3 マニュアル - Movable Type環境のバックアップ(Linux, BSD, Mac OS X))の通り行っても上手くいかない。
(上手くいかない例)
$ mysql --user=ユーザ名 --password=パスワード データベース名 < FILENAME.mysql
データベース作成では「DEFAULT CHARACTER SET ujis」を,リストアする際は「--default-character-set=ujis」オプションをつける必要がある。ujis は MySQL において EUC-JP を意味する (文字コードが UTF-8 の場合は,MySQL では utf8 と書く)。
さらに,Vine Linx 4.1 では,/etc/my.cnf を新規作成して MySQL のオプションを設定する必要がある。これがないと文字化けする。公式サイトでは次のようにすることになっているが(Movable Type 3.3 マニュアル - データベースの設定(MySQL)),これも上手く行かない。
(上手くいかない例)
[mysqld]
default-character-set=ujis
[client]
default-character-set=ujis
次のように書けば上手くいく。これで文字化け問題は解消である。
my.cnf の設定後は MySQL を再起動する必要がある。
設定の方法と文字化けの関連は次のようなものになった。全ての組み合わせではない。
上の画像は,データベース作成時の「DEFAULT CHARACTER SET ujis」指定なし,リストア時の「--default-character-set=ujis」なしの場合。管理画面の文字は化けていないのに,記事タイトルが化けている。データだけが文字化けしているということである。
データベース作成時の「DEFAULT CHARACTER SET ujis」指定あり,リストア時の「--default-character-set=ujis」なしの場合。
データベース作成時の「DEFAULT CHARACTER SET ujis」指定あり,リストア時の「--default-character-set=ujis」なしで,my.cnf を公式サイトでの指定にした場合。
ここまでやって,サイトの再構築ができることを確認した。これでようやく移行完了か,と思ってコメント投稿をしてみると,エラーが表示されることが分かった。
An error occurred:
Month '-1' out of range 0..11 at lib/MT/Template/Context.pm line 1081
月を示す数字が「-1」になってしまうらしい。どこがおかしいのか分からない。エラーは表示されるが,コメントはサイトに反映される,というのが微妙なところ。MySQL でダメなのなら,バークレーDBの場合はどうかと試すと,別のエラーが表示された。こちらはサイトにも反映されない。
An error occurred:
Rebuild failed: Building entry '女性専用車両について知らなかったこと' failed: Build error in template 'Individual Entry Archive': Error in <MTEntryIfAllowComments> tag: Error in <MTCommentDate> tag: You used an MTCommentDate tag without a date context set up.
八方塞{はっぽうふさがり},いや,二方ふさがりか。移行を断念した唯一にして最大の理由はこれである。ダンプした MySQL のファイルにどこか問題があるのだろうか。残るは,ディレクトリをまるごとコピーするという方法くらいか(Bugzilla 2.16 日本語版 - データベースのバックアップ)。ちょっとやってみたが,上手くいかない。むー。
作業ログを残したいと思ったので,TeraTerm Pro で接続しようとしたのだが,失敗する。デフォルトでは telnet のポートは有効になっていないので,telnet 接続できない。TTSSH で接続しようとすると,エラーが表示されて TeraTerm のウィンドウも消えてしまうのだ。
This program does not understand the server's version of the protocol.
原因は,TTSSH 拡張がサポートしているのは SSH1 で,Vine Linux 4.1 は SSH2 だということである。TTSSH については,Tera Term Home Page からリンクがあるが,リンク先は消失している。日本語版も存在するが,現在サポートしているのは SSH1 のみである(TTSSH日本語版)。
SSH2 をサポートする拡張が開発されている(SourceForge.jp: Project Info - UTF-8 TeraTerm Pro with TTSSH2)。クリッカブルURLにも対応しているそうだ(窓の杜 - 【NEWS】UTF-8、SSH2対応のターミナルソフト「UTF-8 TeraTerm Pro with TTSSH2」)。
Cygwin の ssh コマンドは SSH2 に対応しているが,日本語の表示ができないのが難点。
Web サーバが Apache 1.3 から Apache 2.2 となった。大きな変更なので,どうなることがドキドキしたが,通常のアクセスについては問題なかった。問題は SSL での接続である。SSL 関連のディレクティブを有効にして apache2 を再起動すると,次のエラーが表示されて,再起動に失敗してしまう。
Gentoo Linux Users Group Japan には次のように解説されている。
このエラーは起動中に発生し、矛盾した複数のListenディレクティブが設定されているのが原因です。この問題を解決するには、設定でListenをgrepし各ディレクティブごとに修正します。
修正のしかたが分からなかった…(ダメポ)。Apache とは書き方が違うらしい (原因が判明しました→nlog(n): Apache 1.3 から 2.2 への移行方針)。他にも Apache では許されていたのに Apache2 では許されなくなった書き方がある。バーチャルホストディレクティブである。Apache では,次の書き方でよかった。
Apache2 では,「*」だけではダメで,「*:80」としなければ起動できなかった。
まとまっていないが,情報が書いてあるというだけでも役に立つことはあるだろうということで,このあたりで終了。週末は休みだったはずなのに,休むどころか寝不足が加速してしまった。
2007年8月27日追記:
Vine Linux 4.1 にアップグレードしました (nlog(n): サーバの OS を Vine Linux 3.2 から 4.1 へ更新)。
Master Archive Index
Total Entry Count: 1957
> Cygwin の sha1sum では失敗してしまう。
アスキーモードでの計算になっていませんでしょうか?
wSHA1sum の URL が変わりました。m(__)m
旧: http://kkkon.hp.insoseek.co.jp/
新: http://kkkon.sakura.ne.jp/
Posted by: KK.Kon at November 18, 2010 04:22KK.Kon さん
コメントありがとうございます。バイナリモードは意味がないとのことです。
==
$ sha1sum -bc Vine51-i386-CD.iso.sha1sum
sha1sum: --binary と --text オプションはチェックサムの確認時には無意味です
詳しくは `sha1sum --help' を実行して下さい.
==
もしかすると,Cygwin を DOS モードでインストールしているからなのかも知れません。
以前 Unix モードに切り替えたところ,DOS モードに戻せなくなったことがあるので試すのを躊躇しています。
wSHA1sum のリンク先を更新しました。
Posted by: n at November 19, 2010 22:08