[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: [MD:7250] dired.el uncompress problem on Meadow-3.00-r4031-1-pkg.tar.bz2



山口です.

首がまわらない状況が延々と続いているんで,相変わらず反応が遅くて申し訳
ありません.
# 体重維持のため,夜中は alcohol + αにも頼っている最中です.
# 不謹慎かもしれませんがご容赦下さい.

From: "Shun-ichi GOTO" <shunichi.goto@xxxxxxxxx>
Subject: Re: [MD:7250] dired.el uncompress problem on Meadow-3.00-r4031-1-pkg.tar.bz2
Date: Wed, 22 Mar 2006 13:57:13 +0900
> 
> On 3/18/06, Eisaku YAMAGUCHI <eisaku@xxxxxxxxxxxxxxxxxx> wrote:
> > Solaris 9 (SPARC) で,自分で make した,Emacs 21.4 では
> > dired.el の 'Z' コマンドで,compress/uncompress が gzip を使って(?)
> > きちんと機能します.
> >
> > しかし,Meadow-3.00-r4031-1 では compress は機能しても,uncompress が
> > 機能しません.default では gzip compression ということだと思いますが,
> > toggle せず gzip compressed file が残ったままになります.

# きちんと環境の提示ができていませんでしたね.orz

gzip.exe (というファイル)は Cygwin 環境のものしか生かしてありませんでした.
# それ以外のものは,gzip.exe 以外の名称に名前を変えています.

ちょっと旧いですが Cygwin 関係では

cygwin-1.5.18-1
gzip-1.3.5 (2002-09-30)

が問題の環境です.

> その際に、メッセージはどのように表示されます?
> 失敗(uncompress)したときは以下のようになってたりはしませんか?
> Compress or uncompress s.html.gz? (y or n)
> Uncompressing c:/temp/s.html.gz...done
> s.html: doesn't exist or is inaccessible
> Compress or uncompress: 1 file.

圧縮時には

%%%%%%%%%%
Compress or uncompress x? (y or n) 
Compressing d:/tmp/x...done
Compress or uncompress: 1 file.
%%%%%%%%%%

となります.

展開時には

%%%%%%%%%%
Compress or uncompress x.gz? (y or n) 
Uncompressing d:/tmp/x.gz...done
x: doesn't exist or is inaccessible
dired-move-to-filename: No file on this line
%%%%%%%%%%

となります.(以上,*Messages* buffer の内容です)

| Uncompressing d:/tmp/x.gz...done

とあるので,gunzip.exe が動いている筈なのに…と思い込んでいまいました.

後藤さんが提示してくださった,

> Compress or uncompress: 1 file.

は表示されず,最後には 

"No file on this line"

と表示され,圧縮後には

x.gz

として表示されていたファイルが Dired の buffer から消えた状態になりま
す.
Dired buffer で 'g' コマンドで再表示させると,gunzip 前の x.gz が再表示
されます.

そんな状況でした.

> おそらく cygwin の gunzip を使用しているのではないかと思うのですが、
> だとすると、c:\cygwin\bin\gunzip は cygwin システムでのシンボリックリンク
> であるため、dos窓から実行しても何も行いません。その結果、件の症状の
> ようになります。

なるほど.
確かに,Windows shell からは,KKCFUNC が組み込まれた云々のメッセージが
表示されるだけで,gunzip.exe 自体は実行されませんね.
ここ数年以上 Cygwin 自体を使い込んでいられない(所詮,U.*Xの世界で生き
ている)身として,状況把握ができていなさすぎました.

> このような問題であれば、回避方法としては シンボリックリンクである
> c:\cygwin\bin\gunzip を削除して、gzip.exeをgunzip.exeとしてコピー
> すればよいかと思います。

Windows 95/98/Me および NT4.0/2000/XP/2003 で FAT/FAT32 を使う場合は
それが BCP かと思います.
しかし,現状および今後のことを踏まえて NTFS を使う場合は,ファイルシス
テムがハードリンクをサポートしていますから,ハードリンクが良いと思いま
す.
これは Cygwin のパッケージを更新する際のことも考慮しての話です.
小生は,Administrator 権限で Widnows shell (cmd.exe) を起動し,ハード
リンクを作成して確認してみましたが,それで問題なく動作している模様です.

%%%%%%%%%%  Administrator で...
C:\gnu\bin> bash
bash-3.00$ ls -l gunzip.exe
lrwxrwxrwx  1 Administrator Users     8 Nov 6 00:25 gunzip.exe ->  gzip.exe
bash-3.00$ mv gunzip.exe cyg-gunzip.exe
bash-3.00$ ln gzip.exe gunzip.exe
bash-3.00$ ls -li gzip.exe gunzip.exe
281474976777698 -rwxr-x---+ 2 Administrator Users 62976 Jul 24  2003 gunzip.exe.hardlink
281474976777698 -rwxr-x---+ 2 Administrator Users 62976 Jul 24  2003 gzip.exe
%%%%%%%%%%

Windows command shell でもハードリンクを造れた筈ですが,造り方を忘れて
しまった(確か Resource Kit が必要だったような...)ので,取り敢えず
安直に Cygwin のハードリンクによる確認事例です.

Windows command shell(cmd.exe) でも,gunzip が正常に機能しています.

Emacs が標準で持っている機能ですが,Emacs 自体はファイルシステムの
設定次第でユーザ権限でもAdmin.権限でもどちらでもインストールできて
しまうと思います.
そのあたりの機能をうまく使うためのドキュメント整備ってやっぱり重要です
よね.

インストーラなどのツールでカバーする方向で業界自体が動いていることは
認識しています.結局サポートを含めた TCO 削減にはそれが一番なんでしょ
うが,一教育者としてはやはり本質を見失った行為だと思います.
道具に使われる人間がどんどん増えて,問題の事故解決ができない,
自分で考えられない人間がどんどん増えています.
# Dired & gzip の件で,この ML に post している小生もその一人なんすよ.;-)
# 基本的には自力で悪戦苦闘する主義なんですけどね.

本当にそれでいいの?
自分のことが自分でできない人間を育てていいの?
それに対して常に教育とか学習の在り方について異議を唱えていた自身が
道を踏み誤っていることを改めて確認できました.

Trac に残すべきであれば,ちょっと時間を下さい.
再現テストを含めた作業を適切な時間内で済ませる自信がありません.

p.s.
もう一個の解決案として,gunzip ではなく gzip -d を呼び出すように
dired.el 自体の変更を提案するのも一案と思います.
今回は Windows XP SP2 with NTFS 5.1 上の話でした.
でも,他の OS を含めて考え,汎用性を最優先すると gunzip でなくて
gzip -d の方が懸命な気がします.
Cygwin と NTEmacs/Meadow を併用する環境だと,NTEmacs/Meadow のために,
手動で Cygwin の環境操作が必要なのはいただけないと思います.
シンボリックリンクなのは,Cygwin の問題ではなくて GNU の仕様です.
Emacs 系が,他のツールを併用する事を前提とするならば,Emacs が他のツー
ルやぷラットフォームを意識するのが本質ではないんでしょうか.
個人的には dired.el の fix が BCP と思います.
でも,このあたりは RMS の意見も聞くべきなんでしょうけどね.
RMS と最後に会話したのは,最後の UNIX Fair か何かなので,もう何年前な
んでしょ ;-)
RMS を説得する自信はないなぁ...
明日,自分がこの世にいる自信もありませんから(笑)

-- Eisaku YAMAGUCHI