LSOpenURLsWithRole () kończy się niepowodzeniem z błędem -10810 na Yosemite z poziomu tmux

17

Próba otwarcia aplikacji z wiersza polecenia (Terminal.app), wewnątrz tmux(instalowana przez MacPorts, wersja 1.9a) i uzyskanie następującego wyniku:

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

To samo polecenie działa dobrze, z tego samego terminala, jeśli jest wykonywane poza tmux.

Środowisko należy odczytać z hosta; w tmux.conf znajduje się:set -g update-environment -r

Po ponownym uruchomieniu Terminal.app lub tmux, czasami błędy odchodzący z innym komunikatem na początku, (patrz niżej), a kiedy spróbował ponownie, powyższy błąd -10810 podano zamiast.

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

Próbowałem zarówno własnych aplikacji Apple (Preview, Font Book, Kontakty), jak i firm trzecich (Adobe, Evernote itp.). Bez różnicy. Jedyną aplikacją, która wydaje się działać, jest wyszukiwarka. ( open [dirname]na przykład.)

Krissen
źródło

Odpowiedzi:

19

Istnieje rozwiązanie / obejście tego:

  • Zaktualizuj swoją wersję reattach-to-user-namespace. Jest to używane przez tmux do wykonywania programów. Używam napar zamiast DarwinPorts, więc po prostu nie: brew update; brew upgrade reattach-to-user-namespace. Macports prawdopodobnie będzie w stanie zrobić coś podobnego.
  • Dodaj następujące elementy do .tmux.confpliku:

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

Uruchom ponownie sesję tmux, co powinno pozwolić na uruchomienie programów z wiersza poleceń.

Więcej informacji można znaleźć w tym numerze github.

Brett
źródło
FWIW, aktualizacja reattach-to-user-namespacenie ma dla mnie znaczenia, a problem nadal występuje. Wygląda na to, że tmux sam musi zostać naprawiony (patrz inna odpowiedź).
Konrad Rudolph
gdy nie używasz domyślnej powłoki, pamiętaj o zmianie ścieżki w poleceniu (np path/to/your/fish.).
Aviel Gross
3

Problem polega na tym, że tmux zmienia bootstrap na domenę systemową, kiedy nie powinien (patrz https://trac.macports.org/ticket/18357 ). Starsze wersje wydanego działały wokół tego błędu w tmuxie, ale przerobione uruchomione w OS X Yosemite nie działa w przypadku tego błędu tmux.

Musisz albo poczekać, aż Apple wyda aktualizację, która działa wokół błędu tmux, lub deweloperów Pester tmux, aby naprawić ten błąd w tmuxie, który jest znany od co najmniej 6 lat.

Jeremy Huddleston Sequoia
źródło