2011-07-24 23 views
3

假设我有一台运行在某个远程服务器上的Emacs-Server,运行我的应用程序所需的所有库和软件。Emacs客户端 - 最小安装是什么?

然后,我想要几个客户端使用Emacs-client连接到该远程机器。每个客户端是否需要完整的Emacs安装,或者是否有足够的最低限度安装来与远程服务器进行通信,其中的所有操作都是?

这个(Emacs-)客户端安装是否如此之小,几乎所有的软件更新都可以在服务器上完成,而不会影响Emacs客户端?

回答

1

emacs的键绑定是否有一个原因不要远程运行客户端,只需使用本地显示器?这样,本地机器上几乎所有你需要的就是ssh客户端和X Window服务器。

ssh -X (user)@(server) "emacsclient -c"


编辑的意见:

此命令启动一个新的客户端连接到现有的Emacs的服务器(它假定已经运行)。如果没有现有服务器,则可以使用"emacsclient -a '' -c"自动启动emacs --daemon,但我不知道是否要连接用户启动服务器。

事实上,我很不确定整个多用户方面,说实话,我从来没有这样做过。上述认证由ssh处理,但当服务器和客户端由不同的用户启动时,很可能会有后续的权限问题需要处理,或者类似的问题。

这种方法应该是可能的与Windows/Cygwin作为客户端和/或服务器,因为Cygwin提供了Emacs,OpenSSH和X.or​​g包。 (我经常使用Windows/Cygwin作为在Linux上运行的Emacs的本地显示器。)但是,设置可能比较困难,而且当您使用Cygwin时,任何权限问题可能都会有所不同。

我不太确定没有Cygwin,这是如何工作的。 NTEmacs肯定不会与X.org交流,所以我想你会在这种情况下成为终端用户。 (可能是其他选项,但Cygwin听起来像是在Windows上使用所有Emacs,SSH和X的最佳集成方法)。

最后,我想你可能会得到你的“连接被拒绝”错误,因为localhost没有运行sshd守护进程?我会说ssh的配置超出了这个问题的范围,但是网上有很多资源。

+0

太好了,谢谢。这样简单的事情,所有更新和所有维护都发生在服务器上,无需安装,这正是我一直在寻找的。我目前没有远程服务器试用它,它是否也可以在localhost上运行?是仅限于Linux机器,还是可能在Windows上(有/没有cygwin)? – Thorsten

+0

还有一些问题:这是否会启动新的emacsclient,或连接到现有的?如果Emacs始终在服务器上运行,并且emacs客户端仅在客户端计算机上按需启动,那将很方便。身份验证如何在像这样的设置中工作? – Thorsten

+0

当我尝试:sudo ssh -X tj1 @ localhost“emacsclient -c”我得到 ssh:连接到主机localhost端口22:连接被拒绝 – Thorsten

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

+0

谢谢,那不是我所希望的。也许,通过Emacs 24,只需在本地安装Emacs(客户端)的最低核心版本并将所有库存放在远程服务器上,所有客户端都可以访问它们。顺便说一句,令人惊叹的Linux命令行巫术。 – Thorsten

1

取决于你想要达到的目标,你可以使用Emacs和画面的结合。通过从远程计算机上的屏幕启动Emacs并从中分离,您可以随后从不具有Emacs的其他计算机重新连接。再次,这是否会对你有用取决于你想要做什么;但是,对于许多Emacs用例,这可能非常有效。如果你不熟悉这种方式使用的屏幕,下面是一些阅读材料:

screen - The Terminal Multiplexer

+0

对我来说这是一个全新的概念,但很有趣。我想使用一个非常有限的Emacs客户端版本,就像在典型的客户端 - 服务器应用程序中替代Web浏览器一样,适用于没有复杂安装例程的非专家。我将不得不看看屏幕是否足够容易使用,但它听起来很有前途。谢谢。 – Thorsten

+0

如果(在对此进行更多研究之后),您认为Emacs和Screen的组合可能会满足您的需求,您可能需要提出一个新问题,详细说明您希望使用Emacs和Screen实现的功能。这样,你更有可能得到很好的回应。 – zev

0

我不是emacsclient的专家,但我不认为这是被设计用来做什么你正在寻找。我认为一般的用例是emacsclient允许你重定向新的请求,用emacs打开一个文件到一个持久的emacs进程,以避免在启动的时候可能会有一点开销。您似乎正在寻找更多真正的客户端/服务器关系。

我认为要实现您瞄准的目标,您可能需要在emacs外部寻找一些东西,可能是自己的项目 - 'emacsRemoteClient。它归结为一个或两个模型;你想要编辑的文件需要将它的路径发送到服务器机器,以便emacs可以做某种类型的远程流量访问,然后在本地产生xwindow(使用本地X env或在Windows上需要x服务器)。 ..或两个,将文件传输到服务器盒上的某个临时位置,并再次在本地产生远程x窗口(随后同步tmp &本地文件之间的更改)。

会很酷,有类似的东西......但怀疑它会涉及一些工作。也许我们只是需要一个版本用JavaScript编写的Emacs,它可以生活在云中或在您的浏览器...哦,有在浏览器;-)

史蒂夫

+0

您好Steve,听起来有趣,我认为zev和phils在他们的答案中显示了Emacs以外可能工作的极少。那是 - 你知道康克吗?这是一个用JavaScript编写的Web浏览器,在Emacs之后,使用缓冲区和Emacs键绑定。 – Thorsten