我正在使用CentOS 6 VPS(来自Mac终端)并尝试运行emacs:
emacs ~/.bashrc &
起初我什么都没得到。然后,我尝试:
export DISPLAY=:0
现在,当我再次尝试emacs时,我得到了:
Display :0 unavailable, simulating -nw
我错过了什么?
谢谢!
答案 0 :(得分:0)
Emacs尝试在远程计算机上打开一个窗口,而不运行 X Windows 服务器。
尝试使用ssh -X
启用X转发到本地计算机,或者在控制台模式下使用emacs -nw
(无窗口)运行emacs。
答案 1 :(得分:0)
从您的问题中不清楚您是否确实在Mac上设置了X服务器,所以我先解释一下。
为了在图形而不是终端模式下使用Emacs,你需要一个“X服务器”.X Window系统是一个标准和协议,允许程序通过通信通道在本地发送消息在显示器上绘图或通过网络(TCP)。带显示器/键盘/鼠标的机器运行X服务器;想要在显示器上绘制的Emacs等程序称为X客户端。
OS X没有配备X服务器。你可以从这里得到一个:http://xquartz.macosforge.org/landing/。 Apple曾经包括一个,但他们最近放弃了它。
在Mac上运行X后,您可以在VPS上运行Emacs并将其显示在Mac上。您可以设置DISPLAY变量(并调整防火墙等)让Emacs通过Internet直接连接到您的X服务器,但这是一个坏主意:X协议不安全,您不希望将其暴露给互联网。相反,您可以使用SSH“X转发”。 ssh -X 是 ssh -R 的一种特殊形式:它设置一个侦听远程环回的TCP端口主机,并在您登录以指向此代理时设置DISPLAY变量。然后,远程端的X客户端透明地连接到本地X服务器,通过SSH连接进行隧道传输。
由于网络延迟,远程X客户端可能需要几秒钟才能显示在您的显示器上。 Emacs需要花费很长时间才能出现,但我发现一旦进行持续操作通常会非常顺利。
我安装了xquartz,现在得到:X11转发请求在通道0上失败
尝试此操作时,请使用 ssh -vv 发布SSH会话的输出。您是否在VPS上安装了 xauth 程序? sshd 使用它在服务器端建立单独的X身份验证令牌(“MIT-MAGIC-COOKIE”)。它拦截初始X协议认证消息并替换远程(“欺骗”)令牌;这样可以避免在远程主机上公开本地令牌。
您也可以尝试 ssh -Y 而不是 ssh -X 。
我应该添加echo $ DISPLAY(在终端中,在我进入VPS之前),现在给我这个:/tmp/launch-ZMvHpM/org.macosforge.xquartz:0
这是正常的。这是OS X用于按需启动服务的一般机制;这是由 launchd 设置的(我相信),它会在您运行第一个X客户端时自动启动X服务器。