やるきなし

2015/01/26 19:21 / a2ps で日本語

たまに a2ps で日本語を使いたくなるのだが,大抵どうしようもならない.

EUC-JP ならなんとかなるという話もあるが,Debian GNU/Linux sid の a2ps (4.14-1.3) では,以下のような感じだった.

% LANG=ja_JP.eucjp date | nkf
2015年  1月 26日 月曜日 19:35:03 JST
% LANG=ja_JP.eucjp date | LANG=ja_JP.eucjp a2ps --encoding=euc-jp -o - -1 | grep JST
(2015\257  1\356 26\374 \356\313\374 19:35:03 JST) p n

どうも2バイト文字の1バイト目が無くなってしまうらしい. ということで,2バイト文字の各バイトに無駄なバイトを付けてみる (やるきなしワンライナー).

% LANG=ja_JP.eucjp date | ruby -e 'print STDIN.read.unpack("C*").map{|i| i>128 ? [-1,i] : i}.flatten.pack("C*")' | LANG=ja_JP.eucjp a2ps --encoding=euc-jp -o - -1 | grep JST
(2015\307\257  1\267\356 26\306\374 \267\356\315\313\306\374 19:36:36 JST) p n

これで生成される postscript (.ps) は gs (evince とか)で表示可能. この手の postscript は,あとは ps2pdf にさえ通ってしまえばなんとかなるのだが, 今回はここで挫折. 以前は (2015\307\257) p n を (2015) p (\307\257) p n とかみたいに分解すれば ps2pdf に通ったような気がするのだが,手元の gs (9.06~dfsg-2) ではダメっぽい.

ということで e2ps を導入.入力は EUC (UTF-8 未サポート) で, landscape/portrate や 2-in 等にも対応. ただし a2ps (や enscript; こちらも日本語NG) にあるような style sheet サポートは無し.

というか,style sheet を諦めるのであれば, ブラウザ (google-chrome) でテキストファイルを開いて CUPS で PDF に印刷するか, Save to Google Drive で Google Drive に PDF を送る, というのでいいような気がしてきた.

2015/01/21 18:02 / service autofs stop 時に mount point が削除される

autofs (automount) を停止すると,mount point が削除されてしまうという問題. NFS root (/ 自体を NFS でマウントしている状態)だったりすると, 他の client が非常に困ることになる.

これに関しては autofs 4 時代に removes the toplevel mountpoint directories and fails to start the next time (Severity: grave) という bug report が出ていて,現在の autofs では mount 時に mount point がなくても

umount_autofs_indirect: mount point /home does not exist

という syslog を吐きつつ mkdir して mount してくれる仕様になっている. がしかし,umount 時に mount point を unlink する仕様はそのまま.

解決法は上記 bug report の中にあるように,予め mount point を mkdir しておき, chmod u-w (or chmod 555) しておくというもの.

とはいえ,NFS root で client 多数という状況では,各 client が mount point を open したまま保持しているので,一旦全 client で autofs stop して,mkdir, chmod した後に autofs start という対処が必要だった.

ちなみに上記 bug report は,autofs5 という package ができて, autofs (version 4) の package が削除される, というタイミングで, うやむやのうちに close された模様. その後 autofs5 は autofs (version 5) という package 名になる(この bug report は close されたまま).ということで,仕様として理解するしかなさげ.

2015/01/15 18:24 / Debian GNU/Linux jessie (testing) autofs w/-hosts

jessie だと automount の -hosts (cd /net/hostname/ とすると自動で NFS mount してくれるあれ)の挙動がおかしい.バグレポートは https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=741064のとおり(Severity: important).

[/etc/auto.master]
/net	-hosts
としておけば通常は動作してくれるところが,
automount[XXX]: get_exports: lookup(hosts): exports lookup failed for HOSTNAME
automount[XXX]: key "HOSTNAME" not found in map source(s).
という感じの syslog を吐いて,うまく動かない.というもとで, とりあえず上記バグレポートにある workaround である
[/etc/auto.master]
/net	/etc/auto.net
を使うことにする(/etc/auto.net は autofs インストール時に配置される). 実際はこういった情報(/net -hosts)は LDAP で +auto.master で配っていて,LDAP 側を修正したくないので,
[/etc/auto.master]
/net	/etc/auto.net
+auto.master
という感じで LDAP の前に /net のエントリを書いておくとこちらが優先されるらしい.

2015/01/15 18:04 / Debian GNU/Linux wheezy (stable) の mesa が古すぎて最近の Intel HD Graphics がまとに動かない

wheezy の mesa が古すぎて(8.0.5)最近の Intel HD Graphics で GLX がまともに動作しない, という問題があって jessie (testing) に移行試行中(mesa は 10.3.2).

ちなみに wheezy であっても /usr/lib/xorg/modules/drivers/intel_drv.so に https://01.org/linuxgraphics/downloads の最新の xf86-video-intel を compile して配置すれば,Xorg 自体は 最新の Intel HD Graphics を認識してくれる. がしかし mesa が古すぎて,これの自前 compile は大変なので...という話.

以下Xorg.0.logの情報(wheezyとjessie).ともにXorgからは認識できている.

で,wheezy の場合は mesa が古いので,glxinfo で

Unrecognized deviceID 0x412
と怒られてしまう.ということで仕方なしにjessie (testing)にあげる.

2015/01/12 19:52 / apply: Setting current directory: そのようなファイルやディレクトリはありません

何かの拍子で,Wanderlust で k s (SPAM登録),k c (SPAMチェック)が以下の Error でこけるようになってしまった.

apply: Setting current directory: そのようなファイルやディレクトリはありません, /home/someone/somewhere/

どうやら消してしまった directory /home/someone/somewhere/ が current directory に(なにかの拍子に)なってしまったらしい.

M-x cd で current buffer's default directory を変更して復帰.