我需要在远程 Mac 机器上运行 Mac 应用程序并将其显示在本地 Linux 机器的 X 服务器上(互联网上的许多文章似乎都在详细说明如何以相反的方式执行此操作)。
$ ssh -X mac-box
$ cd /Developer/Applications/Xcode.app
$ ./Contents/MacOS/Xcode
Sat Oct 3 20:41:26 mac-box.local Xcode[15634] <Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to catch errors as they are logged.
_RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.
^C
- 我的
$DISPLAY
变量似乎为空。它应该是什么样子才能正确转发? - 我可以以这种方式运行 OSX 应用程序吗?
答案1
如果 Mac 的 Aqua 是 X,那么您无需运行 X(XQuartz)即可在 Mac 上启动其他 X 程序...
所以:不,我认为你不能这样做。
但是,为了帮助您入门,我首先尝试将真正的 X 程序转发到您的 Linux 机器:
在 Mac 上:如果尚未安装,请安装 XQuartz(例如,从 OS X 10.6 DVD 上的可选安装中安装 XQuartz 2.3.4,或者从XQuartz 项目)。
在 Mac 上:使用 更改
X11Forwarding no
为(并确保该行前面X11Forwarding yes
没有井号 ( )) ,或使用Apple 的命令#
sudo vi /private/etc/ssh/sshd_config
sed
启用 X11 转发。这也将确保DISPLAY
变量自动设置。在您的 Linux 计算机上:
ssh -Y 用户@mac-box 终端
(接下来的步骤可能包括使用 Google 搜索Xephyr
(或较旧的Xnest
)。如果您遇到键盘问题:Google xmodmap
,或使用xev
进行调试。或者对于字体问题:Googlexfs
和xset +fp tcp/mac-box:7100
。但我怀疑您是否可以通过这种方式运行 Aqua 程序。)
答案2
听起来你的主要目标是在 Linux 机器上查看正在运行的 Mac 应用程序。Arjan 是对的,X 转发对此不起作用。
您应该在“系统偏好设置”的“共享”窗格中启用“屏幕共享”。这将打开 VNC 服务器。使用 Linux 计算机上的 VNC 客户端,您将能够看到 Mac 桌面。本文展示了如何在 Mac 端进行设置(步骤 1-3),继续(有点过多)介绍如何在 Airport 基站中设置 dyndns 和打开端口,然后在底部有一点点关于设置客户端的内容(步骤 20-21)。
答案3
只需使用
su -lm <usrname-to-proxy-for>
进入不会发生 X11 问题的 shell。有关“-m”选项的详细信息,请参阅手册页。