我在 Mac OS X Snow Leopard 上从 DMG 安装了 Firefox 10.6.3。我可以使用 从终端运行 Firefox /Applications/Firefox.app/Contents/MacOS/firefox-bin
。但是,如果我创建符号链接:
sudo ln -s /Applications/Firefox.app/Contents/MacOS/firefox-bin /bin/firefox
然后它拒绝运行,或者至少拒绝显示。当我从终端发出“firefox”时,我可以在 top 中看到该进程,但永远不会出现 GUI。
ls -lr /bin/firefox
lrwxr-xr-x 1 root wheel 52 May 5 15:19 /bin/firefox -> /Applications/Firefox.app/Contents/MacOS/firefox-bin
有任何想法吗?
答案1
Mac OS X 应用程序使用相对路径来查找其应用程序包中的其他文件。我无法重现您的问题,但通过符号链接启动的 Firefox 对我来说没有 Dock 图标或菜单栏。其他应用程序打印了以下错误:
2011-03-05 15:20:03.083 appname[25356:903] No Info.plist file in application bundle or no NSPrincipalClass in the Info.plist file, exiting
实现您想要的正确方法是创建一个调用可执行文件的脚本,或者更好的是(如果您由于某种原因没有运行多个不同版本的 Firefox),使用启动服务:
#!/usr/bin/env bash
open -a Firefox
这将启动在 Launch Services 中注册的 Firefox 实例。这样做的好处是,您可以移动应用程序包,它仍能正常工作,或者 Firefox 人员可以重命名二进制文件,它仍能继续工作。
答案2
我之前注意到过类似这样的事情(火狐3.6.3 在 Mac OS X 10.4 上:它显示主窗口,但不显示菜单栏;所有键盘输入都转到最近活动的应用程序,而不是火狐)。我用一个脚本替换了符号链接:
#!/bin/sh
exec '/Applications/Firefox.app/Contents/MacOS/firefox-bin' "$@"
我更喜欢符号链接,但还不足以追踪问题。Mozilla 的 Bugzilla(喜欢 ”启动 Firefox,菜单不出现,并且文本输入被禁用”),但没有找到完全匹配的内容。
答案3
这是否可能是可执行文件使用相对路径链接到共享库的问题?这导致过去在 OSX 10.6.3 上指向 exe 的符号链接无法正常工作。
您可以使用以下方法检查定义中的绝对路径或相对路径:
otool -L /Applications/Firefox.app/Contents/MacOS/firefox-bin
当从链接调用 exe 时,嵌入库路径之类的东西@loader_path
通常不起作用。您可以install_name_tool
按照以下说明使用 更改 exe 中的相对路径:这个答案。