LSOpenURLsWithRole () завершается с ошибкой -10810 на Yosemite изнутри tmux

17

Попытка открыть приложение из командной строки (Terminal.app), внутри tmux(установленной через MacPorts, версия 1.9a) и получить следующий результат:

$ open /Applications/Adobe\ Reader.app/
LSOpenURLsWithRole() failed with error -10810 for the file /Applications/Adobe Reader.app.

Эта же команда отлично работает с того же терминала, если выполняется вне tmux.

Окружающая среда должна быть прочитана с хоста; следующее находится в tmux.conf:set -g update-environment -r

При перезапуске Terminal.app или tmux сначала иногда выдается сообщение об ошибке с другим сообщением (см. Ниже), а при повторной попытке вместо этого выдается ошибка -10810.

$ open /Applications/Adobe\ Reader.app/
The window server could not be contacted.  open must be run with a user logged in at the console, either as that user or as root.

Я пробовал как собственные приложения Apple (Preview, Font Book, Contacts), так и сторонние (Adobe, Evernote и т. Д.). Нет разницы. Единственное приложение, которое, кажется, работает, является искателем. ( open [dirname]например.)

krissen
источник

Ответы:

19

Для этого есть решение / обходной путь:

  • Обновите вашу версию reattach-to-user-namespace. Это используется tmux для выполнения программ. Я использую заварить , а не MacPorts, так что я просто сделал: brew update; brew upgrade reattach-to-user-namespace. Macports, вероятно, сможет сделать нечто подобное.
  • Добавьте следующее в ваш .tmux.confфайл:

    set -g default-command "reattach-to-user-namespace -l /bin/bash"

Перезапустите сеанс tmux, и это позволит вам запускать программы из командной строки.

Дополнительную информацию можно найти на этом выпуске github.

Brett
источник
FWIW, обновление reattach-to-user-namespaceне имеет значения для меня, и проблема все еще сохраняется. Кажется, tmux должен быть исправлен сам (см. Другой ответ).
Конрад Рудольф
если не используется оболочка по умолчанию, обязательно измените путь в команде (например, path/to/your/fish).
Авиэль Гросс
3

Проблема в том, что tmux меняет загрузчик на системный домен, когда это не нужно (см. Https://trac.macports.org/ticket/18357 ). Более старые версии launchd работали над этой ошибкой в ​​tmux, но переписанный launchd в OS X Yosemite не работает вокруг этой ошибки tmux.

Вам нужно будет либо подождать, пока Apple выпустит обновление, которое работает с ошибкой tmux, либо разработчики pester tmux, чтобы исправить эту ошибку в tmux, известную уже не менее 6 лет.

Джереми Хаддлстон Секвойя
источник