LSOpenURLsWithRole () schlägt mit dem Fehler -10810 auf Yosemite in tmux fehl

17

Der Versuch, eine Anwendung über die Befehlszeile (Terminal.app) zu öffnen tmux(installiert über MacPorts, Version 1.9a) und das folgende Ergebnis zu erhalten:

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

Derselbe Befehl funktioniert auf demselben Terminal einwandfrei , wenn er außerhalb von tmux ausgeführt wird.

Die Umgebung sollte vom Host gelesen werden. Folgendes ist in der tmux.conf:set -g update-environment -r

Wenn terminal.app oder tmux Neustart es manchmal Fehler heraus mit einer anderen Nachricht zuerst (siehe unten) und wenn erneut versucht, den obigen Fehler -10.810 statt gegeben.

$ 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.

Ich habe sowohl Apples eigene Apps (Preview, Font Book, Contacts) als auch Drittanbieter (Adobe, Evernote usw.) ausprobiert. Kein Unterschied. Die einzige App, die zu funktionieren scheint, ist Finder. ( open [dirname]Zum Beispiel.)

krissen
quelle

Antworten:

19

Hierfür gibt es eine Lösung / Problemumgehung:

  • Aktualisieren Sie Ihre Version von reattach-to-user-namespace. Dies wird von tmux verwendet, um Programme auszuführen. Ich benutze brauen statt Macports, so dass ich gerade tat brew update; brew upgrade reattach-to-user-namespace. Macports wird wahrscheinlich in der Lage sein, etwas Ähnliches zu tun.
  • Fügen Sie Ihrer .tmux.confDatei Folgendes hinzu :

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

Starten Sie Ihre tmux-Sitzung neu. Damit sollten Sie Programme über die Befehlszeile starten können.

Weitere Informationen finden Sie in dieser Ausgabe von github.

Brett
quelle
FWIW, die Aktualisierung reattach-to-user-namespacemacht für mich keinen Unterschied, und das Problem besteht immer noch. Es scheint, dass tmux selbst repariert werden muss (siehe andere Antwort).
Konrad Rudolph
Wenn Sie nicht die Standard-Shell verwenden, müssen Sie den Pfad im Befehl ändern (z path/to/your/fish. B. ).
Aviel Gross
3

Das Problem ist, dass tmux den Bootstrap in eine Systemdomäne ändert, wenn dies nicht der Fall sein sollte (siehe https://trac.macports.org/ticket/18357 ). Ältere Versionen von launchd haben diesen Fehler in tmux umgangen, aber das neu geschriebene launchd in OS X Yosemite funktioniert nicht um diesen tmux-Fehler herum.

Sie müssen entweder warten, bis Apple möglicherweise ein Update veröffentlicht, das den tmux-Fehler behebt, oder Sie müssen die tmux-Entwickler belästigen, um diesen Fehler in tmux zu beheben, der seit mindestens 6 Jahren bekannt ist.

Jeremy Huddleston Sequoia
quelle