This is tramp_ja.info, produced by makeinfo version 4.6 from
tramp_ja.texi.

Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
Inc.

     Permission is granted to copy, distribute and/or modify this
     document under the terms of the GNU Free Documentation License,
     Version 1.1 or any later version published by the Free Software
     Foundation; with no Invariant Sections, with the Front-Cover texts
     being "A GNU Manual", and with the Back-Cover Texts as in (a)
     below.  A copy of the license is included in the section entitled
     "GNU Free Documentation License" in the Emacs manual.

     (a) The FSF's Back-Cover Text is: "You have freedom to copy and
     modify this GNU Manual, like GNU software.  Copies published by
     the Free Software Foundation raise funds for GNU development."

     This document is part of a collection distributed under the GNU
     Free Documentation License.  If you want to distribute this
     document separately from the collection, you can do so by adding a
     copy of the license to the document, as described in section 6 of
     the license.
   
INFO-DIR-SECTION Emacs
START-INFO-DIR-ENTRY
* TRAMP-ja: (tramp_ja).          Transparent Remote Access, Multiple Protocol
                                 Emacs remote file access via rsh and rcp
                                 (Japanese).
END-INFO-DIR-ENTRY


File: tramp_ja.info,  Node: Top,  Next: Overview,  Prev: (dir),  Up: (dir)

TRAMP version 2.0.47 ユーザーマニュアル
***************************************

このファイルは TRAMP version 2.0.47 について説明します。 TRAMP は
XEmacs にリモートファイルの編集機能を提供する パッケージです。

   TRAMP は `Transparent Remote (file) Access, Multiple Protocol'
の略称です。このパッケージは EFS のような
リモートファイルの編集機能を提供します。

   異なる点はファイルの転送方法です。EFS は、
ローカルホストとリモートホスト間のファイル転送に FTP を使用します。
一方 TRAMP は、`rsh' と `rcp' あるいは他の同じよう
な働きをするプログラム、例えば `ssh' や `scp'を使用し ます。

   このドキュメントの最新バージョンは web サイト
`http://www.freesoftware.fsf.org/tramp/' にあります。

   TRAMPのためのメーリングリスト
<tramp-devel@mail.freesoftware.fsf.org>,
が存在します。アーカイブは通常の Savannah アーカイブと同じ場所と、
`http://www.mail-archive.com/emacs-rcp@ls6.cs.uni-dortmund.de/'
にあります。

Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation,
Inc.

     Permission is granted to copy, distribute and/or modify this
     document under the terms of the GNU Free Documentation License,
     Version 1.1 or any later version published by the Free Software
     Foundation; with no Invariant Sections, with the Front-Cover texts
     being "A GNU Manual", and with the Back-Cover Texts as in (a)
     below.  A copy of the license is included in the section entitled
     "GNU Free Documentation License" in the Emacs manual.

     (a) The FSF's Back-Cover Text is: "You have freedom to copy and
     modify this GNU Manual, like GNU software.  Copies published by
     the Free Software Foundation raise funds for GNU development."

     This document is part of a collection distributed under the GNU
     Free Documentation License.  If you want to distribute this
     document separately from the collection, you can do so by adding a
     copy of the license to the document, as described in section 6 of
     the license.
   
* Menu:

* Overview::                    TRAMP で可能な事、不可能な事

エンドユーザー向け:

* Obtaining Tramp::             TRAMP の入手方法
* History::                     TRAMP の歴史
* Configuration::               TRAMP の設定
* Usage::                       TRAMP の使い方
* Bug Reports::                 バグや問題の報告
* Frequently Asked Questions::  よくある質問とその答
* Concept Index::               それぞれの概念についての項目

開発者向け:

* Version Control::             リモートバージョンコントロールの内部動作
* Files directories and localnames:: ファイル名、ディレクトリ、ローカル名がどのように
                                変換され(mangled)、管理されるか
* Issues::			議論の余地がある点と何が決定されているか

 --- 詳細なノードの一覧 ---

TRAMP の設定

* Connection types::            リモートマシンへの接続の種類
* Inline methods::              インラインメソッド
* External transfer methods::   外部転送メソッド
* Multi-hop Methods::           マルチホップを使用したリモートホストへの接続
* Default Method::              デフォルトのメソッドの選択
* Customizing Methods::         非標準のメソッドを使う
* Customizing Completion::      ユーザ／ホスト名補完のための設定ファイルの選択
* Remote Programs::             リモートマシン上で TRAMP がプログラムを発見、使用する方法
* Remote shell setup::          リモートシェル設定のヒント
* Windows setup hints::         Cygwin ssh にまつわる事柄
* Auto-save and Backup::        Auto-save とバックアップ

TRAMP の使い方

* Filename Syntax::             TRAMP ファイル名のきまり
* Multi-hop filename syntax::   マルチホップファイル名のきまり
* Filename completion::         ファイル名の補完
* Dired::                       Dired

リモートバージョンコントロールの内部動作

* Version Controlled Files::    ファイルがバージョン管理されているかどうかの判断
* Remote Commands::             リモートマシン上でのバージョン管理コマンドの実行
* Changed workfiles::           作業ファイルの変更の発見
* Checking out files::          作業ファイルのリポジトリからの取得
* Miscellaneous Version Control::  その他バージョン管理システムに関係する事

その他バージョン管理システムに関係する事

* Remote File Ownership::       VC がワークファイルのオーナーを調べる方法
* Back-end Versions::           VC が RCS のバージョンを調べる方法

ファイル名、ディレクトリ、ローカル名がどのように変換され(mangled)、管理されるか

* Localname deconstruction::    ローカル名の要素への分解


File: tramp_ja.info,  Node: Overview,  Next: Obtaining Tramp,  Prev: Top,  Up: Top

TRAMP の概要
************

XEmacs に TRAMP をインストールすると、リモートマシン上
のファイルにローカルファイルと同じような感覚でアクセスできます。
リモートファイルシステム上のファイルの編集、バージョンコントロール、
`dired' を透過的に実行することができます。

   リモートマシンへのアクセスには、`rsh' や `rlogin'、 `telnet'
コマンド、あるいはこれらに類似した接続方法を使用
します。これらのコマンドは ASCII を通過させることが可能でなければ
なりませんが、8-bit クリーンである必要はありません。

   このパッケージは別のマシンへの `ssh' 接続をサポートします。
これは、このパッケージのもっとも一般的な使い方のひとつです。特に
`ftp'アクセスが許可されていない場合にも、他のマシンへの
比較的セキュアなアクセスが可能となります。

   TRAMP によって実行されるアクティビティのほとんどは、リモート
ログインが可能で、端末上で実行できることだけを要求します。リモート
ファイルにアクセスするために、TRAMP はファイルの内容を一時的
にローカルマシンに転送します。

   TRAMP は、さまざまな方法でマシン間のファイル転送をおこないます。
転送方法は簡単に選択でき、あなたのニーズとマシン環境に応じて使い
わける事ができます。

(大きなファイルに対して)もっとも速い転送メソッドは、リモートファイルの
転送パッケージ、たとえば `rcp'、`scp'、`rsync'
を使うものです。これらのメソッドは、ファイルのコピーコマンドがリモート
マシンのパスワードをたずねない場合にのみ有効です。

   もし、リモートコピーメソッドが使えない場合のために、TRAMP は、
シェルを直接利用した符号化転送方法をサポートしています。この方法を使う
ためには、`mimencode' か `uuencode' がリモートマシン
上に存在しなければなりません。これらは一般に小さなファイルに対して速い
方法です。

   上記の制限内であれば、TRAMP は非常にパワフルです。ただし、注意して
おかなければならないのは、現在の TRAMP は、エンドユーザー向けの洗練
された製品とはほど遠い状態であるということです。もうしばらくの間は、時々
ちょっと困った事になったり、コードに問題があるかもしれないということを
念頭においておいてください。

すでに開発者が日々の作業に使う事ができる程度には安定しています。しかし、
インストールと設定を覚えるのは、専門用語のせいで若干難しいでしょう。

   TRAMP は、まだアクティブに開発をしている最中です。したがって、どんな
些細な問題であっても、ぜひ TRAMP 開発者に報告してください。 *Note Bug
Reports::.

舞台の裏側
..........

このセクションでは、TRAMP を使いリモートファイルにアクセスした時に、
舞台の裏側で何がおこっているかを説明します。

   `C-x C-f' とタイプし、TRAMP のファイル名の一部を入力します。
それから、ファイル名の補完のために `<TAB>' を押します。これ
がそのホストに対する初めての TRAMP の起動の場合、以下のような事
がおこります。

   * TRAMP は、他のホストへの接続が必要な事を認識します。それから
     `telnet HOST' か `rsh HOST -l USER' あるい
     は、その他のリモートホストへ接続するためのツールを起動します。これらの
     プロセスとのコミュニケーションは XEmacs のバッファを経由し
     ておこなわれます。したがって、リモート側からの出力はこのバッファに出力
     されます。

   * リモートホストは、ログイン名のプロンプトを表示します(`telnet'
     の場合)。ログイン名は入力されたファイル名に含まれているので、TRAMP
     はログイン名と改行を送信します。

   * リモートホストは、パスワードあるいはパスフレーズのプロンプトを表示
     します(これは`rsh' の場合です。`telnet' の場合はログ
     イン名を送信した後に表示されます)。TRAMP はミニバッファにプロン
     プトを表示し、パスワードまたはパスフレーズをたずねます。

     パスワードかパスフレーズを入力すると、TRAMP はそれをリモートホスト
     に送信し、次に改行を送信します。

   * TRAMP は、シェルプロンプトかログインに失敗した旨のメッセージを待ち
     ます。

     もし、TRAMP
     が、一定時間(たとえば一分)待っても、これらのメッセージを
     発見することができなかったら、リモートシェルのプロンプトを発見できなかっ
     た旨のメッセージを出力し、リモートホストから送信されたメッセージを表示
     します。

     もし、TRAMP が `login failed' というメッセージを発見したら、それを
     表示し、ログインを中止します。これで再びログインを試みることができます。

   * ログインに成功し、TRAMP
     がシェルプロンプトを発見したとします。ここで、 TRAMP は `/bin/sh'
     を起動します。これは、Bourne シェルと C
     シェルでは文法が異なるためです。(1)

     Bourne シェルが起動されたら、TRAMP
     は確実に動作する環境を準備するため
     にいくつかのコマンドを送信します。echo
     をオフにし、シェルプロンプトを設定
     したり、その他いくつかの事をおこないます。

   *
     さて、リモートシェルが起動されきちんと動作する状態になりました。ここで、
     何がおこるはずだったか思いだしてください。リモートホスト上にどのような
     ファイルが存在するかを TRAMP
     が調べ、ファイル名を補完できるようになる ことです。

     TRAMP は `cd' と `ls' コマンド、そして時々 globbing された `echo'
     を実行します。これ以外に、ファイルが書き込み可能
     かどうか、ディレクトリかどうか等を調べるために `test' が、しば
     しば使用されます。オペレーションをおこなうために、すべてのコマンドの出
     力はパースされます。

   * ファイル名の補完が完了し、`C-xC-f'と完全なファイル名を入力し、
     `<RET>' を押したとしましょう。ファイルを編集するために、リモート
     ホストからローカルホストにファイルの内容を転送する時がようやくやって
     きました。

     TRAMP
     がどのようにファイルの内容を転送するのかという説明は、上を見て
     ください。

     インライン転送のために、TRAMP は `mimencode -b
     /path/to/remote/file'
     のようなコマンドを実行し、出力がコミュニケーションのためのバッファに
     蓄積されるまで待ちます。そして、ファイルの中身を作成するために、出力を
     復号化します。

     out-of-band 転送のために、TRAMP は以下のようなコマンドを実行します:
          rcp user@host:/path/to/remote/file /tmp/tramp.4711
     そして、ローカルな一時ファイル `/tmp/tramp.4711' をバッファに読み
     込み、一時ファイルを削除します。

   *
     今、あなたはバッファの内容を編集しています。しかし、幸運にも舞台裏で何が
     おこっているのかに気がつきません(このセクションを読むまでは、そうでしょう)。
     作業が終り、バッファを保存するために `C-x C-s' を押します。

   * 再び、TRAMP はファイルの内容をリモートホストにインラインか
     out-of-band
     メソッドで転送します。ここではファイルを読み時におこっている事と逆のこと
     がおこっています。


   この説明で、TRAMP
