%20%E3%81%A7%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%20.png)
Ubuntu のスナップ アプリを nomachine 仮想デスクトップまたは x2go で起動するとエラーが発生し、実行されません。これは、ほとんどのスナップに該当する制限されたスナップにのみ適用されます。
nomachine 仮想デスクトップは、基本的な nomachine デスクトップ共有クライアントではなく、nomachine ワークステーション サーバーまたはその他のターミナル サーバー スタイルの製品に関連付けられています。私は x2go を使用していませんが、ユーザーから同じ問題が報告されているため、これも仮想デスクトップを共有していると思われます。
既知の回避策は、cgroups v2 を無効にしてスナップ サンドボックスを変更するか、DBUS_SESSION_BUS_ADDRESS の通常値を手動でシミュレートすることです。最初の方法は、cgroups v2 が現代の Linux エクスペリエンスの大きな部分を占めているため、単純ですが劇的です。2 番目の解決策は、複数のユーザーの下では機能しない可能性があるハックです。
nomachine または x2go がセッションを開始するときに DBUS_SESSION_BUS_ADDRESS が間違っている理由がわかりません。これらのリモート アクセス アプリを使用して仮想デスクトップ セッションにアクセスする場合、従来のディスプレイ マネージャーによって管理されるログインはありません。nomachine はログイン自体を実行し、グラフィカル セッションを開始します。x2go も同じことを行うと思います。コード パスに何らかの違いがあり、DBUS_SESSION_BUS_ADDRESS の値が予期しないものになります。systemd セッション開始ロジックの一部が nomachine または x2go によって呼び出されていないのではないかと思います。しかし、私には理解しにくいです。Linux ログインの仕組みについて基本的な知識がないことに気付き、理解できるドキュメントを見つけることができません。
(nomachine デスクトップなどの物理的に存在するセッションに接続する「画面共有」セッションでは、ディスプレイ マネージャーをバイパスしないため、この問題は発生しないと思います)
私の経験は nomachine に関するものですが、x2go ユーザーも同じ問題を報告しており、同じ回避策がそこでも機能します。
xubuntu または ubuntu の nomachine 仮想デスクトップでは、Firefox などの制限されたスナップを起動できません (カーネル パラメータによって cgroups v2 が無効にされていない限り)。
ターミナルから起動した場合のエラーは次のようになります。
tim@ubuntu ~/Desktop $ firefox /user.slice/user-1000.slice/session-c3.scope はスナップ cgroup ではありません
しかし、問題の根本的な原因の 1 つは、DBUS_SESSION_BUS_ADDRESS が正しく設定されていないことにあるようです。この値には値がありますが、通常のディスプレイ マネージャー セッションとはまったく異なります。
典型的な Ubuntu ログインでは、次のようなものが表示されます。
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
しかし、壊れた nomachine セッションでは、次のようになります。
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-ELpK0GVRdC,guid=877c270e0667562ac373497b63ebf31c
DBUS_SESSION_BUS_ADDRESS を手動で設定すると、制限されたスナップが機能します。
たとえば、nomachine で xfce を次のように起動する場合:
DefaultDesktopCommand "env
DBUS_SESSION_BUS_ADDRESS=unix:path=$XDG_RUNTIME_DIR/bus /usr/bin/startxfce4"
スナップは機能します。
この問題は、cgroups v2 が実行中のときに、制限されたスナップに対してのみ発生します。したがって、制限されたスナップ、つまりサンドボックスも要因であるはずです。このため、多くの人はこれがスナップのバグであると確信していますが、スナップの開発者はそうは考えていません。
DBUS_SESSION_BUS_ADDRESS の奇妙な値を見ると、セッションが正しく設定されていないと結論付けられます。nomachine がセッションを開始する方法は、ディスプレイ マネージャーの動作方法とは異なるはずです。DBUS_SESSION_BUS_ADDRESS は、グラフィカル セッションが開始する前の systemd ログイン プロセスで設定されます。
もう一つの可能性は
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-ELpK0GVRdC、guid=877c270e0667562ac373497b63ebf31c
完全に有効な値ですが、そのスナップのサンドボックスではそれが受け入れられません (制限のないスナップ アプリでは問題ありません)。
最も手間のかからない回避策は cgroups v2 を無効にすることであり、これは nomachine が推奨していることです。
nomachine または x2go がログインするときに DBUS_SESSION_BUS が異なるのはなぜですか?