レセプトチェックをしようと思って jma-receview を起動しようとしたら起動しなかった orz。そういえば,数日前にものすごく久しぶりに aptitude upgrade していたことを思い出した。jma-receview が update されて,当院の環境で動かなくなってしまったものと考えられた
jma-receview は ruby プログラムなので,以下のようにすると debug 情報が得られる。
$ ruby -d -w /usr/bin/jma-receview
Exception `NoMethodError' at /usr/lib/ruby/1.8/rational.rb:78 - undefined method `gcd' for Rational(1, 2):Rational
Exception `LoadError' at /usr/lib/ruby/vendor_ruby/1.8/glib2.rb:97 - no such file to load -- 1.8/glib2.so
Exception `LoadError' at /usr/lib/ruby/vendor_ruby/1.8/glib2.rb:220 - no such file to load -- gettext
Exception `LoadError' at /usr/lib/ruby/vendor_ruby/1.8/atk.rb:9 - no such file to load -- 1.8/atk.so
Exception `LoadError' at /usr/lib/ruby/vendor_ruby/1.8/cairo.rb:44 - no such file to load -- 1.8/cairo.so
Exception `LoadError' at /usr/lib/ruby/vendor_ruby/1.8/pango.rb:26 - no such file to load -- 1.8/pango.so
Exception `LoadError' at /usr/lib/ruby/vendor_ruby/1.8/gdk_pixbuf2.rb:9 - no such file to load -- 1.8/gdk_pixbuf2.so
Exception `LoadError' at /usr/lib/ruby/vendor_ruby/gtk2/base.rb:23 - no such file to load -- 1.8/gtk2.so
Exception `LoadError' at /usr/lib/ruby/1.8/jma/receview/gtk2_fix.rb:28 - no such file to load -- gtksourceview2
Exception `LoadError' at /usr/lib/ruby/1.8/jma/receview/gtk2_fix.rb:31 - no such file to load -- gtksourceview
Exception `RuntimeError' at /usr/lib/ruby/1.8/jma/receview/print.rb:10 -
Exception `LoadError' at /usr/lib/ruby/1.8/tmpdir.rb:14 - no such file to load -- Win32API
Exception `LoadError' at /usr/lib/ruby/vendor_ruby/1.8/poppler.rb:40 - no such file to load -- 1.8/poppler.so
Exception `LoadError' at /usr/lib/ruby/1.8/jma/receview/isoimage.rb:66 - no such file to load -- cdio
Exception `Errno::ENOENT' at /usr/lib/ruby/1.8/jma/receview/config.rb:335 - そのようなファイルやディレクトリはありません - receview.conf
Exception `NoMethodError' at /usr/lib/ruby/1.8/jma/receview/gui.rb:2941 - undefined method `+' for nil:NilClass
/usr/lib/ruby/1.8/jma/receview/gui.rb:2941:in `event': undefined method `+' for nil:NilClass (NoMethodError)
from /usr/lib/ruby/1.8/jma/receview/gui.rb:2918:in `initialize'
from /usr/lib/ruby/1.8/jma/receview/gui.rb:97:in `new'
from /usr/lib/ruby/1.8/jma/receview/gui.rb:97:in `initialize'
from /usr/bin/jma-receview:12291:in `new'
from /usr/bin/jma-receview:12291
gui.rb の event で何かが nil になって止まっているらしい。puts を入れて調べてみたところ,@base.desktop_native と @base.doc_native が nil になっていた。
def event
:
else
if Gtk::platform_support_os_linux(Gtk::GTK_SUPPORT_VERSION_AMD64)
desktop = @base.desktop_native + @base.path_char
@gtk_desk_button.signal_connect("clicked") do
self.set_filename(desktop)
self.dir_list.signal_emit("cursor-changed")
end
doc = @base.doc_native + @base.path_char
@gtk_doc_button.signal_connect("clicked") do
self.set_filename(doc)
self.dir_list.signal_emit("cursor-changed")
end
end
end
end
base.rb を読んでみると $HOME/.config/user-dirs.dirs ファイル内の XDG_DESKTOP_DIR, XDG_DOCUMENTS_DIR というプロパティーを読みに行っている。調べてみたら,これは xdg-user-dirs というシステムの仕組みらしい。いつの間にか,xdg-user-dirs の設定が必須になってしまっていたようだ。
当院の orca にデスクトップはインストールしていない(jma-receview は mac の x-window サーバで表示させている)ので,当然 xdg-user-dirs などというものも入っていない。
以下のように自分で ~/.config/user-dirs.dirs を作って無事動くようになった。
XDG_DESKTOP_DIR="$HOME"
XDG_DOCUMENTS_DIR="$HOME"