を使いファイルをオープンした時に舞台裏でおこっている
事をわかってもらえることを願っています。

   ---------- Footnotes ----------

   (1) ログインシェルが `exec /bin/sh' を正しいコマンドとして認識せずに
`/bin/sh' の起動に失敗することがあるかもしれません。たぶん、あなたは
Scheme シェル `scsh' を使っているのでしょう...


File: tramp_ja.info,  Node: Obtaining Tramp,  Next: History,  Prev: Overview,  Up: Top

Tramp の入手方法
****************

TRAMP は、インターネット上でフリーに配布されています。最新版は
`http://savannah.nongnu.org/download/tramp/'
からダウンロード可能です。この中には、インストールに必要な TRAMP
のすべてのドキュメントとソースコードが含まれています。しかし、Emacs
(21.4 かそれ以降のもの) は、TRAMP を含んでおり、XEmacs にも TRAMP
のパッケージがあります。したがって、それらを使う方がたぶん簡単でしょう。
しかし、もし最新の開発版を求めるのであれば、続きを読んで下さい......

   冒険家のために TRAMP は CVS からも入手可能です。CVS から入手した
バージョンはソースコードの最新バージョンです。したがって、不完全な
機能や新たな問題をかかえているかもしれません。このバージョンは自分
の責任で使用してください。

   TRAMP の最新の開発バージョンを CVS から入手する方法は、以下に示す
Savannah プロジェクトページに行って一番上のナビゲーションバーにある CVS
のリンクをクリックすれば見ることが出来ます。

`http://savannah.gnu.org/projects/tramp/'

もしくは、以下のセッションの例に従って下さい。

     ] *cd ~/xemacs*
     ] *cvs -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/tramp login*
     
     CVS password: *(just hit RET here)*
     ...
     
     ] *cvs -z3 -d:pserver:anoncvs@subversions.gnu.org:/cvsroot/tramp co tramp*

   これで、TRAMP の最新バージョンが含まれるディレクトリ `~/xemacs/tramp'
が作成されるはずです。以下のコマンドを実行することにより、最新のバージョン
に更新することができます:

     ] *cd ~/xemacs/tramp*
     ] *cvs update -d*

CVS リポジトリからファイルを更新したら、新しい `configure' スクリプト
を生成するために `autoconf' を実行する必要があります:

     ] *cd ~/xemacs/tramp*
     ] *autoconf*


File: tramp_ja.info,  Node: History,  Next: Configuration,  Prev: Obtaining Tramp,  Up: Top

TRAMP の歴史
************

TRAMP の開発は 1998 年の 11月下旬に始まりました。その当時は、この
パッケージは `rssh.el' と呼ばれていました。ファイルにアクセスするため
のたったひとつのメソッドがあるだけで、`ssh' を使用しリモート
ホストにログインし、`scp' でファイルの内容を転送していました。
しばらくして、名前が `rcp.el' に変わり、今は TRAMP と呼ばれています。
これに伴い、リモートシェルを起動しファイルの内容を転送する多くのメソッド
が追加されました。また、VC サポートも追加されました。

もっとも最近の大きな機能追加は、2000年4月のマルチホップメソッドの追加と、
2002年7月の TRAMP におけるファイル名と Ange-FTP におけるファイル名の
統一です。


File: tramp_ja.info,  Node: Configuration,  Next: Usage,  Prev: History,  Up: Top

TRAMP の設定
************

TRAMP は(通常)インストールするだけで完全に機能します。初期状態では、
リモートホストへの接続に `ssh' プログラムを使用し、base64 エン
コーディングもしくは uu エンコーディングを使用するように設定されていま
す。 従って最も簡単な場合には `C-x C-f' と打ち込んでファイル名
`/[USER@MACHINE]/PATH/TO.FILE'.  を入力するだけです。

ホストによっては、接続を確立するのに問題が起きることがあります。これは、
remote shell の振る舞いによるものです。この詳細については *Note Remote
shell setup::, を参照してください。

もし、リモートホストとの接続にこれらのコマンドを使用したくない場合は、
TRAMP のデフォルトの接続と転送メソッドを変更してください。リモート
マシンに接続しファイルを転送するのに使うことのできる TRAMP のメソッド
がいくつかあります (*note Connection types::)。

   どのメソッドがふさわしいかわからないなら次を見て下さい: *Note
Default Method::.

* Menu:

* Connection types::            リモートマシンへの接続の種類
* Inline methods::              インラインメソッド
* External transfer methods::   外部転送メソッド
* Multi-hop Methods::           マルチホップを使用したリモートホストへの接続
* Default Method::              デフォルトのメソッドの選択
                                  ここではどのメソッドを使えばよいか
                                  わからない人のお手伝いもします。
* Customizing Methods::         非標準のメソッドを使う
* Customizing Completion::      ユーザ/ホスト名補完のための設定ファイルの選択
* Remote Programs::             リモートマシン上で TRAMP がプログラムを発見、使用する方法
* Remote shell setup::          リモートシェル設定のヒント
* Windows setup hints::         Cygwin ssh にまつわる事柄
* Auto-save and Backup::        Auto-save とバックアップ


File: tramp_ja.info,  Node: Connection types,  Next: Inline methods,  Up: Configuration

リモートマシンへの接続の種類
============================

転送メソッドには二つの基本的なタイプがあり、それぞれに長所、短所が
あります。両者ともに、`rsh' や `ssh'、`telnet'
のようなリモートシェルにアクセスするプログラムを使用し、リモートマシン
に接続します。

   このコネクションは、TRAMP がローカルマシンからリモートマシンへ透過的
にアクセスするために、さまざまなオペレーションをおこなうために使われます。
ファイルをオープンした時のメソッドが異なるだけです。

リモートファイルを読み込んだり、保存する時には、二つのマシン間でファイル
の内容を転送する必要があります。ファイルの内容は、マシンにログインしたの
と同じコネクションか、`rcp' や `scp'、`rsync'
などのリモートコピープログラムを使用した別のコネクションで転送されます。
前者は "インラインメソッド"、後者は "out-of-band メソッド" あるいは
"外部転送メソッド" (略して "外部メソッド") とよばれます。

   少なくとも大きなファイルに対しては、一般に外部転送メソッドの性能は
インラインメソッドよりすぐれています。その理由は、インライン転送では
データの符号化、復号化をおこなう必要があるからです。

   このルールの唯一の例外は、`scp' を使用する転送メソッドです。
これらのメソッドの実際のファイル転送の性能は高いのですが、転送開始時
の暗号化にかかわるネゴシエーションのオーバーヘッドがファイル転送の性能
を帳消しにします。

外部転送メソッドを使うためには、リモートコピーコマンドが対話的でない、
つまりコマンドがパスワードのためにプロンプトを出力しないことが必要です。
もし、パスワード入力なしのリモートコピーコマンドを使う事ができないので
あれば、インラインメソッドを使う必要があります。

   インラインメソッドの一種に、"マルチホップメソッド" があります。
このメソッドを使うと、いくつかのホップを使い、リモートホストへ接続
できます。これは、あなたがセキュアなネットワークの中にいて、要塞ホスト
を経由して外部に接続する場合に便利です。


File: tramp_ja.info,  Node: Inline methods,  Next: External transfer methods,  Prev: Connection types,  Up: Configuration

インラインメソッド
==================

TRAMP のインラインメソッドは大変強力で、外部転送メソッドを使う事が
できない状況でも動作します。インラインメソッドは、telnet 経由でリモート
マシンに接続している時に動作する唯一のメソッドです(ホスト間でなく
_ユーザー_ 間のファイル転送を可能にする、ちょっと変わったメソッド
もあります。以下を参照してください)。

これらのメソッドを使うためには、符号化、復号化のためのコマンドがリモート
マシン上に存在しなければなりません。ローカルマシン上では、TRAMP は
ファイルを復号化、符号化する Emacs の機能を使うか、外部コマンドを使用
します。

   TRAMP は、リモートホストにおいて `mimencode' (`metamail'
パッケージの一部) や `uuencode' といった
コマンドの存在と、それが使えるかどうかを調べます。最初の信頼できるコマンドが
使われます。検索パスをカスタマイズすることができます。*Note Remote
Programs:: を参照して下さい。

   もしどちらのコマンドもリモートホストに無かった場合、 TRAMP は小さな
Perl のコードをリモートホストに転送し、それをエンコードやデコードに用い
ようとします。

`rsh'
     リモートホストに `rsh' で接続します。セキュアでない接続の為、
     極めてローカルなホストトポロジー以外に用いるべきではありません。

     `rsh' の代わりに `remsh' コマンドを提供するオペレーテ
     ィングシステムではメソッド `remsh' を使うこともできます。例えば
     HP-UX や Cray UNICOS の場合があてはまります。

`ssh'
     リモートホストに `ssh' で接続します。`ssh' パッケージ
     を用いて接続をよりセキュアにしていることを除けば先ほどのオプションと同
     じです。

     `ssh1' と `ssh2' という二つの変種があり、それぞれは `ssh -1' と
     `ssh -2' を呼び出します。このようにして、 SSH プロトコルバージョン
     1 と 2 のどちらを用いてリモートホストに接続
     するかを明示的に選択することができます。(SSH の設定ファイル
     `~/.ssh/config' でどちらのプロトコルを用いるか指定し、通常の `ssh'
     メソッドを用いる こともできます。)

     またそのほかに、 `ssh1_old' と `ssh2_old' という二つの変種が
     存在し、明示的に `ssh1' コマンドと `ssh2' コマンドを使います。
     それらが何か知らないなら、これらのオプションはあなたには必要ありません。

     `ssh' に基づく全てのメソッドは、クルージ的特徴を持ちます:
     `host#42'
     のようにして(実ホスト名に続けてハッシュ記号、そしてポート番号)
     ホスト名を指定することができます。これの意味は、指定したホストに接続する際に、
     `ssh' コマンドの引数として `-p 42' を渡すということです。

