新しいサーバ(Ubuntu16.04)でも、これまで使ってきたfmlをなんとかして使いたい。
しかしこれは太古のパッケージを現代のディストリビューションで使う、というやばい話なので、避けられる人は避けた方が良い。
まず、Debian 4くらいに入っていたdebパッケージを入手する(としか書かない)。
とりあえずインストール。
sudo dpkg -i fml_4.0.3.dfsg-2_all.deb
すると、エラーがでてインストールはできない。
Can’t use ‘defined(@array)’ (Maybe you should just omit the defined()?) at /var/lib/dpkg/info/fml.postinst line 229.
なので、-iはあきらめて、unpack&configureする。
sudo dpkg –unpack fml_4.0.3.dfsg-2_all.deb
以下は修正箇所と修正内容。基本的には配列とかhashのdefinedを消すだけ。
sudo vi +229 /var/lib/dpkg/info/fml.postinst
で
– if (defined @entry) {+ if (@entry) {
– $key ne “_$package” && $key ne “_DB” && defined %entry+ $key ne “_$package” && $key ne “_DB” && %entry
– (defined %entry) &&+ (%entry) &&
これでpostinstは修正完了、configureする。間違っていたら再度修正して繰り返し。
sudo dpkg –configure fml
それから、以下のパッチを当てる。
[debian-users:55112] Re: fmlのDebianパッケージ
にあるように、
— 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;
をパッチとして当てたら良い(これは確かめてないけど、たぶん当てないと動かないんでしょう)。
その後、色々動作しなかったが、MLのユーザをlistグループに追加し忘れていたり(移行なら意外とはまる穴かも?)、
# sudo adduser mluser list
makefmlの文法エラーも出た。fmlのテスト機能というのがあるので、
$ makefml test mlname
とやってみると、色々とエラーが出る。要領はおんなじ。
Can’t use ‘defined(@array)’ (Maybe you should just omit the defined()?) at /usr/share/fml/makefml line 6246.$ vi +6246 /usr/share/fml/makefml– if (defined @entry) {+ if (@entry) {
Can’t use ‘defined(%hash)’ (Maybe you should just omit the defined()?) at /usr/share/fml/makefml line 6257.– $key ne “_$package” && $key ne “_DB” && defined %entry+ $key ne “_$package” && $key ne “_DB” && %entry
Can’t use ‘defined(%hash)’ (Maybe you should just omit the defined()?) at /usr/share/fml/makefml line 6260.– (defined %entry) &&+ (%entry) &&
Unescaped left brace in regex is deprecated, passed through in regex; marked by <– HERE in m/\$config{ <– HERE \’_ML_\’}/ at /usr/share/fml/makefml line 7003.
Can’t locate getopts.pl in @INC (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.22.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at /usr/share/fml/makefml line 139.
sudo apt-get install libperl4-corelibs-perl
試行錯誤した内容をまとめていますので、不足等あるかもしれませんがご容赦下さい。
2017/6/1追記
上記設定だけでは流れないMLが発生した。
まず、fml.plにlibkern.plと同様の箇所があってエラーが出るので、同じような修正を行った。
— fml.pl.orig 2017-05-26 20:31:48.000576211 +0900+++ fml.pl 2017-05-26 20:33:04.256837661 +0900@@ -677,8 +677,8 @@ sub GetFieldsFromHeader### 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;
— jcode.pl.orig 2017-06-01 17:30:16.708268955 +0900+++ jcode.pl 2017-06-01 17:30:54.168279228 +0900@@ -681,7 +681,7 @@ sub __z2h_jis {sub z2h_euc {&nbs
p; local(*s, $n) = @_;– &init_z2h_euc unless defined %z2h_euc;+ &init_z2h_euc unless %z2h_euc;$s =~ s/($re_euc_c|$re_euc_kana)/$z2h_euc{$1} ? ($n++, $z2h_euc{$1}) : $1/geo;@@ -690,7 +690,7 @@ sub z2h_euc {sub z2h_sjis {local(*s, $n) = @_;– &init_z2h_sjis unless defined %z2h_sjis;+ &init_z2h_sjis unless %z2h_sjis;$s =~ s/($re_sjis_c)/$z2h_sjis{$1} ? ($n++, $z2h_sjis{$1}) : $1/geo;$n;}ここまででMLは動作しました。まあこんな感じなので、fmlの機能を深く使っているほど、修正箇所が増える感じかもしれません。