У меня есть Firefox 10.6.3 установленных на Snow Leopard Mac OS X от DMG. Я могу запустить Firefox от терминального использования /Applications/Firefox.app/Contents/MacOS/firefox-bin
. Однако, если я создаю символьную ссылку:
sudo ln -s /Applications/Firefox.app/Contents/MacOS/firefox-bin /bin/firefox
затем это отказывается работать, или по крайней мере отображаться. Когда я выпускаю "Firefox" от терминала, я вижу процесс в вершине, но никогда не заставляю 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
Какие-либо идеи?
Я заметил что-то вроде этого только что (Firefox 3.6.3 на Mac OS X 10.4: это отображает свое главное окно, но не свою строку меню; весь ввод с клавиатуры переходит к последний раз активному приложению, не Firefox). Я заменил символьной ссылкой сценарием:
#!/bin/sh
exec '/Applications/Firefox.app/Contents/MacOS/firefox-bin' "$@"
Мне понравилась символьная ссылка лучше, но недостаточно разыскать проблему. Существуют некоторые возможно связанные ошибки в Bugzilla Mozilla (как “Стартовый Firefox, меню не появляются, и ввод текста отключен”), но ничто, что было похоже на точное совпадение.
Это - возможно, проблема исполняемого файла, связывающегося с общими библиотеками с помощью относительных путей? Это предотвратило символьные ссылки на exes, работающий на меня в прошлом на OSX 10.6.3.
Можно проверить на полные или относительные пути в использовании определений,
otool -L /Applications/Firefox.app/Contents/MacOS/firefox-bin
Вещи как @loader_path
во встроенных путях к библиотеке часто не будет работать, когда exe назовут из ссылки. Можно изменить относительные пути в использовании exe install_name_tool
, согласно этому ответу.
Приложения Mac OS X используют относительные пути для нахождения других файлов в их комплекте приложений. Я не мог воспроизвести Вашу проблему, но Firefox, запущенный через символьную ссылку, не имел Значка панелей или строки меню для меня. Другие приложения распечатали следующую ошибку:
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, работающего по любой причине), используйте Launch Services:
#!/usr/bin/env bash
open -a Firefox
Это запускает экземпляр Firefox, зарегистрированный в Launch Services. Преимущество состоит в том, что можно переместить комплект приложений вокруг, и он будет все еще работать, или люди Firefox могли переименовать двоичный файл, и он продолжит работать так или иначе.