今天我发现 X11.app 在我的 Mac 上不再可用。我不确定这是什么时候发生的。我想距离我上次使用 X11 应用程序已经过去了几个星期。
我说的“不再起作用”是指它仍然起作用绝对没有如果我尝试直接运行 X11.app,dock 中不会出现任何内容,也没有任何错误消息——就好像我根本没有运行它一样。
如果我尝试从终端运行 X 应用程序(例如:xterm),它会一直挂起。我猜它在等待 X11 启动。
我尝试从 Snow Leopard 安装 DVD 重新安装 X11,但似乎没有任何效果。
更新
我安装了 MacPorts,看起来xorg-server
可能已经安装了。我尝试卸载它...
port -u uninstall xorg xorg-server
...并重新安装它...
port install xorg xorg-server
...但无论哪种方式,事情都不起作用。
以下是/var/log/system.log
MacPorts xorg 安装时显示的内容。
Dec 1 14:28:26 Stripy org.macports.X11.stub[51551]: Xquartz: bootstrap_look_up(): Unknown service name
Dec 1 14:28:27 Stripy org.macports.startx[51470]: waiting for X server to begin accepting connections
Dec 1 14:28:27 Stripy org.macports.startx[51470]: xinit: giving up
Dec 1 14:28:27 Stripy org.macports.startx[51470]: xinit: unable to connect to X server: Operation timed out
Dec 1 14:28:27 Stripy org.macports.startx[51470]: waiting for X server to begin accepting connections xinit: server error
Dec 1 14:28:27 Stripy org.macports.startx[51470]: waiting for X server to begin accepting connections
Dec 1 14:28:27 Stripy defaults[51670]: \nThe domain/default pair of (org.macports.X11, dpi) does not exist
Dec 1 14:28:27 Stripy org.macports.startx[51638]: xauth: file /Users/laurence/.serverauth.51639 does not exist
Dec 1 14:28:28 Stripy org.macports.startx[51638]:
Dec 1 14:28:28 Stripy org.macports.X11.stub[51723]: Xquartz: Unable to locate waiting server: org.macports.X11
Dec 1 14:28:28 Stripy org.macports.X11.stub[51727]: Xquartz: Starting X server: /Applications/MacPorts/X11.app/Contents/MacOS/X11 --listenonly
Dec 1 14:28:30 Stripy org.macports.startx[51638]: ^M
Dec 1 14:28:32 Stripy org.macports.startx[51638]: waiting for X server to begin accepting connections
Dec 1 14:28:48: --- last message repeated 8 times ---
这会一遍又一遍地重复(模数时间戳和 pid)。
当未安装 MacPorts xorg 时,它的样子如下。
Dec 1 14:55:32 Stripy defaults[64771]: \nThe domain/default pair of (org.macports.X11, dpi) does not exist
Dec 1 14:55:32 Stripy org.macports.startx[64737]: xauth: file /Users/laurence/.serverauth.64738 does not exist
Dec 1 14:55:32 Stripy org.macports.startx[64737]:·
Dec 1 14:55:32 Stripy org.macports.startx[64737]: xinit: unable to run server "/opt/local/bin/X": No such file or directory
Dec 1 14:55:32 Stripy org.macports.startx[64737]: Use the -- option, or make sure that /opt/local/bin is in your path and
Dec 1 14:55:32 Stripy org.macports.startx[64737]: that "/opt/local/bin/X" is a program or a link to the right type of server
Dec 1 14:55:32 Stripy org.macports.startx[64737]: for your display. Possible server names include:
Dec 1 14:55:32 Stripy org.macports.startx[64737]:·
Dec 1 14:55:32 Stripy org.macports.startx[64737]: Xquartz Mac OSX Quartz displays.
Dec 1 14:55:32 Stripy org.macports.startx[64737]: Xvfb Virtual frame buffer
Dec 1 14:55:32 Stripy org.macports.startx[64737]: Xfake kdrive-based virtual frame buffer
Dec 1 14:55:32 Stripy org.macports.startx[64737]: Xnest X server nested in a window on another X server
Dec 1 14:55:32 Stripy org.macports.startx[64737]: Xephyr kdrive-based nested X server
Dec 1 14:55:32 Stripy org.macports.startx[64737]: Xvnc X server accessed over VNC's RFB protocol
Dec 1 14:55:32 Stripy org.macports.startx[64737]: Xdmx Distributed Multi-head X server
Dec 1 14:55:32 Stripy org.macports.startx[64737]:·
Dec 1 14:55:34 Stripy org.macports.startx[64737]: xinit: giving up
Dec 1 14:55:34 Stripy org.macports.startx[64737]: xinit: unable to connect to X server: Connection refused
Dec 1 14:55:34 Stripy org.macports.startx[64737]: xinit: server error
Dec 1 14:55:34: --- last message repeated 1 time ---
再次,这种情况不断重复。
我还尝试卸载 macports xorg
,然后安装 XQuartz(并再次重新启动以确保无误)。运行 Applications/Utilities/XQuartz 不起作用,尝试从终端运行也不起作用 ,以下是使用该设置xterm
的输出:/var/log/system.log
Dec 1 16:13:01 Stripy org.macosforge.xquartz.startx[343]: waiting for X server to begin accepting connections
Dec 1 16:13:01 Stripy org.macosforge.xquartz.X11.stub[400]: Xquartz: bootstrap_look_up(): Unknown service name
Dec 1 16:13:02 Stripy org.macosforge.xquartz.startx[343]: waiting for X server to begin accepting connections
Dec 1 16:13:02 Stripy org.macosforge.xquartz.startx[343]: /opt/X11/bin/xinit: giving up
Dec 1 16:13:02 Stripy org.macosforge.xquartz.startx[343]: /opt/X11/bin/xinit: unable to connect to X server: Operation timed out
Dec 1 16:13:02 Stripy org.macosforge.xquartz.startx[343]: waiting for X server to begin accepting connections /opt/X11/bin/xinit: server error
Dec 1 16:13:02 Stripy org.macosforge.xquartz.startx[343]: waiting for X server to begin accepting connections
Dec 1 16:13:02 Stripy defaults[544]: \nThe domain/default pair of (org.macosforge.xquartz.X11, dpi) does not exist
Dec 1 16:13:02 Stripy org.macosforge.xquartz.startx[510]: xauth: file /Users/laurence/.serverauth.511 does not exist
Dec 1 16:13:02 Stripy org.macosforge.xquartz.startx[510]:
Dec 1 16:13:02 Stripy org.macosforge.xquartz.X11.stub[588]: Xquartz: Unable to locate waiting server: org.macosforge.xquartz.X11
Dec 1 16:13:02 Stripy org.macosforge.xquartz.X11.stub[589]: Xquartz: Starting X server: /Applications/Utilities/XQuartz.app/Contents/MacOS/X11 --listenonly
Dec 1 16:13:03 Stripy login[619]: USER_PROCESS: 619 ttys000
Dec 1 16:13:04 Stripy org.macosforge.xquartz.startx[510]: ^M
Dec 1 16:13:06 Stripy org.macosforge.xquartz.startx[510]: waiting for X server to begin accepting connections
Dec 1 16:13:22: --- last message repeated 8 times ---
(再一次重复。)
我尝试搜索其中一些消息,发现了一些结果,但没有找到具体的解决方案。
答案1
OS X 上的 X11 需要一对launchd
plist
文件处于活动状态;这对文件必须匹配,并且还必须及时正确配置login
。每个 X11 服务器都提供自己的一对文件:
- 适用于 Apple 的 X11,
/System/Library/LaunchDaemons/org.x.privileged_startx.plist
以及/System/Library/LaunchAgents/org.x.startx.plist
; - 适用于 MacOSForge XQuartz,
/Library/LaunchDaemons/org.macosforge.xquartz.privileged_startx.plist
以及/Library/LaunchAgents/org.macosforge.xquartz.startx.plist
; - 适用于 MacPorts XQuartz,
/Library/LaunchDaemons/org.macports.privileged_startx.plist
以及/Library/LaunchAgents/org.macports.startx.plist
。
当存在多个 X11 安装时,这些很容易混淆。最好的办法是使用 禁用所有 startx LaunchAgents launchctl unload -w
,然后仅启用要使用的那个launchctl load -w
(-w
指示launchctl
记住后续启动/登录的操作)。不要卸载 LaunchDaemons。为了正确设置 DISPLAY 环境变量,需要在此之后注销并重新登录。
答案2
我的问题类似。我的 .profile 正在“获取”我的 .bashrc,而我的 .bashrc 有一个古老的交互性测试:
# If not running interactively, don't do anything [ -z "$PS1" ] && exit
将“退出”改为“返回”对我来说很有效。
答案3
我的 .profile 位于exec bash
末尾(以确保 .bashrc 被执行)。这就是 X11.app 无法启动的原因。
将其更改为. .bashrc
X11.app 后可再次正常启动。