trampが繋がらなくなった件

一昨日、環境問題も片付いて、さてコードを書こうという時になってtrampが繋がらなくなってしまった。Carbon Emacsを使っている者としては致命的な状況なので、変な汗が出た。少し状況を整理してみると以下のような状況であった。

  1. 繋がらないのは特定のホストの
  2. 特定のユーザのみ
  3. *Messages*によるとunset HISTORYが失敗している

金曜日だったので、毎週末に取っているバックアップまでロールバックすると
1週間分の作業が飛んでしまうのでさすがにそれは避けたい。
取り急ぎ別のユーザを作成してしまおうかと考えたが、emacs lispはいずれ
覚えた方が良いだろうなと思っていたので、この機会に少し弄ってみる事にした。

tramp.elが8000行もあって少し気後れしたけが、なんとか追っていくと
リモートホストに送信したコマンドに対する結果を上手く処理できていなかった。

遅まきながら、ここまで来て少し思い当たったのは先日の、
zshのバージョンを変更した事が原因ではないかという事だ。

もしかして、と思いリモートホストのzshを元のバージョンに戻したところ、
コレがビンゴで正常に動作する事がわかった。そこで双方のzshを設定して、
unsert HISTORYを送信してみたところ、以下のような結果が返却された。

— zsh 4.3.9を設定時 (何故だか解らないが、”%”とスペースが混在している)
unset HISTORY
% taichino@callirrhoe:~>

— zsh 4.2.6を設定時
unset HISTORY
[1] taichino@callirrhoe:~>

この違いにより正規表現でマッチングをかけているpromptを見つける事が出来ず、
接続に失敗したと判断していたのが原因であった。(zshのトラックをするのは
ちょっと心が折れたので、原因というと語弊がありまするが。)

zshのバージョンを戻すとtrampは動くんだけど、それだとまた日本語の文字化け問題が
出てきて嫌なので、4.3.9の返却値でもプロンプトがマッチするように、.emacsで
tramp-shell-prompt-patternの値を書き換えてクローズという事にした。

—.emacs
(setf tramp-shell-prompt-pattern “^[^#$>n]*[#$%>] *([[0-9;]*[a-zA-Z] *)*”)

問題解決までに丸1日くらいの作業時間がかかった。脱線に歯止めが利かないな。。

Leave a Reply

Your email address will not be published. Required fields are marked *