`telnet'
     リモートホストに `telnet' で接続します。これは `rsh' メソッド
     と同様にセキュアでない方法です。

`su'
     このメソッドはリモートホストに接続しません。そのかわりに `su'
     プログラムを使うことで他のユーザとしてファイルを編集することを可能と
     します。

`sudo'
     このメソッドは、`su' メソッドに似ていますが、違うユーザーになる
     ために `su' でなく `sudo' を使用します。

     そのユーザーでシェルを起動できるように、`sudo' が設定されていな
     ければならないことに注意してください。`ls' と `mimedecode'
     の起動の許可だけで十分であればよいのですが、そのように実装するのは簡単では
     なく、まだ無理です。

`sshx'
     お分かりのように、これは `ssh' とちょっと違った類似物です。 `ssh'
     がリモートホストで通常の対話的シェルを開くのに対し、
     このオプションは `ssh -t -t HOST -l USER /bin/sh'
     を使って接続を行ないます。この方法は、通常のログインシェルが、ログイン
     の際に質問をしてくるように設定してある場合に有用です。この手順により
     それらの質問を回避して、`標準的な' ログインシェルを TRAMP に使わせ
     ることができます。

     この手続きは `ssh' 自身からの質問を排除しないことに注意して下
     さい。例えばリモートホストのホスト鍵が未知の物である場合に、"Are
     you sure you want to continue connecting?" と `ssh' が訊いてくる
     かもしれません。TRAMP  は(今のところ)そのような質問を扱う方法を知ら
     ないので、そのような質問をされないでログインできるようにしておく必要が
     あります。

     この手順は、 `ssh' を Emacs バッファから呼ぶと pseudo tty を割
     り当ててないと言われてしまう Windows
     ユーザにとっても有用です。この時、
     ログインシェルはシェルプロンプトを一切表示しようとしなくて、それは
     TRAMP を大変混乱させてしまいます。未知の理由により、いくつかの
     `ssh' の Windows への移植版(たぶん Cygwin のものも)は  `-t'
     オプションを二つ重ねて使うことを要求します。

     これは `-p' クルージをサポートします。

`krlogin'
     このメソッドも `ssh' に似ています。リモートホストにログインするのに
     `krlogin -x' コマンドを使うだけです。

`plink'
     このメソッドは SSH の PuTTY 実装を使っている Windows ユーザにとって
     とても興味深いものです。リモートホストにログインするのに `plink
     -ssh' を使います。

     さらにメソッド `plink1' が提供されます。それは 明示的に SSH
     プロトコルバージョン 1 を使うために `plink -1 -ssh'
     を呼び出します。

     CCC: SSH key
     を受理するためにコマンドラインからリモートホストへ繋ぐ必要は
     あるのか? これは自動化できないか?

     CCC: `plink' は `-p' オプションをサポートしているか? いずれに せよ
     TRAMP はそれをサポートする。



File: tramp_ja.info,  Node: External transfer methods,  Next: Multi-hop Methods,  Prev: Inline methods,  Up: Configuration

外部転送メソッド
================

外部転送メソッドは複数のチャネルを使用します。オペレーションのために
リモートシェルのコネクションを使い、ファイル転送には、外部プログラム
を使います。

これは、インライン転送時の、ひとつのコネクションを使った多重化転送のため
の符号化、復号化のオーバーヘッドを削減します。

外部転送メソッドを使いたい場合は、ファイルをコピーするための転送ユーティ
リティが、パスワード入力なしで実行できなければなりません。

   つまり、`scp' を使う場合や、使っている `scp' がコマンド
ラインでパスワードを受け付けるバージョンの場合には、`ssh-agent'
を使う必要があるということです。(1) `ssh' 経由で `rsync'
を使う場合も同様です。

   もし、パスワード入力なしで `scp' を実行することができないが、
コネクションをセキュアにするために `ssh' を使いたい場合は、 `ssh'
ベースのインラインメソッドを参照してください。

`rcp'  --  `rsh' と `rcp'
     このメソッドは `rsh' と `rcp' を使い、リモートマシン
     に接続、ファイル転送をおこないます。おそらく最速のメソッドです。

     もう一つ別のメソッド `remcp' では `remsh' コマンドと `rcp'
     コマンドを使います。これは `rsh' の代わりに `remsh'
     が使われるマシン上で使われるべきです。

`scp'  --  `ssh' と `scp'
     リモートホストへの接続のための `ssh' や、マシン間のファイル転送
     のための `scp' は、リモートマシンへのセキュアな接続とファイル
     アクセスのためには最良のメソッドです。

     このオプションの性能も優れています。しかし、小さいファイルのオープン、
     クローズを頻繁に繰り返す場合はインラインメソッドより遅くなります。
     `scp'セッション開始時の暗号化のためのハンドシェークのコストは、
     符号化、復号化をおこなわない利点を帳消しにします。

     `scp1' と `scp2' という二つの変種があり、それぞれは `ssh -1' と
     `ssh -2' を呼び出します。このようにして、 SSH プロトコルバージョン
     1 と 2 のどちらを用いてリモートホストに接続
     するかを明示的に選択することができます。(SSH の設定ファイル
     `~/.ssh/config' でどちらのプロトコルを用いるか指定し、通常の `scp'
     メソッドを用いる こともできます。)

     またそのほかに、 `scp1_old' と `scp2_old' という二つの変種が
     存在し、明示的に `ssh1' コマンドと `ssh2' コマンドを使います。
     それらが何か知らないなら、これらのオプションはあなたには必要ありません。

     `ssh' に基づく全てのメソッドは、 `-p' に関するクルージ的
     特徴を持っており、ホスト名の中でポート番号を指定できます。例えばホスト
     名を `host#42' とすることで `ssh' コマンドの引数リストに `-p 42'
     を指定するように TRAMP に指示できます。

`rsync'  --  `ssh' と `rsync'
     リモートホストにセキュアに接続するために `ssh' コマンドを、
     ファイル転送のために `rsync' を使うのが、`scp' メソッドの特徴です。

     両側のホスト上に存在するファイルを転送する場合、`rsync' は `scp'
     より高性能です。この利点は、ファイルが片側のホストに
     しかない場合には失なわれます。

     リモートシステムへ書き込む場合、`rsync' ベースのメソッドは `rcp'
     ベースのメソッドよりかなり速いでしょう。しかし、ローカル
     マシンのファイルを読み込む場合は、直接コピーするより速くありません。

     このメソッドは `-p' ハックをサポートします。

`scpx' -- `ssh' と `scp'
     想像通り、このメソッドは `scp' とよく似ています。`scp' が
     リモートホスト上で通常の対話的シェルを起動するのに対して、このオプション
     はコネクションをオープンするために `ssh -t -t HOST -l USER /bin/sh'
     を使います。このオプションは、通常のログインシェルがログイン時にいくつか
     の質問をおこなうように設定されている場合に役に立ちます。この手順により
     それらの質問を回避して、`標準的な' ログインシェルを TRAMP に使わせ
     ることができます。

     この手順は Windows ユーザにとって `ssh' を Emacs バッファから
     呼ぶと pseudo tty
     を割り当ててないと言われてしまう場合にも有用です。
     この時ログインシェルはシェルプロンプトを一切表示しないために TRAMP
     は大変混乱してしまいます。たぶんこれは Cygwin に移植されたSSH
     の場合に 当てはまります。

     このメソッドは `-p' ハックをサポートします。

`pscp' -- `plink' と `pscp'
     このメソッドは `scp' に似ていますが、リモートホストに接続するの に
     `plink' コマンドを使い、ファイルを転送するのに `pscp'
     を使います。これらのコマンドは Windows 用の SSH 実装である PuTTY に
     含まれています。

     CCC: `plink' は `-p' ハックをサポートしているか?

`fcp' -- `fsh' と `fcp'
     このメソッドは `scp' に似ていますが、リモートホストに接続するの に
     `fsh' コマンドを使い、ファイルを転送するのに `fcp' を使います。
     `fsh/fcp' は `ssh' のフロントエンドで、 同一の `ssh'
     セッションを再利用していくつかのコマンドを送るこ
     とを可能とします。これにより、`scp' の起動にかかるオーバーヘッド
     (呼ばれる度にセキュアな接続を確立しないといけない)を回避できます。
     一方、同様の効果を得るためにインラインメソッドのどれかを用いることも
     できることを注意しておきます。

     このメソッドはコマンド `fsh HOST -l USER /bin/sh -i'
     を使って接続を確立します。単に `fsh HOST -l USER'
     としただけでは動きません。

     `fsh' プログラムが提供する多重化は我々の文脈ではそれほど有用で
     はないので、それを用いるインラインメソッドは存在しません。その代わり
     TRAMP
     は単にリモートホストへの一つの接続を開き、その接続を保持します。

`smb' -- `smbclient'
     これはまた別の TRAMP 独自でないメソッドです。`smbclient'
     コマンドを別の Unices 上で使って、SMB サーバへの接続を行ないます。
     SMB サーバは別の UNIX ホスト上の Samba (もしくは CIFS)
     サーバであるか もしれませんし、さらに興味深いことに、MS Windows
     が動いているホストで あるかもしれないのです。今のところ、MS
     Windows NT、MS Windows 2000、 および MS Windows XP
     に対してテストされています。

     ローカル名の先頭のディレクトリはリモートホストでの共有名でなければなり
     ません。通常デフォルトの共有の終端は文字 `$' ですが、ファイル名の
     環境変数による展開のため、それを `$$' と書く必要があることを憶えて
     おいて下さい。もし、共有名が与えられなければ(すなわちリモートディレクトリ
     が `/' の場合)、全ての利用可能な共有たちが表示されます。

     認可は共有レベルでなされているので、同じホストであっても別の共有にアク
     セスすると必ずパスワードを求められます。セキュリティ上の理由からパスワ
     ードはキャッシュされません。

     MS Windows
     は認可のためにユーザ名とドメイン名の両方を用います。このた
     め、TRAMP 構文は拡張されました: ユーザ名を指定する際に
     `user%domain'
     (実ユーザ名、パーセント記号、ドメイン名)のように書くことができます。
     したがって、マシン `melancholia' にドメイン `BIZARRE' のユーザ
     `daniel' として接続して、ホームディレクトリ (共有 `daniel$')
     にある `.emacs' を編集する場合、ファイル名を
     `/[smb/daniel%BIZARRE@melancholia]/daniel$$/.emacs' と指定します。

     ドメイン名やユーザ名は付けないこともできます。もしユーザ名が指定されな
     ければ匿名ユーザ(パスワード入力の必要がない)が仮定されます。これは他の
     全ての TRAMP メソッドと異なります。他のメソッドで同じ状況の場合には
     ローカルユーザ名が使われます。

     `smb' メソッドは `-p' ハックをサポートします。

     *注意して下さい:* もし Emacs がローカルの MS Windows の下で動い
     ているならばこのメソッドは利用できません。その代わりに、
     `//melancholia/daniel$$/.emacs' のような UNC ファイル名を使うこと
     ができます。唯一の欠点は他のユーザ名を指定するための方法が無いことです。


   ---------- Footnotes ----------

   (1) PuTTY's `pscp' では コマンドラインでパスワードを指定できます。


