web-dev-qa-db-ja.com

LSOpenURLsWithRole()がtmux内からYosemiteでエラー-10810で失敗しました

tmux(MacPorts、バージョン1.9aを介してインストール)内のコマンドライン(Terminal.app)からアプリケーションを開こうとすると、次の結果が得られます。

$ 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独自のアプリ(プレビュー、フォントブック、連絡先)とサードパーティ(Adobe、Evernoteなど)の両方を試しました。変わりはない。動作しているように見える1つのアプリはFinderです。 (open [dirname]、 例えば。)

17
krissen

これには解決策/回避策があります:

  • reattach-to-user-namespaceのバージョンを更新してください。これは、tmuxがプログラムを実行するために使用します。私はmacportsではなくbrewを使用しているので、brew update; brew upgrade reattach-to-user-namespaceを使用しました。 Macportsは同様のことを実行できる可能性があります。
  • 以下を.tmux.confファイルに追加します。

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

Tmuxセッションを再起動すると、コマンドラインからプログラムを起動できるようになります。

詳細については、 このgithubの問題を参照してください。

19
Brett

問題は、tmuxがbootstrapをシステムドメインに変更すべきでないときに変更していることです( https://trac.macports.org/ticket/18357 を参照)。古いバージョンのlaunchdはtmuxのこのバグを回避しましたが、OS XYosemiteで書き直されたlaunchdはこのtmuxのバグを回避しません。

Appleがtmuxバグを回避するアップデートをリリースするまで待つか、少なくとも6年間知られているtmuxでこのバグを修正するためにtmux開発者を混乱させる必要があります。