From: Jason R. M. <jas...@ma...> - 2001-12-28 06:12:43
|
I've installed the latest tramp-stable on XEmacs 21.4.4 and am trying to use it with Gnus to pull mail from a remote Maildir over ssh like so: (setq mail-sources '((maildir :path "/[ja...@ma...]/usr/home/jason/Maildir/"))) So, in my .emacs: (require 'tramp) (setq tramp-default-method "sm") (setq tramp-sh-program "/usr/local/bin/bash") (setq tramp-remote-sh "/bin/bash") (setq tramp-ls-program "/usr/local/bin/gls") Starting up Gnus, tramp seems to kick in, as I see evidence of an ssh login on the remote server: Dec 28 01:00:42 sclp3 sshd[7795]: Accepted publickey for jason from 128.165.7.22 port 1492 ssh2 However, Gnus hangs showing "Using remote command /bin/ls for getting directory listings." After stopping Gnus with C-g, the tramp buffer shows: sh: syntax error: No child processes Connection to mastaler.com closed. Process *tramp/sm ja...@ma...* exited abnormally with code 2 What is the problem? Also, I did try specifying an alternate ls program and shell as shown above, but these are ignored, and /bin/sh and /bin/ls are still used. |
From: Kai.Grossjohann@CS.Uni-Dortmund.DE (K. ) - 2001-12-28 20:40:25
|
"Jason R. Mastaler" <jas...@ma...> writes: > I've installed the latest tramp-stable on XEmacs 21.4.4 and am trying > to use it with Gnus to pull mail from a remote Maildir over ssh like > so: > > (setq mail-sources > '((maildir :path "/[ja...@ma...]/usr/home/jason/Maildir/"))) > > So, in my .emacs: > > (require 'tramp) > (setq tramp-default-method "sm") > (setq tramp-sh-program "/usr/local/bin/bash") > (setq tramp-remote-sh "/bin/bash") > (setq tramp-ls-program "/usr/local/bin/gls") The last two are not variables, they are connection method parameters. Hm. In fact, tramp-ls-program doesn't seem to exist at all. Tramp should do this itself. Please try commenting out all but (require 'tramp) (setq tramp-default-method "sm") and then try to see what happens. Hm. Actually, you might like (setq tramp-verbose 10) (setq tramp-debug-buffer t) as well, as it gives you more information. The debug buffer is called *debug tramp/foo* whereas the Tramp buffer is *tramp/foo*. > Starting up Gnus, tramp seems to kick in, as I see evidence of an ssh > login on the remote server: > > Dec 28 01:00:42 sclp3 sshd[7795]: Accepted publickey for jason from 128.165.7.22 port 1492 ssh2 > > However, Gnus hangs showing "Using remote command /bin/ls for getting > directory listings." > > After stopping Gnus with C-g, the tramp buffer shows: > > sh: syntax error: No child processes > Connection to mastaler.com closed. > > Process *tramp/sm ja...@ma...* exited abnormally with code 2 > > What is the problem? Also, I did try specifying an alternate ls > program and shell as shown above, but these are ignored, and /bin/sh > and /bin/ls are still used. First of all, my goal is to make Tramp work for as many people as possible with the default settings (except that you might wish to tweak tramp-default-method). So you could help me greatly by telling how that goes. If you wish to use gls rather than ls on the remote end (why?), then I could change Tramp such that it looks for gls in addition to ls. It already looks for "ls" and "gnuls" in various directories, it would be simple to have it look for "gls", too. (Tramp looks for gnuls because BSD-ish ls implementations don't grok the "-n" parameter which Tramp wants. But at least on FreeBSD, the standard name for the GNU ls binary is "gnuls", and it supports "-n".) Also, if Tramp thinks that it needs something else than /bin/sh on the remote host, then it looks for that. In particular, it first checks whether /bin/sh supports tilde expansion (eg, "cd ~root" changes into root's home dir). If it does so, then /bin/sh is enough. Else it looks for ksh and for bash in various directories, because these shells support tilde expansion. There is a variable tramp-remote-path which contains a list of directories which Tramp checks for the binaries. It is harmless to include directories in this list which don't exist on all remote hosts. /usr/local/bin is in that list by default. If any of the above is not clear from the documentation, please tell me where you looked, so that I can include a pointer. kai -- Simplification good! Oversimplification bad! (Larry Wall) |
From: Jason R. M. <jas...@ma...> - 2001-12-29 06:09:29
Attachments:
tramp_verbose.txt
tramp_debug_buffer.txt
|
Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Gro=DFjohann) writes: > Please try commenting out all but >=20 > (require 'tramp) > (setq tramp-default-method "sm") >=20 > and then try to see what happens. Hm. Actually, you might like=20 >=20 > (setq tramp-verbose 10) > (setq tramp-debug-buffer t) The output from these two buffers is attached below. Same result however. > If you wish to use gls rather than ls on the remote end (why?) gls support `-n', while my /bin/ls does not. The system is BSDi's BSD/OS 4.0. > I could change Tramp such that it looks for gls in addition to ls. > It already looks for "ls" and "gnuls" in various directories, it > would be simple to have it look for "gls", too. Might be a good idea. `gls' is GNU's ls. > (Tramp looks for gnuls because BSD-ish ls implementations don't grok > the "-n" parameter which Tramp wants. But at least on FreeBSD, the > standard name for the GNU ls binary is "gnuls", and it supports > "-n".) `gnuls' is not the standard on my FreeBSD systems. GNU ls on FreeBSD comes from the "fileutils" port (sysutils/fileutils) which installs ls as /usr/local/bin/gls. In any case, I made a symlink from /bin/gnuls to /usr/local/bin/gls on my BSD/OS system, and tramp still didn't choose it. It instead chose /bin/ls which doesn't support `-n'. sclp3:~> /bin/ls -n ls: illegal option -- n usage: ls [-1ACFLRTWacdfikloqrstu] [file ...] Possibly the ls detection code needs some work. However, I even temporarily replaced my /bin/ls with a symlink to gls, and Gnus still hangs in exactly the same spot with the same tramp output. > Also, if Tramp thinks that it needs something else than /bin/sh on > the remote host, then it looks for that. In particular, it first > checks whether /bin/sh supports tilde expansion (eg, "cd ~root" > changes into root's home dir). If it does so, then /bin/sh is > enough. It seems that my /bin/sh does support tilde expansion. |
From: Kai.Grossjohann@CS.Uni-Dortmund.DE (K. ) - 2001-12-29 21:17:41
|
"Jason R. Mastaler" <ja...@ma...> writes: > Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Gro=DFjohann) writes: > >> If you wish to use gls rather than ls on the remote end (why?) > > gls support `-n', while my /bin/ls does not. The system is BSDi's > BSD/OS 4.0. Good point. I've never seen BSD/OS. So I'm sure you can help me iron out some wrinkles where Tramp is not as portable as it should be. >> I could change Tramp such that it looks for gls in addition to ls. >> It already looks for "ls" and "gnuls" in various directories, it >> would be simple to have it look for "gls", too. > > Might be a good idea. `gls' is GNU's ls. Right. Will do. >> (Tramp looks for gnuls because BSD-ish ls implementations don't grok >> the "-n" parameter which Tramp wants. But at least on FreeBSD, the >> standard name for the GNU ls binary is "gnuls", and it supports >> "-n".) > > `gnuls' is not the standard on my FreeBSD systems. GNU ls on FreeBSD > comes from the "fileutils" port (sysutils/fileutils) which installs ls > as /usr/local/bin/gls. I meant: _if_ GNU ls is installed on a FreeBSD system, _then_ "gnuls" is the default (standard?) name for the binary. > In any case, I made a symlink from /bin/gnuls to /usr/local/bin/gls on > my BSD/OS system, and tramp still didn't choose it. It instead chose > /bin/ls which doesn't support `-n'. > > sclp3:~> /bin/ls -n > ls: illegal option -- n > usage: ls [-1ACFLRTWacdfikloqrstu] [file ...] > > Possibly the ls detection code needs some work. That's right. I found a bug in that area, please checkout the current CVS to see if it helps. (The old code would look for the return status being non-nil, but of course 0 means okay and any other number means failed. I changed the logic there.) > However, I even temporarily replaced my /bin/ls with a symlink to > gls, and Gnus still hangs in exactly the same spot with the same > tramp output. Hm. I will have another look at your output. kai --=20 Simplification good! Oversimplification bad! (Larry Wall) |
From: Kai.Grossjohann@CS.Uni-Dortmund.DE (K. ) - 2001-12-29 21:20:11
|
"Jason R. Mastaler" <ja...@ma...> writes: > $ test / -nt / What happens when you log in to the BSDi box, type "exec /bin/sh", and then type the above command into that shell? Maybe this command never returns? Or it fails with the error that you've already seen? Also, I see that the above is the last line from your *debug tramp/foo* buffer -- was it really the last line or did something get truncated somewhere? kai -- Simplification good! Oversimplification bad! (Larry Wall) |
From: Jason R. M. <jas...@ma...> - 2001-12-29 21:29:26
|
Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Gro=DFjohann) writes: > Good point. I've never seen BSD/OS. So I'm sure you can help me > iron out some wrinkles where Tramp is not as portable as it should be. Yes, I'll sure try. > I meant: _if_ GNU ls is installed on a FreeBSD system, _then_ "gnuls" > is the default (standard?) name for the binary. No, what I'm saying is that `gls' is the standard name for the binary on FreeBSD. > That's right. I found a bug in that area, please checkout the > current CVS to see if it helps. I'm having trouble building it. What am I doing wrong? [jasonrm@nightshade tramp]$ gmake EMACS=3Dxemacs all for a in lisp texi; do \ gmake -C $a "EMACS=3Dxemacs" "MAKEINFO=3Dmakeinfo" all; \ done gmake[1]: Entering directory `/home/jasonrm/lib/lisp/tramp-cvs/lisp' gmake[1]: *** No rule to make target `base64.elc', needed by `tramp.elc'. = Stop. gmake[1]: Leaving directory `/home/jasonrm/lib/lisp/tramp-cvs/lisp' gmake[1]: Entering directory `/home/jasonrm/lib/lisp/tramp-cvs/texi' texi2dvi tramp.texi This is TeX, Version 3.14159 (Web2C 7.3.1) (/tmp/txi2d.56418/tramp.texi (/usr/local/share/texmf/tex/texinfo/texinfo.tex Loading texinfo [version 1999-09-25.10]: Basics, pdf, fonts, page headings, tables, conditionals, indexing, sectioning, toc, environments, defuns, macr= os, cross references, (/usr/local/share/texmf/tex/plain/dvips/epsf.tex) localization, and turning on texinfo input format.) ! Undefined control sequence. <argument> \titlefonts \rm \tramp=20 {} User Manual \leftline #1->\line {#1 \hss } \next #1->\leftline {\titlefonts \rm #1} \finishedtitlepagefalse \vskip 4pt= ... l.60 @title @tramp{} User Manual =20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20=20= =20=20=20=20=20=20=20 ?=20 |
From: Jason R. M. <jas...@ma...> - 2001-12-29 21:32:30
|
Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Gro=DFjohann) writes: > What happens when you log in to the BSDi box, type "exec /bin/sh", > and then type the above command into that shell? Maybe this command > never returns? Or it fails with the error that you've already seen? sclp3:~> exec /bin/sh $ test / -nt / sh: syntax error: No child processes Connection to sclp3.sclp.com closed. > Also, I see that the above is the last line from your *debug > tramp/foo* buffer -- was it really the last line or did something > get truncated somewhere? It really was the last line. |
From: Kai.Grossjohann@CS.Uni-Dortmund.DE (K. ) - 2001-12-29 22:09:56
|
"Jason R. Mastaler" <ja...@ma...> writes: > Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Gro=DFjohann) writes: > >> Good point. I've never seen BSD/OS. So I'm sure you can help me >> iron out some wrinkles where Tramp is not as portable as it should be. > > Yes, I'll sure try. > >> I meant: _if_ GNU ls is installed on a FreeBSD system, _then_ "gnuls" >> is the default (standard?) name for the binary. > > No, what I'm saying is that `gls' is the standard name for the binary > on FreeBSD. Oh. Hm. I thought it was gnuls. Okay. I'll have it look for both, then we'll be fine either way. >> That's right. I found a bug in that area, please checkout the >> current CVS to see if it helps. > > I'm having trouble building it. What am I doing wrong? I fixed the Lisp building errors. For the texi2dvi problem I think that maybe your Texinfo is too old? kai --=20 Simplification good! Oversimplification bad! (Larry Wall) |
From: Jason R. M. <jas...@ma...> - 2001-12-30 02:10:06
|
Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Gro=DFjohann) writes: > Oh. Hm. I thought it was gnuls. Okay. I'll have it look for > both, then we'll be fine either way. With the new code from CVS, gls is now found and used. Cool. > I fixed the Lisp building errors. Yes, looks good. > For the texi2dvi problem I think that maybe your Texinfo is too old? I'm not sure. I'm using teTeX 1.0.7 which seems to be the latest, but don't worry about that, it's not that important whether I can build the manual or not. |
From: Kai.Grossjohann@CS.Uni-Dortmund.DE (K. ) - 2001-12-29 22:15:47
|
"Jason R. Mastaler" <ja...@ma...> writes: > Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Gro=DFjohann) writes: > >> What happens when you log in to the BSDi box, type "exec /bin/sh", >> and then type the above command into that shell? Maybe this command >> never returns? Or it fails with the error that you've already seen? > > sclp3:~> exec /bin/sh > $ test / -nt / > sh: syntax error: No child processes > Connection to sclp3.sclp.com closed. Oh, boy. Oh, boy. What can I do? Tramp issues this command to find out if the `test' command groks the `-nt' option. Can you suggest some other way to find this out? What would happen if I would say=20 ( test / -nt / ) with parentheses around the command? Would that mean that the command just fails, rather than taking the whole shell down with it? Also, currently Tramp always uses just `test', but depending on the shell, it might be useful to try `/bin/test' or `/usr/bin/test' (depending on OS), instead. Sometimes, the binaries provide more options than the shell built-in. But if Tramp starts the ksh or bash on that host (because /bin/sh doesn't do tilde expansion), then it is probably useful to use the shell-builtin. You can see, it is not so easy. You might be interested in hearing, by the way, that on most systems, `ls' returns nonzero exit status when called on nonexisting files. But in NetBSD 1.[34] (forget which) `ls' has a bug (always returns zero exit status, even for nonexisting files); and apparently, the same bug is in BSD/OS. kai --=20 Simplification good! Oversimplification bad! (Larry Wall) |
From: Jason R. M. <jas...@ma...> - 2001-12-30 02:21:52
|
Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Gro=DFjohann) writes: > What would happen if I would say=20 >=20 > ( test / -nt / ) >=20 > with parentheses around the command? Would that mean that the > command just fails, rather than taking the whole shell down with it? Yes, looks like it: sclp3:~> exec /bin/sh $ ( test / -nt / )=20=20=20=20 sh: syntax error: No child processes $=20 > Also, currently Tramp always uses just `test', but depending on the > shell, it might be useful to try `/bin/test' or `/usr/bin/test' > (depending on OS), instead. Sometimes, the binaries provide more > options than the shell built-in. But if Tramp starts the ksh or > bash on that host (because /bin/sh doesn't do tilde expansion), then > it is probably useful to use the shell-builtin. >=20 > You can see, it is not so easy. Well, my /bin/sh does support tilde expansion, but doesn't like the test. My /bin/ksh and bash don't have problems with test: sclp3:~> exec /bin/ksh $ test / -nt / $=20 Perhaps tramp could allow the user to set things like shell, test command, ls program (as I was trying to do initially). I think it would save allot of time instead of having tramp iterate through all of these tests trying to find the right combination each time. This would also allow me to get it up and running on my oddball system. It seems that if I could force use of /bin/ksh and gls, I'd be all set. > But in NetBSD 1.[34] (forget which) `ls' has a bug (always returns > zero exit status, even for nonexisting files); and apparently, the > same bug is in BSD/OS. Yeah, this OS is several years old, and really needs an upgrade to something more recent. It's just difficult as the server is a couple thousand miles away from where I am. :-) |
From: Kai.Grossjohann@CS.Uni-Dortmund.DE (K. ) - 2001-12-30 13:27:31
|
"Jason R. Mastaler" <ja...@ma...> writes: > Kai.Grossjohann@CS.Uni-Dortmund.DE (Kai Gro=DFjohann) writes: > >> What would happen if I would say=20 >>=20 >> ( test / -nt / ) >>=20 >> with parentheses around the command? Would that mean that the >> command just fails, rather than taking the whole shell down with it? > > Yes, looks like it: > > sclp3:~> exec /bin/sh > $ ( test / -nt / )=20=20=20=20 > sh: syntax error: No child processes > $=20 Good. I'll change Tramp to insert the parentheses, then. >> Also, currently Tramp always uses just `test', but depending on the >> shell, it might be useful to try `/bin/test' or `/usr/bin/test' >> (depending on OS), instead. Sometimes, the binaries provide more >> options than the shell built-in. But if Tramp starts the ksh or >> bash on that host (because /bin/sh doesn't do tilde expansion), then >> it is probably useful to use the shell-builtin. >>=20 >> You can see, it is not so easy. > > Well, my /bin/sh does support tilde expansion, but doesn't like the > test. My /bin/ksh and bash don't have problems with test: > > sclp3:~> exec /bin/ksh > $ test / -nt / > $=20 > > Perhaps tramp could allow the user to set things like shell, test > command, ls program (as I was trying to do initially). I think it > would save allot of time instead of having tramp iterate through all > of these tests trying to find the right combination each time. It is possible to set these parameters. But it is not sufficient to set variables with setq, instead you have to frob the method parameters in tramp-methods. You can define a new method which uses your configuration, and another method which uses the standard procedure, so you can choose between quick connection setup and testing the standard stuff. > This would also allow me to get it up and running on my oddball > system. Right. Tramp is quite configurable, I think. If there is something missing, please holler. On the other hand, I think it's a good idea for Tramp to find out as many things as it can by itself, as the user has to configure too many things already. So the default behavior should be to figure it out on its own, and there should be configuration variables for the knowledgeable to override it. If you think config variables should be added somewhere, I'll do that (time permitting). > It seems that if I could force use of /bin/ksh and gls, I'd be all > set. > >> But in NetBSD 1.[34] (forget which) `ls' has a bug (always returns >> zero exit status, even for nonexisting files); and apparently, the >> same bug is in BSD/OS. > > Yeah, this OS is several years old, and really needs an upgrade to > something more recent. It's just difficult as the server is a couple > thousand miles away from where I am. :-) I'd like Tramp to work with old systems, too. kai --=20 Simplification good! Oversimplification bad! (Larry Wall) |
From: Jason R. M. <jas...@ma...> - 2001-12-30 02:47:26
|
Yup, my /bin/sh is the problem. On the server I replaced /bin/sh with a symlink to /bin/bash, and now tramp is working great. But, it would be nice to either have some way to specify /bin/bash, or modify the tests in someway so that either /bin/ksh, or /bin/bash is chosen instead of /bin/sh on my system. |
From: Kai.Grossjohann@CS.Uni-Dortmund.DE (K. ) - 2001-12-30 16:56:09
|
"Jason R. Mastaler" <ja...@ma...> writes: > But, it would be nice to either have some way to specify /bin/bash, or > modify the tests in someway so that either /bin/ksh, or /bin/bash is > chosen instead of /bin/sh on my system. Maybe. Note that it is possible to directly specify the shell to use, via tramp-methods. Tramp currently looks whether /bin/sh groks tilde expansion, and if not, it searches for ksh or bash. But maybe it should search for ksh or bash in all cases -- I imagine that might help. Hm. Opinions? kai -- Simplification good! Oversimplification bad! (Larry Wall) |