File: tramp_ja.info,  Node: Multi-hop Methods,  Next: Default Method,  Prev: External transfer methods,  Up: Configuration

複数のホップを使いリモートホストに接続する
==========================================

これまでに説明したメソッドでは不十分な事があります。シンプルなメソッドを
使ってリモートホストに接続できないことがあります。たとえば、セキュアな
ネットワークの中にいる場合、外部に接続する前にまず要塞ホストにログイン
しなければならないでしょう。もちろん、ターゲットホストは要塞ホストも要求
します。マルチホップのファイル名のフォーマットは、通常の TRAMP の
メソッドとすこし異なります。

   マルチホップのファイル名は、メソッド名、ホップ数、ローカル名(リモート
システム上のパス名)を指定します。メソッド名は常に `multi' です。

   各ホップは "ホップメソッド" 指定、つまりユーザ名とホスト名から成り
ます。ホップメソッドはインラインメソッドのみになり得ます。以下のホップ
メソッドが(今のところ)利用可能です:

`telnet'
     ホストへの接続によく知られた `telnet' プログラムを使用します。
     ユーザー名とホスト名はファイル名の中に含まれ、パスワードをたずねられます。

`rsh'
     ホストへの接続に `rsh' を使用します。`rsh' がパスワード
     をたずねる時以外は、パスワードを入力する必要はありません。

     この変種 `remsh' は `remsh' コマンドを使います。これは `rsh'
     の代わりに `remsh' が使われるマシン上で使われる べきです。

`ssh'
     このメソッドはホストへの接続のために `ssh' を使用します。パスワード
     かパスフレーズを入力する必要があります。

`su'
     このメソッドは他のホストへまったくアクセスしません。そのかわり、今いる
     ホスト上で他のユーザーになることができます。これは、root
     としてファイル を編集したいが、リモートホストはリモートからの root
     のログインを許可して
     いない場合に役に立ちます。このような場合、一般ユーザーでのリモートホスト
     への接続に `telnet'、`rsh' あるいは `ssh' を使う
     ことができます。それから、root になるために `su' ホップを使います。
     `su' は一連のシークエンス中の最後のホップである必要はありません。
     必要であればホップ中のどこででも使うことができます。

     `su' ホップと一緒にユーザーとホスト両方を指定しなければなりません。
     しかしながら、ホスト名は無視されユーザー名だけが使用されます。

`sudo'
     これは `su' ホップに似ています。違うユーザーになるために `su'
     でなく `sudo' を使用する点が異なります。


   `ssh' を用いてポートフォワードをしたい場合や、標準的でないポートを
使用しなければならない場合があるかもしれません。そのような場合には、
ホスト名ごとに異なるポート番号を指定した記述を `~/.ssh/config' に
書き込むことで実現できます。しかしながら、マルチホップメソッドを使えば
それは TRAMP の枠内で実現することもできます。例えば:

     (add-to-list
      'tramp-multi-connection-function-alist
      '("sshf" tramp-multi-connect-rlogin "ssh %h -l %u -p 4400%n"))

   とすれば、 `sshf' ホップを用いて、標準的なポートの変わりに 4400 番
ポートへ繋ぐことができます。


File: tramp_ja.info,  Node: Default Method,  Next: Customizing Methods,  Prev: Multi-hop Methods,  Up: Configuration

デフォルトのメソッドの選択
==========================

普段よく使う適切な転送メソッドを選択するには、変数
`tramp-default-method' を設定しなければなりません。この変数には TRAMP
ファイル名にメソッドが
指定されなかった時に使用されるデフォルトのメソッドを設定します。 例えば:

     (setq tramp-default-method "scp")

   変数 `tramp-default-method-alist' を使って特定のユーザ/ホストの
組み合わせに対して異なったメソッドを指定することができます。例えば
次の2行は、ユーザ名が `john' にマッチする場合には `ssh'
メソッドを用い、ホスト名が `lily' にマッチする場合には `rsync'
メソッドを用います。3行目はマシン `localhost' 上のユーザ`root' に対して
`su' メソッドを使うように指定します。

     (add-to-list 'tramp-default-method-alist '("" "john" "ssh"))
     (add-to-list 'tramp-default-method-alist '("lily" "" "rsync"))
     (add-to-list 'tramp-default-method-alist
                  '("\\`localhost\\'" "\\`root\\'" "su"))

さらなる詳細については変数 `tramp-default-method-alist' のドキュメント
を見て下さい。

一般的には、インライン転送メソッドよりは外部転送メソッドを選ぶべきです。
外部転送メソッドはインラインより高性能です。しかし、外部転送メソッドは、
パスワード入力なしでログインできないリモートマシンがたくさんある場合は
役に立ちません。

   *Note Inline methods::.  *Note External transfer methods::.  *Note
Multi-hop Methods::.

   転送メソッドの選択をする時に他に考慮すべき事は、それらを使う環境と、
特にインターネット上で使う場合あなたの選択したメソッドのセキュリティ
との関係です。

   `rsh' と `telnet' メソッドは、リモートマシンにログイン
する時に、パスワードをプレインテキストで送信します。ファイル転送も同じ
方法でおこなうので、他もマシンからファイルの内容を簡単に読むことができます。

インターネットからアクセス可能なリモートシステムに接続する必要がある場合、
接続に `ssh' ベースのメソッドを使用することを真剣に考えるべきです。
このメソッドは、高いレベルのセキュリティを提供し、誰かがパスワードを入手
したり、編集しているファイルの内容を読んだりすることを困難にします。

私はどのメソッドを使うべきか?
-----------------------------

ここまでの説明で、これは全くすばらしくて良いものだが、しかしながらメソッド
を選ぶ方法については何の助言もされてないよ!
と思うことと思います。確かに。
開発者としては、ユーザを牛耳ろうとは思ってなくて、代わりに最大限の自由度を
与えようと考えています。しかしながら実際にはユーザの中には手引きを求める
人も居るでしょう。そこでここではあなたを支配することなく手引きを与えること
を試みます。これがうまく行ったか教えて下さいね ...

私の提案は、インラインメソッドを使うことです。大きなファイルに対しては
out-of-band メソッドの方が有効かもしれませんが、ほとんどの人は小さな
ファイルを編集したいと思うと推測します。

   今日では、ほとんどの人がリモートマシンに `ssh' を使ってアクセス
できると推測します。したがって `ssh' メソッドを使うことを提案します。
つまり、他のホストの `/etc/motd' ファイルを編集するためには `C-x C-f
/ssh:root@otherhost:/etc/motd <RET>' と入力すればよい です。

   もし、`ssh' を使ってリモートホストにログインできないなら、動作する
プログラムを使うメソッドを選択します。例えば Windows ユーザは `ssh' の
PuTTY 実装を使う `plink' メソッドを好むかもしれません。また、 Kerberos
を使っているなら `krlogin' を好むでしょう。

特別な場合としてローカルホストのファイルを別のユーザとして編集したい場合
には `su' メソッドもしくは `sudo' メソッドを参照して下さい。

   大きなファイルを編集する人は `ssh' の代わりに `scp' 、もしくは
`plink' の代わりに `pscp' の利用を考えるかもしれません。 これらの
out-of-band メソッドは大きなファイルに対してはインラインメソッド
よりも高速です。しかし、out-of-band メソッドたちはいくつかの制限
を受けるかもしれないことに注意して下さい。最初に本当に顕著な速度的な
優位を out-of-band
メソッドで得られるか試して下さい!おそらく大きなファイル
に対してもインラインメソッドたちは十分高速だと思います。

   私がインラインメソッドの利用を提案する理由は、それらはリモート側が
パスワードを聞いてきたとしても動作するからです。out-of-band メソッド
はそのような状況では動作しません。また、マルチホップメソッドたちは
本質的にインラインです。


File: tramp_ja.info,  Node: Customizing Methods,  Next: Customizing Completion,  Prev: Default Method,  Up: Configuration

非標準のメソッドを使う
======================

事前に定義されたメソッドだけでは不十分な場合に、それを変更するための
`tramp-methods' という変数があります。

   変更が必要になった時のために、この変数の Lisp
ドキュメントについて述べて おきます。ドキュメントは `C-h v
tramp-methods <RET>' で参照する ことができます。


File: tramp_ja.info,  Node: Customizing Completion,  Next: Remote Programs,  Prev: Customizing Methods,  Up: Configuration

ユーザ/ホスト名補完のための設定ファイルの選択
=============================================

変数 `tramp-completion-function-alist' は、ユーザ名とホスト名の 補完
(*note Filename completion::) の際にどのファイルたちを考慮に入れ
るかをカスタマイズするためにあります。この変数は各々のメソッドに対して、
設定ファイルの集合とそのファイルをパースできる Lisp 関数との組を保持し
ます。`tramp-completion-function-alist' のエントリは (METHOD PAIR1
PAIR2 ...) の形式をとります。

   それぞれの PAIR は (FUNCTION FILE) から成ります。 FUNCTION
は補完の際に FILE からユーザ名とホスト名を取り出
すのに使われます。この変数にアクセスする二つの関数があります:

 - Function: tramp-get-completion-function method
     この関数は METHOD に対する補完関数のリストを返します。

     Example:
          (tramp-get-completion-function "rsh")
          
               => ((tramp-parse-rhosts "/etc/hosts.equiv")
                   (tramp-parse-rhosts "~/.rhosts"))

 - Function: tramp-set-completion-function method function-list
     この関数は METHOD に対する補完関数のリストを FUNCTION-LIST
     に設定します。

     Example:
          (tramp-set-completion-function "ssh"
           '((tramp-parse-sconfig "/etc/ssh_config")
             (tramp-parse-sconfig "~/.ssh/config")))
          
               => ((tramp-parse-sconfig "/etc/ssh_config")
                   (tramp-parse-sconfig "~/.ssh/config"))

   設定ファイルをパースするための以下の関数があらかじめ定義されています:

`tramp-parse-rhosts'
     この関数は構文的に `~/.rhosts' と等価なファイルをパースします。もし
     書かれていればホスト名とユーザ名の両方を返します。

`tramp-parse-shosts'
     この関数は構文的に `~/.ssh/known_hosts'
     と等価なファイルをパースします。
     そのファイルにはユーザ名は書かれていないのでホスト名のみを返します。

`tramp-parse-sconfig'
     この関数は `~/.ssh/config' 形式のファイルの `Host' エントリで
     定義されたホストのあだなを返します。

`tramp-parse-hosts'
     `/etc/hosts'
     形式のファイルのための関数です。ホスト名のみを返します。

`tramp-parse-passwd'
     `/etc/passwd'
     のようなファイルをパースする関数です。当然ながらユーザ
     名のみを返します。

`tramp-parse-netrc'
     最後に、これは `~/.netrc' のようなファイルをパースする関数です。

