Multihop tramp qo'shimchasiga qo'shimcha vagonni qaytaradi va chiqish orqali aralashtiriladi

Trampni VMda ishlaydigan Docker konteyneriga kirish uchun ishlatmoqchiman.

My Docker bilan bog'liq o'rnatish quyidagi o'xshaydi:

(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"))))

Men buni idish ichida kataloglarga kirish uchun ishlatishim mumkin, lekin men bunday mashinani "hop" qilishga urinib ko'rganimda: Cx Cf /ssh: root @ vm | docker-exec: ed703f92ae19:/ Tramp birinchi navbatda ls buyrug'i bilan chalkashib ketadi, chunki u chiziq oxirida ^ M belgilarni kiritadi va shunday qilib tramp /usr/bin/ls ^ M kabi bir narsani qaytaradi, bu bekor buyruq yaratadi.

Men buni quyidagicha yengdim:

(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)

Lekin hozir men bu xatoni qabul qilaman:

byte-code: Wrong type argument: number-or-marker-p, //DIRED-OPTIONS//

Va log shunga o'xshash:

//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 bu xatoni olganida nima qilmoqchi ekanini bilmayman, shuning uchun buni tuzatishning yo'lini o'ylay olmayman. Lekin, ehtimol bu ma'lum bir xatomi? Yoki Tramp uchun ^ M s ni qo'shmasligi uchun qo'shimcha sozlamalar kerak bo'lishi mumkinmi? (Ikkala mashina ham Linuxni, ham CentOSni ishlasa-da, ular asl nusxada ekanligiga shubhamiz yo'q.

3
Bu CRni qo'shgan Tramp emas, balki ular Tramp, SSH yoki Docker konfiguratsiyasi orqali qo'shilishi mumkin. Sizning .ssh/config -saytiga kiritilgan variantlaringiz bormi? Xususan, RequestTTY bu holatga olib keladi.
qo'shib qo'ydi muallif CodingWithoutComments, manba
Docker bilan tanish emasman, lekin nima uchun -t parametridan foydalanasiz? Buning uchun Tramp uchun zarur bo'lmasligi kerak bo'lgan terminalni ajratish kerak. Va terminning mavjudligi, CRning mavjud bo'lishiga sabab bo'ladi. Trampda ba'zida CRni bostiruvchi mexanizm mavjudmi, bilmayman, lekin agar u erda birinchi o'rinda bo'lmasa, masala hal bo'ladi.
qo'shib qo'ydi muallif CodingWithoutComments, manba
@Gilles yo'q, hatto .ssh/config faylim yo'q. Docker konfiguratsiyasi yanada umidli bo'lishi mumkin, lekin qaerga qarashimni bilmayman. Bundan tashqari, Tramp shlyapalardan birini alohida-alohida qila oladi, faqat ular muammoga duch kelganda quvvati bor.
qo'shib qo'ydi muallif Yann Trevin, manba
@Gilles agar -t ni olib tashlasam, Tramp bir muddat osadi va keyin bekor qiladi. Shunga qaramasdan, ^ M ni ko'rishim mumkin. exec docker exec -i 74b79b8b67a2/bin/sh ^ M ni bosib chiqargan oxirgi satr (oxirgi o'n qadam) oxirgi qo'ng'irog'i tramp -meya-ochiq-ulanish (["docker-exec" nil "74b79b8b67a2" "/" "ssh: root @ vm |"])
qo'shib qo'ydi muallif Yann Trevin, manba
@MichaelAlbinus Men faqatgina docker-tramp kutubxonasini sinab ko'rdim va aslida men ko'rgan xatolarni ko'raman: number-or-marker-p,//DIRED-OPTIONS//. Bundan tashqari, u docker ishlatish uchun -ti ni ham ishlatadi.
qo'shib qo'ydi muallif Yann Trevin, manba
@MichaelAlbinus Docker allaqachon pishirilgan tasvirlar bilan to'liq ro'yxatga olinadi. Demak, agar docker ubuntu ni ishga tushirsangiz global reyestrga ulanish, yuklab olish va ishga tushirishni boshlaydi (garchi bir necha daqiqa o'tishi bilan tarmoqqa qarab 5 daqiqadan bir soatgacha). Men shu kuni kechqurun hisobot yozaman.
qo'shib qo'ydi muallif Yann Trevin, manba
Men hech qachon o'zimni sinab ko'rmadim, ammo ELPA da docker-tramp to'plami mavjud. Ehtimol, siz uni o'zingiz belgilaydigan o'rniga sinashga harakat qilasizmi? Va agar biror narsa yaxshilash kerak bo'lsa, unda buni qilish yaxshiroq bo'ladi, boshqalar bundan foyda olishadi.
qo'shib qo'ydi muallif celtschk, manba
Xo'sh, men n00b daftarchisiman. Agar kimdir menga kichik docker tasvirini va Emacs/Tramp'da bu xatolarni keltirib chiqarish uchun qanday qilib foydalanishni taklif qilsa, men uni disk raskadrovka qilishga tayyor bo'lardim. Ubuntu 15.10 da ishlayapman. Bu stackexchange uchun mos bo'lmagan xabarni talab qilishi mumkinligi sababli, birinchi qadam Emacs yoki Tramp xato hisobotini topshirish bo'lishi mumkin.
qo'shib qo'ydi muallif celtschk, manba

Javob yo'q

0