新しいサーバ(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) {
+238 で同様に
– $key ne “_$package” && $key ne “_DB” && defined %entry
+ $key ne “_$package” && $key ne “_DB” && %entry
+243 で同様に
– (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.
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.
(正規表現のエラーが出てるがそれはおいといて)おお、getopts.plがないのか。初情報。少し調べて、以下のパッケージを入れると良いのかも。
sudo apt-get install libperl4-corelibs-perl
なんとこんな名前(perl4ってw)のパッケージが実在することに多少驚きながら、早速入れてみる。すると、fmlがようやく動いた!!
試行錯誤した内容をまとめていますので、不足等あるかもしれませんがご容赦下さい。
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;
さらに/usr/share/perl5/jcode.plまでも修正してしまう。これはパッケージlibjcode-perl内のファイルなので、ubuntuに連絡をした方が良いかも。
— 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 {
&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
@@ -690,7 +690,7 @@ sub z2h_euc {
– &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;
ここまででMLは動作しました。まあこんな感じなので、fmlの機能を深く使っているほど、修正箇所が増える感じかもしれません。
以前から使っているキヤノンのスキャナ、CanoScan LiDE 60がWindows7(64bit)だとうまく動かない。これまではWindows XPのPCにつないで利用していたけど、それはやめたいので、調べてみた。
まず、スキャナをつなげる前に、キャノンのサポートページから以下のソフトをインストールする。
・ドライバー(ScanGear CS Ver 11.1.1.1a_64)
・アプリケーション(CanoScan Toolbox 4.9.4.2)
これらをインストールした後スキャナをつないで動かそうとすると、以下のようなエラーが出る。(TWAINソースをオープンできません。接続を確認し、Toolboxを再起動してください。)
以前はこれで諦めていたのだけど、このメッセージを元に調べてみると、このエラーはキヤノンも認識している様子で、以下のページに記載がある。
http://cweb.canon.jp/e-support/faq/answer/canoscan/73841-1.html
「環境変数アップデートツールを実行し、正常にスキャンができるかを確認してください」とある。なんだそれ、と思いながらも指示通りにダウンロード。
・環境変数アップデートツール(sgup.zip)
あとはこのzipを展開して、exeを起動し、対象のスキャナのモデルを選ぶだけ。どうやらドライバの中の CISDS.DS というファイルを差し替えているだけの様子。
そういう不具合があるなら、はじめからドライバの中身を差し替えておいてくださいよ、キヤノン様。
CanoScan Toolboxも、使っていると頻繁に落ちるようなクオリティなので、あんまりやる気は感じられない。
IrfanView4.36に、Japanese.dllが出ていなくて(日本語化できない)、がっかりしている人も多いのではないでしょうか。私もそう。
とりあえず英語のままで利用してるけれど、一部だけでも日本語が出たらいいなということで、4.35用のJapanese.dllの、バージョンの部分をむりやりバイナリエディタで4.36にしてみたら、とりあえず使えています。
具体的にはStirlingを使ってJapanese.dll開いて、Unicodeにして文字列検索で4.35の箇所を全部4.36にしたら良いです。
あとは誰かがこれを元に4.36用のdllを出してくれれば最高なんだけども(お前やれよ、とか言われそう)、これけっこう大変な作業量っぽいので、気軽に「やる」、とは言えないですね。
まず、XPでWindows Updateをかけると、とても高負荷になってしまい、全然先に進まない。これはIEの累積パッチが悪いと、
日本のWSUSの公式ブログに記載 があった。
つまり、Windows Updateの前に以下のインストールを行っておくことが必要となる。
IE8を入れる。ただし更新は入れない。
IE8の累積パッチを入れる。2013/11地点ではKB2888505になる。
次に、Windows Updateの中で「Windows Genuine Notification」とやらがいつまでたっても終わらない。なので、とりあえずこのパッチだけはダイアログがでるので飛ばしてしまい、後ほどゆっくり対応するのが良いと思う。
なお、上記パッチは、実行時に以下の2つのサービスを止めるとうまくいく、という記載をどこかのページでみて、実際にやってみるとその通りであった。
Automatic Updateの停止
DHCPの停止
なんだよそれ、と思うが、まあうまくいけば何でも良いので、細かくは追求しない。理由を知っている人がいれば教えて欲しい。
これら2つをやることで、無事にXPのSP3直後くらいから、現在の最新にUpdateすることが可能になった。
投稿ナビゲーション