もし独自のデータを独自の構造でファイルに保持したいなら、このような関数
を提供すればよいです。この関数は以下の慣習に合致する必要があります。

 - Function: my-tramp-parse file
     FILE はあなたのホストにあるファイル名もしくは `nil' のいずれか
     です。この関数は (USER HOST) のリストを返さねばなりません。
     それらはユーザ/ホスト名補完の候補として使われます。

     Example:
          (my-tramp-parse "~/.my-tramp-hosts")
          
               => ((nil "toto") ("daniel" "melancholia"))


File: tramp_ja.info,  Node: Remote Programs,  Next: Remote shell setup,  Prev: Customizing Completion,  Up: Configuration

リモートマシン上で TRAMP がプログラムを発見、使用する方法
=========================================================

TRAMP はリモートホスト上のいくつかのプログラム、`ls'、 `test'、`find'
そして `cat' に依存しています。

これらのツールにくわえ、コネクションメソッドのためにいくつかのツールが
必要です。詳細は *Note Inline methods:: と *Note External transfer
methods:: を参照してください。

   いくつかの他のツール、`perl' (あるいは `perl5') と `grep'
が存在すればそれらも使用されます。これは、性能と
リモートファイルアクセスの正確さの向上のためです。

   TRAMP
はリモートマシンに接続した時に、使用可能プログラムを検索します。 変数
TRAMP-REMOTE-PATH は、リモートマシン上で検索されるディレクトリ
を制御します。

   デフォルトで多くのマシンにとって適切なパスが設定されています。しかし
ながら、ローカル(あるいはリモート)システムの管理者が、必要なツールを
へんぴなディレクトリにインストールしているかもしれません。

   このような場合でも TRAMP を使う事ができます。単に、必要なディレクトリ
