假设我在某个远程服务器上运行了Emacs-Server,其中包含运行我的应用程序所需的所有库和软件。
然后我想要几个客户端使用Emacs-client连接到该远程机器。每个客户端是否需要完整的Emacs安装,或者是否有足够的最小安装与远程服务器通信,其中所有操作都是?
这个(Emacs-)客户端安装是否可以这么小,几乎所有软件更新都可以在服务器上完成,而不会影响Emacs客户端?
答案 0 :(得分:1)
根据您要实现的目标,您可以使用Emacs和Screen的组合。通过从远程计算机上的屏幕启动Emacs并从中分离,您可以随后从不具有Emacs的其他计算机重新连接。同样,这是否适合你,取决于你想要做什么;但是,对于许多Emacs用例,这可能非常有效。如果你不熟悉以这种方式使用Screen,这里有一些阅读材料:
答案 1 :(得分:1)
是否有理由不远程运行客户端,只需使用本地显示器?这样,本地机器上几乎所有需要的都是ssh客户端和X Window服务器。
ssh -X (user)@(server) "emacsclient -c"
修改评论:
此命令启动一个新客户端以连接到现有的Emacs服务器(它假定已经在运行)。如果没有现有服务器,您可以使用"emacsclient -a '' -c"
自动启动emacs --daemon
,但我不知道您是否希望连接用户启动服务器。
事实上,我很不确定这个整体的多用户方面是否诚实,因为我以前从未这样做过。上述身份验证由ssh处理,但当服务器和客户端由不同用户启动时,可能会有后续的权限问题需要处理或类似。
这种方法应该可能与Windows / Cygwin作为客户端和/或服务器,因为Cygwin提供Emacs,OpenSSH和X.org软件包。 (我经常使用Windows / Cygwin作为在Linux上运行的Emacs的本地显示器。)但是,设置可能更难,并且当您使用Cygwin时,任何权限问题可能都不同。
如果没有Cygwin,我不太清楚这是如何工作的。 NTEmacs肯定不会和X.org交谈,所以我想你会在那个实例中成为终端。 ( 可能是其他选项,但Cygwin听起来像是在Windows上使用所有Emacs,SSH和X的最佳集成方法。)
最后,我想你可能会收到“Connection refused”错误,因为localhost没有运行sshd守护进程?我想说ssh的配置超出了这个问题的范围,但网上有很多资源。
答案 2 :(得分:0)
我不确定那是可能的。 emacsclient使用tramp连接到远程服务器,只是通过查看tramp elisp文件(41)中require
的数量,它似乎不太可能。您可以使用以下方法自行尝试:
zgrep -oE "\(require '[a-z-]+\)" *el.gz | sed -e 's%[a-z0-9-]\+\.el\.gz:%%g' | sort | uniq -cu | wc -l
答案 3 :(得分:0)
我不是emacsclient的专家,但我不认为它是为了满足您的需求而设计的。我认为一般用例是emacsclient允许您将新请求重定向到使用emacs打开文件到持久性emacs进程,以避免在启动时可能有点开销。您似乎正在寻找更多真正的客户/服务器关系。
我认为为了实现你的目标,你可能需要在emacs之外看一点,可能是一个项目本身 - 'emacsRemoteClient。它归结为一两个型号;您要编辑的文件需要将其路径发送到服务器计算机,以便emacs可以执行某种远程tramp访问&然后在本地生成xwindow(使用本地X env或在Windows上需要x服务器)......或者两个,将文件传输到服务器盒上的某个临时位置,然后再次在本地生成远程x窗口(然后同步更改在tmp和本地文件之间。)
拥有类似的东西会很酷......但怀疑它会涉及一些工作。也许我们只需要一个用javascript编写的emacs版本,它可以存在于云端或浏览器中......哦,在浏览器中有emacs键绑定; - )
-Steve