[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:11118] Re: Emacs lisp load-path (Re: 「一歩進んだ」本 / one step-forward book ^^;;)



[作業結果のまとめ]

ちょっと進みました。
$ ls -la /var/lib/emacsen-common/installed-flavors
-rw-r--r--   1 root     root            0 Dec 16 00:05 /var/lib/emacsen-common/installed-flavors
ってのが問題のようです。何故こうなったのかは現在は判っていません。

まだまだ、調べないとだめですが。思いつく所は
Emacs20とXEmacs20を一時期両方インストールしていたのだが、Emacs20
をまず、リムーブしており、Mewを入れる前にパージしました。

これが、関係してくるのかも知れません。


[作業したこと]
CD-ROMをマウント。(mount /dev/hdc /cdrom)
mewを探す。(find /cdrom -name "*mew*")

/cdrom/debian/hamm/hamm/binary-i386/mail/mew_1.93b33-1.deb
にあることが判る。

コントロールファイルを取り出す。
(dpkg-deb -e /cdrom/debian/hamm/hamm/binary-i386/mail/mew_1.93b33-1.deb)
実行した結果、./DEBIANが作成された。内容は下記。

$ ls -la
total 14
drwxr-xr-x   2 root     root         1024 May 14  1998 .
drwxr-sr-x  10 yab      yab          1024 Dec 19 17:53 ..
-rw-r--r--   1 root     root          954 May 14  1998 control
-rw-r--r--   1 root     root         7526 May 14  1998 md5sums
-rwxr-xr-x   1 root     root          372 May 14  1998 postinst
-rwxr-xr-x   1 root     root           65 May 14  1998 postrm
-rwxr-xr-x   1 root     root           65 May 14  1998 prerm

dpkg -i ほにゃらら.deb する時には、多分postinstが実行するのではないか
と あたりを付けて、シェルスクリプトであるpostinstの内容をみる。

postinstがやっていることは、
1.シェルは、実行したコマンドがエラー状態で終了した場合に即座に、終了する
ように設定する。(#!/bin/sh -e)
2. emacsのパッケージインストールスクリプトを引数 mewを与えて起動する。
 (/usr/lib/emacsen-common/emacs-package-install mew)
3. 英語/日本語のInfoファイルを作成する。

気になるのは、2.なので調べてみる。

$ ls -la /usr/lib/emacsen-common/
total 13
drwxr-xr-x   3 root     root         1024 Dec  8 12:51 .
drwxr-xr-x  59 root     root         7168 Dec 14 23:42 ..
-rwxr-xr-x   1 root     root         1537 May 16  1998 emacs-install
-rwxr-xr-x   1 root     root         1257 May 16  1998 emacs-package-install
lrwxrwxrwx   1 root     root           21 Dec  8 12:51 emacs-package-remove -> emacs-package-install
lrwxrwxrwx   1 root     root           13 Dec  8 12:51 emacs-remove -> emacs-install
drwxr-xr-x   4 root     root         1024 Dec  8 12:50 packages

emacs-package-installは、emacs-package-removeにリンクしているので自分自身
の名前をみて動作を違えているのだろうと予測できる。

この中で
open FLAVORS, "<${var_dir}/installed-flavors" or
  die "emacs-package-$action: Couldn't open ${var_dir}/installed-flavors";
my @installed_flavors = <FLAVORS>;
close FLAVORS;
chomp @installed_flavors;
という部分がある。わたしの環境を調べたところ。

$ ls -la /var/lib/emacsen-common/installed-flavors 
-rw-r--r--   1 root     root            0 Dec 16 00:05 /var/lib/emacsen-common/installed-flavors

と、なっていた。このため

my $script = $lib_dir . "/packages/$action/$pkg"が作るパス
つまり、$script=/usr/lib/emacsen-common/packages/install/mew
を実行する以下の

my $script = $lib_dir . "/packages/$action/$pkg";
execute($script, 'emacs', @installed_flavors) if -e $script;

my $flavor;
foreach $flavor (@installed_flavors) {
  execute($script, $flavor, @installed_flavors) if -e $script;

引数@installed_flavorsがNULLの状態で実行されてしまった。

よって、うまくインストールできてない。

====+====+====+====+====+====+====+====+====+====+====+====+====+====+
yabuki yukiharu (矢吹幸治)
Email: yabuki@xxxxxxxxxxxxxxx
       GAA00412@xxxxxxxxxxx
Key fingerprint = 27 96 DD BA FC FF BE 19  E5 60 2F 43 73 85 74 84
====+====+====+====+====+====+====+====+====+====+====+====+====+====+