Snow Leopard 10.6.3 上的 Firefox 3.6.3 - 到命令行二进制文件的符号链接不起作用?

Snow Leopard 10.6.3 上的 Firefox 3.6.3 - 到命令行二进制文件的符号链接不起作用?

我在 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 中的相对路径:这个答案

相关内容