LSOpenURLsWithRole() 在 tmux 內的 Yosemite 上失敗並出現錯誤 -10810

LSOpenURLsWithRole() 在 tmux 內的 Yosemite 上失敗並出現錯誤 -10810

嘗試從內部命令列 (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.

我嘗試過蘋果自己的應用程式(預覽、字體冊、聯絡人)和第三方應用程式(Adobe、Evernote 等)。沒有不同。查找器是一款似乎確實有效的應用程式。 (open [dirname], 例如。)

答案1

有一個解決方案/解決方法:

  • 更新您的reattach-to-user-namespace. tmux 使用它來執行程式。我使用brew而不是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問題。

答案2

問題是 tmux 在不應該的情況下將引導程式變更為系統網域(請參閱https://trac.macports.org/ticket/18357)。舊版的 launchd 解決了 tmux 中的此錯誤,但在 OS X Yosemite 中重寫的 launchd 無法解決此 tmux 錯誤。

您要么需要等待 Apple 可能發布解決 tmux bug 的更新,要么需要糾纏 tmux 開發人員來修復 tmux 中的這個已知至少 6 年的 bug。

相關內容