LXR 0.9.3をWindowsXP上で動かしたくて悪戦苦闘している。Perlのモジュール等必要なファイルは一通り揃えて、PostgreSQLcygwin上で動けば良いのだがそれがどうしてもクリアできない。「UserやGroupが見つからないので-1を使うという」気持ち悪いエラーはでるが、psqlも動くし、tableも作れるようなので無視して手順を進めてみた。

LXR 0.9.3はstable版の0.3よりも手順や必要なものが増えている分だけ、インストールが複雑でわかりにくくなっている。手順が多いのは仕方ないが、それを確かめてみる方法などのヒントがないので、一度で動かしてokとなるのは難しいように思う。そもそも手順書が簡単すぎる。ともかくディレクトリを作り、設定ファイルを書いて、インデックスの作成をしようとしたら、cygwinが気持ち悪いエラーを吐く。

1-haradats[05-01-01 7:57] %2 ./genxref --url=http://localhost/lxr09
cygserver: WARNING: User not found in /etc/passwd! Using uid -1!
cygserver: WARNING: Group not found in /etc/passwd! Using gid -1!
cygserver: WARNING: User not found in /etc/passwd! Using uid -1!
cygserver: WARNING: Group not found in /etc/passwd! Using gid -1!
C:\cygwin\bin\perl.exe (4752): *** unable to remap C:\cygwin\bin\cygssl-0.9.7.dl
l to same address as parent(0xD80000) != 0xD90000
   1326 [main] perl 4448 sync_with_child: child 4752(0x684) died before initiali
zation with status code 0x1
   1475 [main] perl 4448 sync_with_child: *** child state child loading dlls
1-haradats[05-01-01 7:58] %2 LOG:  could not receive data from client: Software
caused connection abort
LOG:  unexpected EOF on client connection

何故cygsslなのかさっっぱりわからない。ここに至って、ついにあきらめた。おそらくは僕のcygwinの環境がipc-daemonやcygrunservの関係で過去色々触っているのがおかしくなっているのだろう。いつか元気がでたらcygwin毎リセットしてみようと思う。

「やっぱりcygwinは特殊なところがあるから駄目だな」と思ったら、VMware上のRed Hatではどうだろう?と考え出した。セキュリティ関連の講演でデモを行ったときにRed Hat 9を使ったのがあったので、そこでPostgreSQLLXRを導入してみようと思い立った。

VMの環境はちゃんと残っていてloginもできたが、用途が用途だったので必要な物しかはいっていない。勿論PostgreSQLもない。proftpdのtar ballをホストOS経由で転送してインストールして、手持ち?のrpmを転送してみたがパーツが足りない。仕方ないので、ゲストOSであるRed HatをホストOS経由でネットに接続することにした。VMwareはいつもデモでしか使っていないので、ブリッジかホストオンリーでしか使ったことがない。NATの設定はどうすれば良かったっけ?と考えながらネットを探すが、例によって「わかりやすくて、実際に動作するヒント」はほとんど見つからず、「古いバージョンや、『導入してみました。終わり』的なblogや、意味のわからない文書」ばかりヒットして役に立たない。ゲストOSからNATでネットにアクセスする、という簡単なことをするのにどうしてこんなに苦労しなければならないのか嘆きつつ探して以下がわかった。

  • NATでネットワークに出るためには、ゲストOSはdhcpでアドレスをとる。
  • ifcfg-eth0では次のように書く。最後の3行を書かないと"Network is unreachable"となる。参考:VMware KnowledgeBase Answer
[root@lotus9 tmp]# cat -n /etc/sysconfig/network-scripts/ifcfg-eth0
     1  DEVICE=eth0
     2  BOOTPROTO=dhcp
     3  ONBOOT=yes
     4  USERCTL=yes
     5  check_link_down () {
     6          return 1;
     7  }
[root@lotus9 tmp]#

これでめでたくVMware上のRed Hat 9からネットにアクセスできるようになったが、RH9はサポートを終了しているためRed Hatからはrpmを落とせない。そういえばPANDA氏からLegacy Projectっていうのを聞いたことがあったっけと思い出して、調べると@it「サポートが終了したRed Hat Linuxをアップデートするには(yum編)」という2004/6/10付の記事が見つかった。

この記事の手順に従うが、「もうここで書かれている内容は動作しない」。どこでとまるかというと、yumrpmをインストールするのにlibxml2-pythonが必要なのだ。おそらく記事を書いたときには動作したのだろうが、その後何かのバージョンアップにより動かなくなったのだろう。慌てずさわがず、libxml2-pythonを探すとRH9用のrpmはほどなく見つかったが、それをインストールしようとすると今度は他の物が足りない(それはそうだ。VMware上のRH9は激古いのだから)。「ああ、こんなときyumがあれば」と思うが、そのyumをインストールしようとしているので仕方ない。でも、Legacy Projcetの本家に救われた。

Using Fedora Legacy's apt for Red Hat Linux 9

このページの内容は2004年12月31日でも動作した。aptのインストールを行い、apt-get update, apt-get upgrade, apt-get dist-upgradeして、apt-cache search postgresqlをして、apt-get install postgresqlPostgreSQLをインストールしている。

こんなことで、2004年の12月31日は終わるのであったが、PostgreSQLが使えるようになった頃には、かなり色々なことが面倒くさくなってしまっていたりする。