[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-devel:12301] alternative for xdvi ? (Re: Re: [RFC] dummy package for slink-jp topotato)
佐野@浜松です。
ちょっと前の部分にフォローしますが
In article <20000510130951H.kohda@xxxxxxxxxxxxxxxxxxxx>,
at "Wed, 10 May 2000 13:07:32 +0900',
Atsuhito Kohda <kohda@xxxxxxxxxxxxxxxxxxxx> さん writes:
> From: Kenshi Muto <kmuto@xxxxxxxxxxxxxxx>
> Date: Wed, 10 May 2000 11:28:01 +0900
>
> > 武藤@Debianぷろじぇくとです。
> >
> > kohda> xdvik-ja が diversion したり high priority で alternative
> > kohda> していたら、たまに日本語 DVI を見るような人の xdvi も xdvik-ja
> > kohda> の物になりますよね。で問題ないうちは良いのですがある日 xdvi
> > kohda> が動かなくなったら、そういう人はクレーム出すのでは、という
> > kohda> ことですが。
> >
> > ??
> > うーん、なんかよくわかんないや (;_;)
> > 動かなくなるのはバグ扱いだから報告は当然、じゃないのですか?
>
> いえ、クレーム出すのは良いのですが、それに対応
> するには tetex-* を旧版に戻してもらうしかない場合
> の話なんですよ。
>
> ともかくメイン環境が tetex で与えられてる以上 tetex
> の xdvi が一番安全なのは確かで xdvik-ja の類いは常に
> 問題が内在してる訳です。
個人的には、alternative 使って lower priority にすれば
必要な人は update-alternatives すればいいからそれで問題無いのでは、
という気もします。
が、そのためには、まず tetex-bin に含まれる xdvi が alternative 対応に
なってないといけないわけですが、実は xaw-wrappers がこれに絡んでますね。
/usr/X11R6/bin/xdvi と /usr/X11R6/bin/xdvi-ja の違いは (どちらも sh script)
最後のほうの数行で、結局 xdvi では xdvi.bin を呼び、xdvi-ja では xdvi-ja.bin を
呼ぶ点の違いが -ja ある無しの違いに直接関係する部分 (あとの違いは圧縮ファイルを
扱えるようにしてあるかどうか) だと思うので、xdvi-ja.real (or xdvi-ja.small.real) を
alternative で登録すればいいかと思ったけれど、この場合は xaw-wrappers より
priority を挙げないとダメそうです。
# ついでに、update-alternatives の日本語版マニュアルって誰か更新してくれてます ?
# 現状は情報を見るためにいちいち LANG=C しないと読めないので、非常に面倒です。
# ユーザーのためにはなってないと思う。
試しに手動で
sudo /usr/sbin/update-alternatives --install /usr/X11R6/bin/xdvi.bin \
xdvi.bin /usr/X11R6/bin/xdvi-ja.small.real 55
としてみたら、"xdvi" というコマンドで日本語 dvi ファイルが表示できましたよ ?
xaw-wrappers が 50 で登録されているので、それ以下ではダメだと思います。
$ cat /var/lib/dpkg/alternatives/xdvi.bin
auto
/usr/X11R6/bin/xdvi.bin
/usr/share/xaw-wrappers/wrapper
50
/usr/X11R6/bin/xdvi.real
30
/usr/X11R6/bin/xdvi-ja.small.real
50
これだと
Virtual character 20292 in font goth10 ignored.
とかいうエラーが延々と出ます。
$ cat /var/lib/dpkg/alternatives/xdvi.bin
auto
/usr/X11R6/bin/xdvi.bin
/usr/share/xaw-wrappers/wrapper
50
/usr/X11R6/bin/xdvi.real
30
/usr/X11R6/bin/xdvi-ja.small.real
51
こっちは OK。
で、問題は xaw-wrappers がどうなっているのか、(何をやっているのか) という
点なんですが、 /usr/share/xaw-wrappers/wrapper の中では
# Loading this package causes all config files to be read.
BEGIN { unshift @INC, "/usr/share/xaw-wrappers/" }
use XawWrapper;
とかあって、/usr/share/xaw-wrappers/XawWrapper.pm も読まないと
いけないみたいですね。
で、wrapper スクリプト本体のほうでは
my $this=FindLinkName($0);
print "Wrapped program is: $XawWrapper::wrapped{$this}\n" if $ENV{XAW_WRAPPERS_D
EBUG};
となっていて、呼び出された名前 (今の場合なら xdvi.bin とか /usr/X11R6/bin/xdvi.bin
とかですね) を FindLinkName() に渡して実体を探しているようです。
FindLinkName() は wrapper の中にあって
sub FindLinkName { $_=shift;
my $dirty=undef; # set to 1 if we encounter a symlink.
my @list=split(m:/:, $_);
my $a=undef;
foreach $elt (@list) {
if (-l "$a/$elt") {
my $b=readlink("$a/$elt");
# We don't want to dereference the symlink that
# actually points to the wrapper itself.
if ($b=~m:/usr/share/xaw-wrappers/wrapper: eq undef) {
$dirty=1;
if ($b=~m:^/: eq undef) {
# relative symlink, add to current pwd.
$a.="/$b";
}
else { # absolute symlink, replaces current pwd.
$a=$b;
}
}
else {
return $elt;
}
}
else { # normal directory or file, add to pwd.
$a.="/$elt";
}
}
if ($dirty) {
return FindLinkName($a);
}
else {
die "xaw-wrapper: $0 doesn't resolve to me!";
}
となってます。
例によって joeyh のスクリプトなんでわかりにくいのですが、これは
/usr/share/xaw-wrappers/config に登録しておかないといけないのかな ?
もう一度 /var/lib/dpkg/info/xdvi-ja.postinst を見ると、
# Automatically added by dh_installxaw
if test -x /usr/sbin/update-xaw-wrappers; then
/usr/sbin/update-xaw-wrappers
fi
というのがありますね。。。
/usr/share/xaw-wrappers/config/xdvik-ja が関連してるみたいですね。
うーむ。試しに
$ cat /usr/share/xaw-wrappers/config/xdvi
Program: /usr/X11R6/bin/xdvi.bin
Incompat: /usr/X11R6/lib/neXtaw
Wrapped: /usr/X11R6/bin/xdvi-ja.small.real
Link-name: xdvi.bin
というファイルを作って /usr/sbin/update-xaw-wrappers を実行してみたけど
なんかこれ自身はあんまり関係無さそう。単に update-alternatives を呼んで
いるだけ ?
よーわからん。 /usr/doc/xaw-wrappers/README.packages.gz を見ると、
どうも xaw-wrappers は複数の選択肢がある場合を想定していないみたいにも
見える。
念のために
mkdir /usr/lib/xdvik-ja; cd /usr/lib/xdvik-ja;
ln /usr/X11R6/bin/xdvi-ja.small.real ./xdvi.real;
として /usr/share/xaw-wrappers/config から先程の xdvi を削除し、
$ cat /usr/share/xaw-wrappers/config/xdvik-ja
Program: /usr/X11R6/bin/xdvi-ja.bin
Incompat: /usr/X11R6/lib/neXtaw
Wrapped: /usr/X11R6/bin/xdvi-ja.real
Link-name: xdvi-ja.bin
Program: /usr/X11R6/bin/xdvi-ja.small.bin
Incompat: /usr/X11R6/lib/neXtaw
Wrapped: /usr/X11R6/bin/xdvi-ja.small.real
Link-name: xdvi-ja.small.bin
Program: /usr/X11R6/bin/xdvi.bin
Incompat: /usr/X11R6/lib/neXtaw
Wrapped: /usr/lib/xdvik-ja/xdvi.real
Link-name: xdvi.bin
と最後の 1 つを追加した状態で /usr/sbin/update-xaw-wrappers を
実行し、とやってみたけれど、やっぱり xaw-wrappers を経由すると
xdvi.real のほうが実行されてしまうみたいだ。
# 当然
#
# sudo /usr/sbin/update-alternatives --install /usr/X11R6/bin/xdvi.bin \
# xdvi.bin /usr/lib/xdvik-ja/xdvi.real 35
#
# は実行済み。
つうことで、xaw-wrappers を経由して alternatives 使って xdvi-ja(.small).real を
xdvi として使うには、joeyh と喧嘩^H^H^H^Hきちんと議論 (これが難しいんだ、やって
みればわかるけど) して xaw-wrappers をなんとかしないと、という話に結びつくような
気がします。
そのへんが「@Org で議論」につながってるんじゃぁないかなぁ、と考えたり。
とりあえず neXtaw を使わなければ xaw-wrappers を回避しても問題無いのなら
「必要な人は自分で
sudo /usr/sbin/update-alternatives --install /usr/X11R6/bin/xdvi.bin \
xdvi.bin /usr/X11R6/bin/xdvi-ja.small.real 51
してね」
で済ませるというのも一つの解だなぁ、と思ったり。
> > 無視はしてないつもりですが、あまり納得できてないです。
>
> 一番優先すべきはメンテナさんの意向だと思います。
> 納得できてない理由がわからない。。。
>
> # 私はユーザさんの要望があれば、理解できなくても、可能
> # な限り対応する無節操な方ですが、高い見識を持ってメンテ
> # していただけるのは嬉しいと思います。
とりあえず teTeX upstream level で jLaTeX マージとかできると
いいですね。それも i18n 考慮して
\usepackage{japanese}
とかすると tex の内部のスイッチが切り替わって jLaTeX モードになり、
それ以外は通常のモード、とか。
> > YaTeXが対応してるというのは驚きですね(さすが佐野さん)。
>
> でもまだ流動的なのでちょっと早すぎかも。まあ
> 変ればまたすぐに対応するだろうから問題ないか(^^;
あれは /etc/emacs/site-start.d/50yatex-init.el を見てもらうと
わかりますが
;; for Debian potato, 1999 Dec 21 - t.sano
(defvar xdvi-command ; xdvi command on your system
(if (file-exists-p "/usr/X11R6/bin/xdvi-ja.small")
"xdvi-ja.small" "xdvi")
"*Default xdvi command on your system")
と xdvi-command という変数に初期値を設定しているだけなので、
気に入らない人は自分で $HOME/.emacs の中とか、あるいは
/etc/emacs/site-start.d/99localset.el とか作成してその中で
変更してもらえばいいだろう、と考えてます。
# 日本語使わない人で yatex 使ってる人もいるらしいので
# 一応 xdvi-ja.small が無い場合は xdvi に fallback するはずです。
# ああ、ちょっと yatex の部分だけフォローしようと思ったのに
# 長くなってしまった。仕事に行かなきゃ。
--
# (わたしのおうちは浜松市、「夜のお菓子」で有名さ。)
<kgh12351@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)