Uzyskuję dostęp do komputera poprzez wiele sesji logowania. Czas życia sesji może się pokrywać lub nie. W moim przypadku te sesje logowania są obecnie zawsze realizowane przez SSH, ale wolałbym również obsługiwać sesje lokalne.
Czasami potrzebuję D-Bus w tych sesjach i chcę udostępniać tę samą sesję D-Bus w tych sesjach logowania, aby móc korzystać z GVFS .
Jaki jest zalecany sposób to zrobić? Nie chcę przerywać korzystania z D-Bus, o którym być może nie wiem. Zastanawiałem się nad użyciem
export $(dbus-launch --autolaunch $(cat /var/lib/dbus/machine-id))
ale (od Ubuntu 12.04) wydaje się to niewłaściwe:
- wymaga to sesji X, ale moje sesje SSH mogą, ale nie muszą, przekazywać ekran X, a nawet te, które go nie mają
$DISPLAY
; - jeśli ekran X nie jest dostępny,
dbus-launch
skarży się, że „Błąd automatycznego uruchamiania: X11 nie powiodło się.” i nie uruchamia demona; dbus-launch
strona podręcznika stwierdza, że „--autolaunch
Opcja jest uważana za wewnętrzny szczegół implementacji (…). W każdym razie nie ma żadnego powodu, aby używać go poza implementacją libdbus. ”
Czy dbus-launch
czy inne narzędzie w pakiecie D-Bus obsługuje automatyczne wykrywanie uruchomionego urządzenia dbus-daemon
i łączenie się z nim? Niezbędne informacje są dostępne, ~/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-${DISPLAY#*:}
jeśli D-Bus jest uruchamiany z połączeniem X, ale wydaje się, że nie jest nigdzie zapisany, jeśli nie jest dostępne połączenie X.
Czy powinienem utworzyć własny plik sesji D-Bus? Jeśli tak, czy powinienem użyć pliku w ~/.dbus/session-bus
katalogu? Czy ścieżka jest /var/lib/dbus/machine-id
niezawodna i przenośna?