私はTrampを使用してVM上で動作するDockerコンテナにログインしようとしています。
My Docker関連の設定は次のようになります。
(add-to-list 'tramp-methods
'("docker-exec"
(tramp-login-program "docker")
(tramp-login-args
(("exec" "-ti") ("%h") ("/bin/sh")))
(tramp-remote-shell "/bin/sh")
(tramp-remote-shell-args ("-i") ("-c"))))
私はマシン上でコンテナ内のディレクトリにアクセスするためにこれを使うことができますが、次のようにリモートマシンに "ホップ"しようとします: Cx Cf /ssh:root @ vm | docker-exec: trampは行末に ^ M
文字を追加するので、最初に ls
コマンドについて混乱します。したがって、 ls
-find-executable
は、無効なコマンドを生成する/usr/bin/ls ^ M
のようなものを返します。
私はこれを克服することができました:
(defun my/tramp-find-executable
(func vec progname dirlist &optional ignore-tilde ignore-path)
(org-trim (funcall func vec progname dirlist ignore-tilde ignore-path)))
(advice-add 'tramp-find-executable
:around 'my/tramp-find-executable)
しかし、今私はこのエラーが表示されます:
byte-code: Wrong type argument: number-or-marker-p, //DIRED-OPTIONS//
ログは次のようになります。
//DIRED-OPTIONS// --quoting-style=literal
///c92423c4fd16f4857a1b9d765f804f3e#$
17:32:16.175776 tramp-get-connection-property (7) # check-remote-echo nil
17:32:16.175817 tramp-get-connection-property (7) # check-remote-echo nil
17:32:16.175869 tramp-wait-for-regexp (6) #
total 292
drwxr-xr-x 18 root root 4096 Feb 24 09:08 .
drwxr-xr-x 18 root root 4096 Feb 24 09:08 ..
-rwxr-xr-x 1 root root 0 Feb 24 09:08 .dockerenv
-rwxr-xr-x 1 root root 0 Feb 24 09:08 .dockerinit
lrwxrwxrwx 1 root root 7 Mar 30 2015 bin -> usr/bin
<<< skipped >>>
drwxrwxrwt 2 root root 4096 Feb 24 15:29 tmp
drwxr-xr-x 13 root root 4096 Mar 30 2015 usr
drwxr-xr-x 18 root root 4096 Mar 30 2015 var
//DIRED// 59 60 108 110 158 168 216 227 275 278 337 340 388 391 439 443 491 494 553 558 619 629 677 682 730 733 781 784 832 836 884 888 936 939 987 991 1051 1058 1106 1109 1157 1160 1208 1217 1265 1268 1316 1319 1367 1370
//DIRED-OPTIONS// --quoting-style=literal
///c92423c4fd16f4857a1b9d765f804f3e#$
私はTrampがこのエラーを受け取ったときに何をしようとしているのか分からないので、修正する方法は考えられません。しかし、これは既知のバグでしょうか?あるいは、 ^ M
を追加しないように、Trampの設定を追加する必要がありますか? (どちらのマシンもLinuxを実行しているので、CentOSの両方で元の出力になっているとは思えません。