Ubuntu12.04LTSにfmlを入れる
MLは標準のmailmanで運用しようと思ったけど、どうもML用にサブドメインを切らないとうまくない様子。これだと、これまでのfmlとの互換性がいまいち。 仕方ないので、fmlを入れましょうか。 まあPerlスクリプトだし何とかなるだろう。よい子は真似してはいけないと思うけど、参考にする奇特な人もいるだろうからエントリにする。 まず、古いDebian(たぶんetch/4.0)からfmlパッケージ(4.0.3.dfsg-2)を持ってきて入れる。 インストールスクリプトが、なんか警告を吐いている defined(%hash) is deprecatedけど、これは気にしない(後述)。 次に、[debian-users:55112]で武藤さんが作成されているパッチを宛てる。 — libkern.pl.old 2010-12-30 08:12:13.000000000 +0900+++ libkern.pl 2010-12-30 08:12:18.000000000 +0900@@ -616,8 +616,8 @@ ### Header Fields Extraction $s = $Envelope{‘Header’}."\n";- $* = 0; # match one line- if ($s =~ /^From\s+(\S+)/i) {+ # $* = 0; # match one line+ if ($s =~ /^From\s+(\S+)/is) { # XXX NO REACH HERE (1999/10/27 by fukachan) # $Envelope{‘UnixFrom’} = $UnixFrom = $1; $s =~ s/^From\s+.*//i; で、先ほどの警告は、Perl5.12から出るようになったらしく、 if ( defined(%hash) ) { …}みたいなコードがあれば出てしまう。これは単に以下のように書きなおす(definedを消すだけ)。if ( %hash ) { …} /usr/share/fml/makefmlでいきなり遭遇したので、diff -uしたものを貼っておく。 — makefml.orig 2013-02-19 18:05:20.619777999 +0900+++ makefml 2013-02-19 19:50:33.175776879 +0900@@ -6252,12 +6252,12 @@ } if ((($] !~ /5.\d\d\d/) &&- $key ne “_$package” && $key ne “DB” && defined %entry+ $key ne “$package” && $key ne “DB” && %entry ) || (($] =~ /5.\d\d\d/) && $key ne “$package::” && $key ne “DB::” &&- (defined %entry) &&+ (%entry) && ($dumpPackages || $key !~ /::$/) && ($key !~ /^</ || $dumpDBFiles) && !($package eq “dumpvar” && $key eq “stab”)まあ、こういう感じで直していけば良い。 その他、こういう警告も出ている。 Legacy library getopts.pl will be removed from the Perl core distribution in the next major release. Please install the separate libperl4-corelibs-perl package. It is being used at /usr/share/fml/makefml, line 139. 「next major release」までは動くと言っているのだから、Ubuntu12である以上たぶん大丈夫だろう。 というか、一からビルドした方が気楽かもしれない。パッケージシステムの意味がかなりない。さらに、これから地雷を踏みまくるのかもしれない。 後々、追記することになるかもしれません。