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

5238
krissen

Попытка открыть приложение из командной строки (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]например.)

17

2 ответа на вопрос

19
Brett

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

  • Обновите вашу версию 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.

FWIW, обновление `reattach-to-user-namespace` не имеет значения для меня, и проблема все еще сохраняется. Кажется, tmux должен быть исправлен сам (см. Другой ответ). Konrad Rudolph 8 лет назад 0
когда не используется оболочка по умолчанию, обязательно измените путь в команде (например, `path / to / your / fish`). Aviel Gross 8 лет назад 0
3
Jeremy Huddleston Sequoia

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

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