0

我正在进入 CentOS 6 VPS(来自 Mac 终端)并尝试运行 emacs:

emacs ~/.bashrc &

起初我什么也得不到。然后,我尝试:

export DISPLAY=:0

现在,当我再次尝试 emacs 时,我得到:

Display :0 unavailable, simulating -nw

我错过了什么?

谢谢!

4

2 回答 2

0

Emacs 试图在远程机器上打开一个窗口,但没有运行X Windows服务器。

尝试使用 启用 X 转发到您的本地计算机ssh -X,或者在控制台模式下使用emacs -nw(无 Windows)运行 emacs。

于 2014-03-08T21:05:27.390 回答
0

从你的问题中不清楚你是否真的在你的 Mac 上设置了 X 服务器,所以我先解释一下。

为了在图形而不是终端模式下使用 Emacs,您需要一个“X 服务器”。X Window System 是一种标准和协议,它允许程序通过在本地或网络 (TCP) 上的通信通道上发送消息来在显示器上绘图。带有显示器/键盘/鼠标的机器运行X服务器;想要在显示器上绘图的程序(例如 Emacs)称为 X 客户端。

OS X 不附带 X 服务器。你可以从这里得到一个:http: //xquartz.macosforge.org/landing/。苹果曾经包括一个,但他们最近放弃了它。

一旦你在你的 Mac 上运行了 X,你就可以在你的 VPS 上运行 Emacs 并让它在 Mac 上显示。您可以设置 DISPLAY 变量(并调整您的防火墙等)让 Emacs 通过 Internet 直接连接到您的 X 服务器,但这是一个坏主意:X 协议是不安全的,您不想将其暴露给互联网。相反,您可以使用 SSH “X 转发”。ssh -Xssh -R的一种特殊形式:它设置一个 TCP 端口监听远程主机的环回,并在您登录时设置 DISPLAY 变量以指向此代理。远程端的 X 客户端然后透明地连接到您的本地 X 服务器,通过 SSH 连接建立隧道。

由于网络延迟,远程 X 客户端可能需要几秒钟才能出现在您的显示器上。Emacs 需要特别长的时间才能出现,但我发现它一旦完成,正在进行的操作通常非常顺利。

我安装了 xquartz,现在得到:X11 forwarding request failed on channel 0

当您尝试此操作时,请使用ssh -vv发布您的 SSH 会话的输出。你在 VPS 上安装了xauth程序吗?sshd使用它在服务器端建立一个单独的 X 身份验证令牌(“MIT-MAGIC-COOKIE”)。它拦截初始的 X 协议身份验证消息并替换远程(“欺骗”)令牌;这样可以避免在远程主机上暴露您的本地令牌。

您也可以尝试ssh -Y而不是ssh -X

我应该添加 echo $DISPLAY (在终端中,在我 ssh 进入 VPS 之前),现在给我这个:/tmp/launch-ZMvHpM/org.macosforge.xquartz:0

这很正常。这是 OS X 用于按需启动服务的一般机制;这是由launchd设置的(我相信),它会在您运行第一个 X 客户端时自动启动 X 服务器。

于 2014-03-08T22:23:05.207 回答