をリモートパスに追加するコードを `.emacs' に書くだけです。これで
接続時に TRAMP により、追加したディレクトリが検索されプログラムが
発見されます。

   リモートサーチパスにディレクトリを追加するためには、以下のような
コードを使ってください:

     ;; 変数を定義するために TRAMP をロードする
     (require 'tramp)
     ;; `perl' が "/usr/local/perl/bin" にある
     (add-to-list 'tramp-remote-path "/usr/local/perl/bin")


File: tramp_ja.info,  Node: Remote shell setup,  Next: Windows setup hints,  Prev: Remote Programs,  Up: Configuration

リモートシェルの設定のヒント
============================

*Note Overview:: の節で説明したように、TRAMP はリモートホストに接続し、
そこにあるシェルと対話します。もちろんログインする際にはシェルはその
初期化ファイルを実行します。例えばあなたの初期化ファイルがあなたのお母
さんの誕生日を入力させるようになっていたとしましょう; 当然 TRAMP
はそのことを知らないので、そのホストへのログインに失敗します。

   この問題を追求するために、いくつかの戦略が考えられます。一つは、TRAMP
がすべての可能な状況に対応できるようにすることです。これは消耗戦です。
何故なら _全ての_ 状況を扱うことは不可能だからです。別の手として、
TRAMP の期待通りに振る舞うように、あなたにリモートホストの設定をして
いただくということも出来ます。しかしこれは不便かもしれません。何故なら
TRAMP を使い始めるより先に、シェルの設定に多くの労力を割く必要がある
のですから。

   そのことから、このパッケージではそれらを組み合わせた方法をとります。
いくつかのありふれた設定については理解しようとしてくれて、あなたには
本当に特異な設定だけを避けるように求めます。例えば、リモートホスト上で
あるプログラムを見つけるためには、ディレクトリの一覧を調べます。
そしてまた、ファイルが存在するかをどうか調べる方法というのも明らかでは
ないので、いくつかの異なる可能性を試してくれます。
(あるホストとシェルにおいては、`test -e' コマンドがその役目を果たす。
別のホスト、シェルに対してはシェルの組み込みコマンドは働かないが、
`/usr/bin/test -e' や `/bin/test -e' ならうまく働く。
そしてさらに別のホストでは `ls -d' がその方法として働く。)

   以下では、TRAMP
が取り扱ってくれない、つまりあなたが正しく設定する必要
のあるいくつかの事柄について述べます。

SHELL-PROMPT-PATTERN
     リモートホストにログインした後、TRAMP
     がリモートシェルに命令を送れる
     ようになる前に、リモートシェルのセットアップが終了するのを待つ必要があり
     ます。シェルプロンプトを認識する為に、変数 `shell-prompt-pattern'
     をリモートホストのシェルプロンプトを認識出来るように設定しておく必要が
     あります。

     TRAMP は `shell-prompt-pattern' に対してバッファ末尾でマッチす
     ることを要求することに注意して下さい。多くの人はこの変数の値として次の
     ようなものを指定しています: `"^[^>$][>$] *"'。ここであなたのシェル
     プロンプトが `a <b> c $ '
     のようなものだったとしましょう。この場合、 TRAMP は文字`>'
     をプロンプトの終端と認識しますが、それはバッファ
     の終端にはありません。

TRAMP-SHELL-PROMPT-PATTERN
     この正規表現は `shell-prompt-pattern' と同様にリモートシェルの
     プロンプトにマッチするものとして使われます。この二つ目の変数はリモート
     シェルのプロンプトがローカルシェルと異なる可能性があるので存在します。
     とにかく TRAMP の要点はリモートホストに別のユーザとしてログインする
     ことです。`tramp-shell-prompt-pattern' のデフォルトの値は
     `shell-prompt-pattern' のデフォルト値と同一のものですが、多くの状況
     でそれはうまく働くと報告されています。

`tset' とその他の質問
     シェルの起動スクリプトから `tset' プログラムを呼び出し、
     シェルの端末の種類を尋ねるようにしている場合があります。たぶん
     シェルによってはその他の質問を起動時にしてくる場合もあるでしょう。
     TRAMP はこれらの質問に答える方法を知りません。この問題を扱うには
     二つのアプローチがあります。一つのアプローチは、シェルが TRAMP から
     呼び出されたときに何の質問もしないようにしておくことです。そのためには
     環境変数 `TERM' を調べて下さい。それは接続時に `dumb' に設定
     されます。

     変数 `tramp-terminal-type' によりこの値を `dumb' に変更する
     ことができます。

     別のアプローチは TRAMP にこれらの質問を教えておくことです。変数
     `tramp-actions-before-shell' および `tramp-multi-actions'
     (マルチホップ接続の場合) を参照して下さい。

`.profile' 中の環境変数で、ユーザと同じ名前のものたち
     frumple という名前のユーザが居たとして、変数 `FRUMPLE' をシェル環境
     で設定している場合、不具合が起きるかもしれません。 `FRUMPLE_DIR'
     とかそのようなものに改名するのがよいでしょう。

     奇妙な効果が実際に TRAMP ユーザから報告されています!

`.profile' 中の Non-Bourne コマンドたち
     リモートホストにログインした後、TRAMP はコマンド `exec /bin/sh'
     を発行します。 (実際にはコマンドはちょっと異なりますが。)
     `/bin/sh'
     が実行される時に、いくつかの初期化ファイルが読み込まれます。
     例えば `~/.shrc' や `~/.profile' です。

     ここで、ログインシェルが `/bin/sh' ではなく、 bash や ksh といった
     Bourne 的なシェルであった場合、人によっては `~/.shrc' や
     `~/.profile'.
     にシェルの設定を書いているかもしれません。その場合に、Bourne
     でない構成物
     がそれらのファイルに書かれている可能性があります。そうすると、`exec
     /bin/sh' によって Bourne シェルはそれらを戻してしまいます。

     例えば `~/.profile' ファイルに `export FOO=bar' と書いてあった
     とすると、標準的な Bourne
     シェルはこの構文を理解できないので、この行に
     到達するとシンタックスエラーを返します。

     別の例としてはチルダ (`~') 文字があります。例えば `$PATH' に
     `~/bin' を付け加える場合です。 多くの Bourne シェルはこの文字を展開
     せず、普通は名前がチルダ一文字のディレクトリは存在しないのでおかしなこと
     が起こるでしょう。

     これに対して何をすればよいのか?

     一つの方法としては全てのリモートホスト上の `~/.shrc' と
     `~/.profile' の中の全てが Bourne-互換であるようにすることです。
     上の例では、`export FOO=bar' の代わりに `FOO=bar; export FOO'
     と書けばよいでしょう。

     別の方法としては、non-Bourne
     シェルの設定を別のファイルに書くことです。 例えば、bash はファイル
     `~/.bash_profile' があれば `~/.profile'
     の代わりにそれを読み込みます。したがって bash
     ファンは全てのリモートホスト 上の `~/.profile' を
     `~/.bash_profile' に改名しておけば大丈夫です。

     TRAMP
     の開発者はこの問題を回避したいと考えています。したがってこれに
     関するアイデアがあればぜひ教えて下さい。しかしながら、これはそう単純では
     ないと考えています: `exec /bin/sh' と呼ぶ前には、TRAMP はどの
     種類のシェルと対話しているのか知らないのです。それは ksh や bash
     といった Bourne 的なシェルであるかもしれませんし、csh から派生した
     tcsh のような ものかもしれません。もしくは zsh や、はたまた rc
     であるかもしれません。 もしシェルがすでに Bourne
     的なものであるなら `exec /bin/sh' の段階を
     省略するのが懸命かもしれません。しかし、どうやってシェルが Bourne
     的だと 知るのでしょうか?



File: tramp_ja.info,  Node: Auto-save and Backup,  Prev: Windows setup hints,  Up: Configuration

Auto-save とバックアップの設定
==============================

auto-save の説明は未完成です。

   通常 Emacs はオリジナルのファイルと同じディレクトリにバックアップファ
イルを保存しますが、この挙動は変数 `backup-directory-alist' を通
して変更することができます。TRAMP を用いた接続においてこのことは予
期しない副作用をもたらす可能性があります。例えば全てのバックアップがデ
ィレクトリ `~/.emacs.d/backups/' に行くようになっていたとして、フ
ァイル `/su:root@localhost:/etc/secretfile' を編集したとしましょ
う。その結果は、バックアップファイルは root ではなくあなたの所有となり、
したがってたとえそのつもりがなかったとしてもそれが他者から見てしまう可
能性があります。

   `backup-directory-alist' が nil (デフォルト) であればそのような問
題はおこりません。

   もしあなたがその変数をカスタマイズしたいなら、TRAMP のファイルに対
して特別な設定を行なうという回避法があります。例えば以下の記述により、
TRAMP のファイルに対して効果的に `backup-directory-alist' の効
果を消します:

     (require 'tramp)
     (add-to-list 'backup-directory-alist
                  (cons tramp-file-name-regexp nil))


File: tramp_ja.info,  Node: Windows setup hints,  Next: Auto-save and Backup,  Prev: Remote shell setup,  Up: Configuration

Cygwin ssh にまつわる事柄
=========================

この節はたくさんの仕事が必要です! どうか手伝って下さい。

   もしあなたが Cygwin でインストールした ssh
(インストーラで明示的に選択 する必要があります)
を使っているなら、接続メソッドとして `sshx' を
選択するだけでマシンの外に出られるはずです。Cygwin のセットアップに
ついての情報は `http://cygwin.com/faq/' にある彼らの FAQ で得る
ことができます。

   もし `scpx' 接続メソッドを使いたいと思ったなら、Emacs が `c:/foo'
のような Windows ファイル名を伴なって `scp' を呼ぶ時に問題が起きる
かもしれません。Cygwin 版の `scp' は Windows ファイル名について知ら
ないので、それをホスト `c' 上のリモートファイル名と解釈してしまいます。

   一つの可能な回避法としては、Windows ファイル名を Cygwin
のファイル名に 変換するラッパースクリプトを書くことです。

   別の回避法としては Emacs を Cygwin 上で動かすか、もしくは Cygwin 版の
Emacs を使うことがあると思います。

   何らかの `ssh' に基づくメソッドを Windows 上で使いたい場合、
`ssh-agent' に関する問題に遭遇するかもしれません。このプログラム
を使うと、ログインの際に毎回パスフレーズを入力することを避けることが
できます (また、`scpx' メソッドは `ssh-agent' を使うことを
要求します。なぜならそれはパスワードやパスフレーズを入力させてくれない
からです)。しかしながら、Emacs をデスクトップショートカットから起動した
なら、環境変数 `SSH_AUTH_SOCK' は設定されないので、 Emacs そして
TRAMP、 そして TRAMP から起動される `ssh' および `scp' は `ssh-agent'
と通信することができません。Emacs をシェルから起動
すればうまく動きます。

   もし誰か Windows
上でデスクトップショートカットが恩恵を受けられるような、 `ssh-agent'
の起動方法を知っていたら叫んで下さい。私は本当に Windows
については何も知らないのです...


File: tramp_ja.info,  Node: Usage,  Next: Bug Reports,  Prev: Configuration,  Up: Top

TRAMP の使い方
**************

TRAMP をインストールすると、TRAMP は完全に透過的に動作します。
ログイン可能なリモートマシン上のファイルに、あたかもローカルファイル
のようにアクセスすることができます。

   TRAMP では、formalized
シンタックスを使いファイルを指定します。これは、 EFS
パッケージのシンタックスに似ています。

   あなたを驚かせることが起こり得ます。 Emacs
は全てのキー入力を憶えています。 したがって Emacs
からのパスワードプロンプトを目にして `<RET>'
を一回でなく二回叩いた場合、二回目のキー入力は TRAMP が動作した後で
Emacs で処理されます。何故この先行入力が通常の挙動かと思うでしょう。
あなたは正しい、しかしリモートファイルを開くにはしばらくの時間がかかり、
接続が開かれるまでに30秒かかるかもしれないということに気付いて下さい。
おそらく30秒後にはそのキーを叩いたことをすでに忘れているでしょう!

* Menu:

* Filename Syntax::             TRAMP ファイル名のきまり
* Multi-hop filename syntax::   マルチホップファイル名のきまり
* Filename completion::         ファイル名補完
* Dired::                       Dired


File: tramp_ja.info,  Node: Filename Syntax,  Next: Multi-hop filename syntax,  Up: Usage

TRAMP ファイル名のきまり
========================

リモートマシン MACHINE 上のファイル LOCALNAME にアクセスす
るためには、ファイル名 `/[MACHINE]LOCALNAME'.
を指定してください。これで、 MACHINE に接続し、デフォルトメソッド
を使用してファイルが転送されます。*Note Default Method::.

   TRAMP のファイル名の例を以下に挙げます。

`/[melancholia].emacs'
     マシン `melancholia' 上のホームディレクトリにある `.emacs'を
     編集します。

`/[melancholia.danann.net].emacs'
     完全なホスト名(FQDN)を使い、上と同じファイルを編集します。

`/[melancholia]~/.emacs'
     これもまた同じファイルを編集します。`~' は、ローカルの場合と
     同様に、リモートマシン上のホームディレクトリに展開されます。

`/[melancholia]~daniel/.emacs'
     マシン `melancholia' 上のユーザー `daniel' のホームディレクトリ
     にあるファイル `.emacs' を編集します。`~<ユーザー>' 構文は
     リモートマシン上のユーザーのホームディレクトリに展開されます。

`/[melancholia]/etc/squid.conf'
     マシン `melancholia' 上のファイル `/etc/squid.conf' を編集 します。


   違う名前を使うように指定しない限り、TRAMP は現在のローカルなユーザ名
をログインのためのリモートユーザー名として使います。もし、違うユーザーで
ログインする必要がある場合は、ファイル名の一部としてユーザー名を指定する
ことができます。

   指定したユーザーでリモートマシンにログインする必要がある場合、
`/[USER@MACHINE]/PATH/TO.FILE'
というシンタックスを使用してください。つまり、 `melancholia' にユーザー
`daniel' として接続してホームディレクトリの `.emacs' を編集
する場合、`/[daniel@melancholia].emacs' を指定すればよいのです。

   ファイル名の一部として、他のファイル転送メソッド(*note Default
Method::) を指定することもできます。 そうするには最初の `/[' を
`/[<method>/' で置き換えます。(末尾のスラッシュに注意!)
ユーザー、マシン、ファイルの指定は今までと同じです。

   マシン `melancholia' に `daniel' として接続し、ファイル転送に `ssh'
メソッドを使い、ホームディレクトリの `.emacs' を編集する
ためには、ファイル名 `/[ssh/daniel@melancholia].emacs' を指定します。


File: tramp_ja.info,  Node: Multi-hop filename syntax,  Next: Filename completion,  Prev: Filename Syntax,  Up: Usage

マルチホップファイル名のきまり
==============================

マルチホップファイル名のシンタックスは、当然のことながら、他の TRAMP
のファイル名と若干異なります。以下に、マルチホップファイル名の例を
あげます。最初が Emacs のシンタックスで次が XEmacs のシンタックスによ
るものです:

     /[multi/rsh:out@gate/telnet:kai@real.host]/path/to.file

   これは非常に重要なので、ひとつひとつ説明しましょう。ファイル名は
3つの部分から成り、 各部はスラッシュと角括弧で区切られます。
最初のパート `/[multi' はメソッドの指定です。 二番目のパートは
`rsh:out@gate/telnet:kai@real.host'
でホップを指定します。最後のパートは `/path/to.file' で、リモート
ホスト上のファイル名を指定します。

   最初と最後のパートは明白でしょう。*Note Multi-hop Methods::に指定可能
なメソッドの一覧があります。

   二番目のパートは、再びコンポーネントに、つまりホップたち(hops) に分割
されることがあります。上記のファイル名には、二つのホップたち、
`rsh:out@gate' および `telnet:kai@real.host' が含まれています。

   それぞれのホップは、_再び_(3つの)コンポーネント、
"ホップメソッド"、"ユーザー名"、"ホスト名"に分割されることが
ありまます。二番目、三番目のコンポーネントの意味は明白です。ホップメソッドは、
このホップでどのようなプログラムを使うかを意味しています。

   最初のホップ `rsh:out@gate' は、 ホスト `gate' にユーザー `out'
としてログインするために `rsh' を使うという意味です。二番目のホップ
`telnet:kai@real.host'`telnet:kai@real.host' は、このホストからホスト
`real.host' にユーザー `kai'でログ インするために `telnet'
を使うという意味です。

   *Note Multi-hop Methods::. ここにホップメソッドの一覧があります。
変数 `tramp-multi-connection-function-alist' には、選択可能なホップ
メソッドのリストとそれらをどのように実行するかという情報が含まれています。
あなたが作ったメソッドをこの変数に追加してください。


File: tramp_ja.info,  Node: Filename completion,  Next: Dired,  Prev: Multi-hop filename syntax,  Up: Usage

ファイル名補完
==============

TRAMP のファイル名補完はリモートマシンのファイル名の補完に加えて
メソッド、ユーザ名およびマシン名(マルチホップメソッドたちは除く)に
対して働きます。

   例えば `C-x C-f /[t<TAB>' と入力すると TRAMP
は以下の選択肢を返します。

     [telnet/				   [toto]

   `[telnet/' はメソッドの補完であり、 `[toto]' は TRAMP がファイル
`~/.ssh/known_hosts' から検出したホスト名 です(デフォルトメソッド `ssh'
を使っている場合)。

   続けて `e <TAB>' とすれば、ミニバッファは `/[telnet/'
と補完されます。次の `<TAB>' では TRAMP がファイル `/etc/hosts'
から検出した全てのマシン名を挙げます。例えば、

     [telnet/127.0.0.1]		   [telnet/192.168.0.1]
     [telnet/localhost]		   [telnet/melancholia.danann.net]
     [telnet/melancholia]

ここで希望のマシンを選択することができ、続けてそのマシン上のファイル名
を補完することができます。

   ファイル名補完はリモートマシンからファイルリストを取り寄せる必要が
あるために、しばしばとても遅くなります。今の所 TRAMP はディレクトリ
リストをキャッシュしないので二回目のファイル名補完でもパフォーマンス
上の違いは現れません。

   TRAMP が補完の解析に用いる設定ファイル (*note Customizing
Completion::) がユーザ名を提供した場合、それらのユーザ名も考慮されます。


File: tramp_ja.info,  Node: Dired,  Prev: Filename completion,  Up: Usage

Dired
=====

TRAMP は dired 上でも透過的に動作します。この強力なファイル管理
ツールを使い、インターネットを経由しアクセス可能なすべてのマシン上の
ファイルを管理できます。

   ディレクトリツリーをブラウズしたい場合は、今のところファイル名の補完
より dired を使うほうが良いでしょう。dired は自身でキャッシュの仕組み
をもっているので、ファイル一覧を一度しか取得しません。


File: tramp_ja.info,  Node: Bug Reports,  Next: Frequently Asked Questions,  Prev: Usage,  Up: Top

バグや問題の報告
****************

TRAMP のバグや問題は、開発チームによってアクティブに解決されています。
仕様に関するリクエストや提案も歓迎します。

   TRAMP メーリングリストは、TRAMP の情報を入手したり、問題の解決や、
一般的な議論、そしてこのパッケージに関係する話題へのアドバイスに最適
の場所です。

   メーリングリストは <tramp-devel@mail.freesoftware.fsf.org> です。
このアドレスにメッセージをを送るとすべての講読者に届きます。
これは講読のリクエストを送信するためのアドレスでは _ありません_。

   メーリングリストを講読するためのヘルプを入手するには、サブジェクトに
`help' と書いたメールを管理用のアドレス
<tramp-devel-request@mail.freesoftware.fsf.org> に送信してください。

   TRAMP のバグ報告をする場合には、`M-x tramp-bug' を実行してください。
これは、あなたのシステムの詳細や TRAMP のバージョン情報を含むバッファ
を自動的に生成します。

   バグ報告を提出する時には、問題を再現する手順、リモートマシンの設定、
もし存在するのであれば特殊な条件を、しつこいぐらい詳細に記述してく
ださい。もし可能なら、簡単な再現手順も記述してください。

   もし、問題を再現するための簡単なテストケースがわかれば、それをバグ
報告に含めてください。これにより、開発チームがバグを突き止め、修正
するのが容易になります。


File: tramp_ja.info,  Node: Frequently Asked Questions,  Next: Concept Index,  Prev: Bug Reports,  Up: Top

よくある質問とその答
********************

   * 最新の TRAMP はどこから入手できますか?

     TRAMP は以下の URL で入手可能です

     `http://savannah.nongnu.org/download/tramp/'

     また Savannah のプロジェクトページもあります。

     `https://savannah.gnu.org/projects/tramp/'

   * どのようなシステム上で動作しますか?

     このパッケージは、Emacs 20 と Emacs 21 上で動作します。XEmacs 20
     上では 問題があります。`tramp.el'
     のコメントを参照してください。Emacs 19
     で試した人がいるのかどうかは知りません。

     このパッケージは Unix
     上で動作するように設計されています。そしてリモート 側も Unix
     風のシステムであることを期待しています。しかし、NT Emacs 上で
     動作させることに成功した人が何人かいるようです。

     以下の URL には、Tramp を NT で使うための情報があります; Joe Stoy
     には情報の提供に対して深く感謝します:
     `ftp://ftp.comlab.ox.ac.uk/tmp/Joe.Stoy/'

     上記はもっぱら古いバージョンの ssh へのパッチがおいてあります; Tom
     Roche の Web page にも説明があります:
     `http://www4.ncsu.edu/~tlroche/plinkTramp.html'

     ??? XEmacs の情報は正しいのでしょうか?

     ??? 誰か、NT Emacs
     上で動かすための情報を教えてください。たぶん、`ssh'
     関係の問題があるのではないかと思います。

   * XEmacs で EFS が起動されてしまいます

     すべての古いバージョンの TRAMP が XEmacs XEmacs
     を正しくサポートしているわけではありません。まず最初に、最新の
     TRAMP がインストールされているかどうかを確認してください。

     もし最新のバージョンなら、 EFS ハンドラーが実行
     されるための条件を正確に調べてください。もし可能なら、ブレークポイント
     を `efs-ftp-path' に設定して、バグ報告と一緒にスタックトレースを
     送ってください。これらの情報があると、開発者が何が間違っているのかを発
     見することが容易になります。

   * TRAMP を使うとファイル名の補完ができません

     リモートマシンにログインした時に、`ls' の出力が色付きになって
     いませんか? もし、そうなら、それが原因です。

     `ls' は、端末エミュレーターが色を変更するための ANSI
     エスケープシークエンスを出力します。しかしながら、このエスケープ
     シークエンスは TRAMP を混乱させます。

     リモートマシン上の `.bashrc'、`.profile' あるいは同じような
     設定ファイルに、`--color=yes' または `--color=auto'
     が追加された設定の alias があるはずです。

     この alias を削除し、新しくログインした時の `ls' の出力が
     色付きで表示され _ない_ ことを確認してください。もし、これでも
     ファイル名の補完が正常に動作しない場合は、TRAMP 開発者にバグ報告
     をしてください。

   * 巨大なディレクトリの中ではファイル名の補完が動作しません

     TRAMP はいくつかのオペレーションで globbing を使用します。(globbing
     とは、`*.c' のようなワイルドカード展開のためにシェルを使うことです)
     これは、たくさんのファイルが存在するディレクトリでは長いコマンドライン
     を作ります。いくつかのシェルでは長いコマンドラインをけずりとったり、
     あるいは globbing 自身を処理できません。

     リモートホスト側に巨大なディレクトリがある場合は、 `ls -d * ..?* >
     /dev/null' のようなコマンドを実行し、ハングするか
     どうかを確認してください。注意する必要があるのは、最初に正しいシェル、
     `/bin/sh'、`ksh' あるいは `bash'、つまり tilde の
     展開をサポートするシェルから試すべきだという事です。

   * TRAMP はどのような種類のシステムで動作しますか

     TRAMP は、リモートシステムが Unix 風のシステムである事を前提にして
     います。また、ローカルシステムも Unix
     風のシステムのほうが望ましいで
     しょう。しかし、すこし修正すれば、TRAMP は NT
     上でも動作するはずです。

   * TRAMP
     のファイル転送が完了した時に通知させるにはどうすればいいでしょうか?

     以下のコードを、`~/.emacs' に追加してください。これで、リモート
     ホストに対する読み書きの後に、Emacs が beep 音をならしてくれます。

          (defadvice tramp-handle-write-region
            (after tramp-write-beep-advice activate)
           " make tramp beep after writing a file."
           (interactive)
           (beep))
          (defadvice tramp-handle-do-copy-or-rename-file
            (after tramp-copy-beep-advice activate)
           " make tramp beep after copying a file."
           (interactive)
           (beep))
          (defadvice tramp-handle-insert-file-contents
            (after tramp-copy-beep-advice activate)
           " make tramp beep after copying a file."
           " make tramp beep after copying a file."
           (interactive)
           (beep))

   * リモートホストの `~/.sh_history' というファイルが肥大し続けていま
     す。これは何ですか?

     TRAMP はティルダ展開の為に、しばしばリモートホストで `ksh' を
     起動します。たぶん `ksh' はデフォルトで履歴を保存します。TRAMP
     は履歴の保存を停止しようと試みますが、あなたが手助けをする必要がある
     かもしれません。例えば、あなたの `.kshrc' にこれを入れてください:

          if [ -f $HOME/.sh_history ] ; then
             /bin/rm $HOME/.sh_history
          fi
          if [ "${HISTFILE-unset}" != "unset" ] ; then
             unset HISTFILE
          fi
          if [ "${HISTSIZE-unset}" != "unset" ] ; then
             unset HISTSIZE
          fi

   * TRAMP が 500 文字を越える文字列を正しく転送しません。

     いくつかの稀なシステムでは、`process-send-string' の実装が
     長い文字列に対して壊れています。この場合、変数 `tramp-chunksize'
     を 500 にカスタマイズします。これが必要かどうかをどうやって知るかは
     `tramp-chunksize' の説明を見て下さい。



File: tramp_ja.info,  Node: Version Control,  Next: Files directories and localnames,  Prev: Concept Index,  Up: Top

リモートバージョンコントロールの内部動作
****************************************

EFS と異なり、TRAMP は、リモートマシン上のシェルを実行
します。したがって、TRAMP を使いアクセスしたファイルのバージョン
管理をおこなう事ができます。

バージョン管理をおこなうバイナリが、リモートマシンにインストールされて
いなければなりません。そして、TRAMP-REMOTE-PATH で指定された
ディレクトリに置かれて、アクセス可能でなければなりません。

   バージョン管理システムの透過的な統合は、TRAMP のもっとも価値のある
機能のひとつです。しかし、まだ完全にはほど遠い状態です。システムの透過
性を向上させるための作業が続けられています。

* Menu:

* Version Controlled Files::    ファイルがバージョン管理されているかどうかの判断
* Remote Commands::             リモートマシン上でのバージョン管理コマンドの実行
* Changed workfiles::           作業ファイルの変更の発見
* Checking out files::          作業ファイルのリポジトリからの取得
* Miscellaneous Version Control::  その他バージョン管理システムに関係する事


File: tramp_ja.info,  Node: Version Controlled Files,  Next: Remote Commands,  Up: Version Control

ファイルがバージョン管理されているかどうかの判断
================================================

VC パッケージは、ディスク上のマスターファイルの存在をもとに、指定された
ファイルがバージョン管理システムの管理下にあるかどうかを判断します。
これらのファイルのテストは、標準的な TRAMP の仕組みを使いリモート
マシン上で実行されます。


File: tramp_ja.info,  Node: Remote Commands,  Next: Changed workfiles,  Prev: Version Controlled Files,  Up: Version Control

リモートマシン上のバージョン管理コマンドの実行
==============================================

バージョン管理システムのコマンドの実行を横取りすることのできる VC 用の
hook は存在しません。`call-process' の仕組みを使い、
関数呼び出しが発生します。関数は `shell-command' より、若干
効率的ですが、リモートでコマンドを実行するための hook
は用意されていません。

   とりあえず動作させるために、関数 `vc-do-command' と
`vc-simple-command' に、TRAMP を経由しアクセスされたファイルへの
オペレーションのためのリクエストを横取することが通知されます。

   リモートファイルの場合、ローカルマシンと同じ機能を提供するために、
`shell-command' インターフェースが、いくつかのラッパーコードと
共に使用されます。


File: tramp_ja.info,  Node: Changed workfiles,  Next: Checking out files,  Prev: Remote Commands,  Up: Version Control

作業ファイルの変更の発見
========================

今のところ、リモートマシン上のファイルの mtime を取得する移植性の高い
方法は存在しません。`vc-workfile-unchanged-p' 関数に、リモート
ファイルのために TRAMP の関数の呼び出しが通知されます。

   `tramp-vc-workfile-unchanged-p' 関数は、作業ファイルとバージョン
管理マスタファイルの変更点を調べるために VC の diff 機能を使用します。

   これを実現するためには、リモートでのシェルコマンドが実行可能でなれば
なりません。この処理は、ローカルファイルで使われる mtime の取得より
重い処理です。残念ながら、移植性の高い解決方法が見つかるまでは、リモート
バージョン管理のコストはこのままでしょう。


File: tramp_ja.info,  Node: Checking out files,  Next: Miscellaneous Version Control,  Prev: Changed workfiles,  Up: Version Control

作業ファイルのリポジトリからの取得
==================================

デフォルトでは、VC
はリモートファイルをチェックし、リポジトリからチェック
アウトされたファイルがある場合は、チェックアウトをおこないません。この問題
を解決するために、関数 `vc-checkout' は TRAMP ファイルを区別し、
バージョン管理をおこなうことを可能にします。


File: tramp_ja.info,  Node: Miscellaneous Version Control,  Prev: Checking out files,  Up: Version Control

その他バージョン管理システムに関係する事
========================================

こまかな実装の詳細、その他。

* Menu:

* Remote File Ownership::       VC がワークファイルのオーナーを調べる方法
* Back-end Versions::           VC が RCS のバージョンを調べる方法


File: tramp_ja.info,  Node: Remote File Ownership,  Next: Back-end Versions,  Up: Miscellaneous Version Control

VC がワークファイルのオーナーを調べる方法
-----------------------------------------

Emacs は、任意のユーザー ID の値とログイン名をマッピングするのと同様に、
現在のユーザーのログイン名をかえす関数 `user-full-name' を用意して
います。VC は、いくつかの状況で、ワークファイルのオーナーの uid からログ
イン名へのマップ機能を使用します。

これは、リモートシステムが異なるログインセットを持つ場合には、あきらか
に正しく動作しません。したがって、uid
に対応するログイン名の決定をリモート
マシンにおこなわせる必要があります。

   残念ながら、`NIS'、`NIS+'そして `NetInfo' のような、
分散管理システム を使う場合、シンプルで、信頼性があり、移植性の高い
マッピングの方法は存在しません。

   ありがたい事に、uid からログイン名へのマッピングに依存する VC
のコードは、 関数 `vc-file-owner'
ひとつだけです。この関数は、ファイルのオーナー
のログイン名を文字列として返します。

   ログイン名を決定するために、この関数に、リモートマシン上の `ls'
の出力を使用することが通知されます。uid からログイン名のマッピングを、
私よりそれらについて良く知っているはずのリモートシステムに委譲します。


File: tramp_ja.info,  Node: Back-end Versions,  Prev: Remote File Ownership,  Up: Miscellaneous Version Control

VC が RCS のバージョンを調べる方法
----------------------------------

VC は、どのリリースのバージョン管理システムのバイナリを使っているかを
知る必要があります。これは、VC がサポートしているすべての機能を、古い
バージョンの`rcs(1)'、`cvs(1)'、`sccs(1)'が提供
しているわけでは無いからです。

   VC
のデフォルトの実装では、最初に必要になった時に、この値を決定します。
これは、必要になった時に毎回プロセスを実行し、その出力をパースすることの
オーバーヘッドをさけるためです。

   いかし、リモートのバージョン管理システムの事が関係してくると、人生は
それほど簡単ではありません。リモートマシンはそれぞれ、異なるバージョン
のバージョン管理ツールをもっています。これが困難な間は、存在しない機能
が、リモートで使用されないことを保証する必要があります。

   この問題を解決するために、現在の TRAMP は、バージョン管理ツールの
バージョン番号を TRAMP バッファ毎にローカルな変数にし、新しい
ファイルを開くたびにVC にこの値を決定させるという力ずくのアプローチ
を採用しています。

   これはあきらかに性能に影響します。ありがたいことに、VC
によっておこなわれる
ほとんどの処理は、実際にはリモートのバージョンを知ることを必要としません。
したがって、それほど問題になりません。

   最終的には、これらの変数は TRAMP によってシステム毎に調べられ、
その結果は性能を改善するためにキャッシュされるようになるでしょう。


File: tramp_ja.info,  Node: Files directories and localnames,  Next: Issues,  Prev: Version Control,  Up: Top

ファイル名、ディレクトリ、ローカル名がどのように変換され(mangled)、管理されるか
*******************************************************************************

* Menu:

* Localname deconstruction::         ローカル名の分解


File: tramp_ja.info,  Node: Localname deconstruction,  Up: Files directories and localnames

ローカル名の分解
================

TRAMP のファイル名は普通のファイル名とは明らかに異なっています。
したがって、lisp の関数 `file-name-directory' と
`file-name-nondirectory' は、TRAMP パッケージ内で上書きされて います。

   関数の置き換えはシンプルかつ適切な方法です。ファイル名を分解し、
ローカル名に対してオリジナルのハンドラーがよばれます。そして、
その結果をもとに TRAMP ファイル名が再構成されます。

   これにより、TRAMP ファイル名の情報を扱う場合も、プラットホーム固有の
オリジナルハンドラーのハックは有効です。


File: tramp_ja.info,  Node: Issues,  Prev: Files directories and localnames,  Up: Top

検討課題と決定事項
******************

   * uuencode メソッドがいつも動作するわけではありません

     TRAMP の設計上の理由で、符号化と復号化をおこなうプログラムは標準
     入力から読み込み、標準出力に書き込む必要があります。いくつかのシステム
     では、`uudecode -o -' で標準入力から読み込み、復号化されたファイル
     を標準出力に書き込みます。他のシステムでは、`uudecode -p' が同じ
     動作をします。しかし、いくつかのシステムの uudecode
     の実装では、これら のことが全くできません。これらの uudecode
     の実装に、標準出力に書き込む
     ために適切なパラメータを渡して呼ぶことは不可能です。

     もちろん、これを回避する事は可能です。テンポラリファイル名を追加する
     ために `begin foo 644' 行を書きかえれば、`uudecode' を呼ぶこと
     ができます。そしてテンポラリファイルを表示し削除します。

     しかし、この方法はあまりにも信頼性が低いため、いくつかのシステムでは
     uuencode メソッドを使用できないままにしておく事にしました。

   * TRAMP は XEmacs 20 上で動きません

     これは、XEmacs 20 に存在しないマクロ `with-timeout' を使っている
     からです。私は、エミュレーションのためのマクロを TRAMP に追加する
     ことに、あまり乗り気ではありません。しかし、XEmacs 20
     ユーザーの誰かが
     積極的に実装とテストをしたいと考えているのであれば、私かメーリングリスト
     に連絡してください。

   * TRAMP ファイル名のシンタックスが Emacs と XEmacs で違います。

     Emacs
     のメンテナ達は、ユーザが新しいシンタックスを勉強する必要がないよ
     うに Ange-FTP と TRAMP で統一されたファイル名シンタックスを使いたい
     と望んでいます。

     XEmacs
     のメンテナにとっては、統一されたファイル名シンタックスを用いる
     ことによる利益よりもそのことによる問題の方が大きいです。 XEmacs
     のパッケージシステムはパッケージをダウンロードするのに EFS を
     使います。したがって明らかに EFS
     は最初からインストールされているはず
     です。もしファイル名が統一されていたとすると、TRAMP もまた最初から
     インストールされている必要があります。



File: tramp_ja.info,  Node: Concept Index,  Next: Version Control,  Prev: Frequently Asked Questions,  Up: Top

Concept Index
*************

* Menu:

* .login file:                           Remote shell setup.
* .profile file:                         Remote shell setup.
* auto-save:                             Auto-save and Backup.
* backup:                                Auto-save and Backup.
* base-64 encoding:                      Inline methods.
* behind the scenes:                     Overview.
* bug reports:                           Bug Reports.
* choosing the right method:             Default Method.
* configuration:                         Configuration.
* connection types, overview:            Connection types.
* create your own methods:               Customizing Methods.
* customizing completion:                Customizing Completion.
* customizing methods:                   Customizing Methods.
* Cygwin (with scpx method):             External transfer methods.
* Cygwin (with sshx method):             Inline methods.
* Cygwin and ssh-agent:                  Windows setup hints.
* Cygwin, issues:                        Windows setup hints.
* default configuration:                 Configuration.
* default method:                        Default Method.
* details of operation:                  Overview.
* development history:                   History.
* dired:                                 Dired.
* external methods:                      Connection types.
* external transfer methods <1>:         External transfer methods.
* external transfer methods:             Connection types.
* FAQ:                                   Frequently Asked Questions.
* fcp (with fcp method):                 External transfer methods.
* fcp method:                            External transfer methods.
* filename completion:                   Filename completion.
* filename examples:                     Filename Syntax.
* filename syntax:                       Filename Syntax.
* filename syntax for multi-hop files:   Multi-hop filename syntax.
* frequently asked questions:            Frequently Asked Questions.
* fsh (with fcp method):                 External transfer methods.
* fsh method:                            External transfer methods.
* history:                               History.
* hop method rsh:                        Multi-hop Methods.
* hop method ssh:                        Multi-hop Methods.
* hop method su:                         Multi-hop Methods.
* hop method sudo:                       Multi-hop Methods.
* hop method telnet:                     Multi-hop Methods.
* how it works:                          Overview.
* inline methods <1>:                    Connection types.
* inline methods:                        Inline methods.
* Kerberos (with krlogin method):        Inline methods.
* km krlogin:                            Inline methods.
* method fcp:                            External transfer methods.
* method fsh:                            External transfer methods.
* method krlogin:                        Inline methods.
* method multi:                          Multi-hop Methods.
* method plink:                          Inline methods.
* method pscp:                           External transfer methods.
* method rcp:                            External transfer methods.
* method rsh:                            Inline methods.
* method rsync:                          External transfer methods.
* method scp:                            External transfer methods.
* method scpx:                           External transfer methods.
* method scpx with Cygwin:               Windows setup hints.
* method smb:                            External transfer methods.
* method ssh:                            Inline methods.
* method sshx:                           Inline methods.
* method sshx with Cygwin:               Windows setup hints.
* method su:                             Inline methods.
* method sudo:                           Inline methods.
* method telnet:                         Inline methods.
* methods, external transfer <1>:        Connection types.
* methods, external transfer:            External transfer methods.
* methods, inline <1>:                   Connection types.
* methods, inline:                       Inline methods.
* methods, multi-hop <1>:                Connection types.
* methods, multi-hop:                    Multi-hop Methods.
* methods, out-of-band <1>:              Connection types.
* methods, out-of-band:                  External transfer methods.
* mimencode:                             Inline methods.
* multi method:                          Multi-hop Methods.
* multi-hop filename syntax:             Multi-hop filename syntax.
* multi-hop methods <1>:                 Multi-hop Methods.
* multi-hop methods:                     Connection types.
* obtaining Tramp:                       Obtaining Tramp.
* out-of-band methods <1>:               Connection types.
* out-of-band methods:                   External transfer methods.
* overview:                              Overview.
* plink (with pscp method):              External transfer methods.
* plink method:                          Inline methods.
* pscp (with pscp method):               External transfer methods.
* pscp method:                           External transfer methods.
* PuTTY (with pscp method):              External transfer methods.
* rcp (with rcp method):                 External transfer methods.
* rcp method:                            External transfer methods.
* remote shell setup:                    Remote shell setup.
* rsh (with rcp method):                 External transfer methods.
* rsh hop method:                        Multi-hop Methods.
* rsh method:                            Inline methods.
* rsync (with rsync method):             External transfer methods.
* rsync method:                          External transfer methods.
* scp (with scp method):                 External transfer methods.
* scp (with scpx method):                External transfer methods.
* scp method:                            External transfer methods.
* scpx method:                           External transfer methods.
* scpx method with Cygwin:               Windows setup hints.
* selecting config files:                Customizing Completion.
* shell init files:                      Remote shell setup.
* smb method:                            External transfer methods.
* ssh (with rsync method):               External transfer methods.
* ssh (with scp method):                 External transfer methods.
* ssh (with scpx method):                External transfer methods.
* ssh hop method:                        Multi-hop Methods.
* ssh method:                            Inline methods.
* ssh-agent:                             External transfer methods.
* SSH_AUTH_SOCK and Emacs on Windows:    Windows setup hints.
* sshx method:                           Inline methods.
* sshx method with Cygwin:               Windows setup hints.
* su hop method:                         Multi-hop Methods.
* su method:                             Inline methods.
* sudo hop method:                       Multi-hop Methods.
* sudo method:                           Inline methods.
* telnet hop method:                     Multi-hop Methods.
* telnet method:                         Inline methods.
* tset Unix command:                     Remote shell setup.
* type-ahead:                            Usage.
* Unix command tset:                     Remote shell setup.
* using non-standard methods:            Customizing Methods.
* using TRAMP:                           Usage.
* uuencode:                              Inline methods.
* Version Control:                       Version Control.



Tag Table:
Node: Top1393
Node: Overview5861
Ref: Overview-Footnote-112228
Node: Obtaining Tramp12417
Node: History14134
Node: Configuration14869
Node: Connection types16664
Node: Inline methods18537
Node: External transfer methods23601
Ref: External transfer methods-Footnote-130959
Node: Multi-hop Methods31030
Node: Default Method33894
Node: Customizing Methods38018
Node: Customizing Completion38457
Node: Remote Programs41317
Node: Remote shell setup42844
Node: Auto-save and Backup49232
Node: Windows setup hints50422
Node: Usage52244
Node: Filename Syntax53357
Node: Multi-hop filename syntax55451
Node: Filename completion57357
Node: Dired58684
Node: Bug Reports59131
Node: Frequently Asked Questions60441
Node: Version Control65939
Node: Version Controlled Files67043
Node: Remote Commands67477
Node: Changed workfiles68299
Node: Checking out files69059
Node: Miscellaneous Version Control69526
Node: Remote File Ownership69900
Node: Back-end Versions71085
Node: Files directories and localnames72493
Node: Localname deconstruction72831
Node: Issues73445
Node: Concept Index75506

End Tag Table
