「D-Bus」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎Tips and tricks: タイトルをヒントとテクニックに変更)
(→‎参照: 同期)
 
(2人の利用者による、間の17版が非表示)
1行目: 1行目:
[[Category:デーモンとシステムサービス]]
+
[[Category:システム管理]]
[[cs:D-Bus]]
+
[[de:Qdbus]]
 
[[en:D-Bus]]
 
[[en:D-Bus]]
[[es:D-Bus]]
+
[[ru:D-Bus]]
[[ko:D-Bus]]
 
 
[[zh-hans:D-Bus]]
 
[[zh-hans:D-Bus]]
{{Related articles start}}
 
{{Related|kdbus}}
 
{{Related articles end}}
 
 
[[Wikipedia:ja:D-Bus|D-Bus]] はプロセス間のやりとりを行うためのメッセージバスシステムです。システム全体とユーザーセッション両方で実行できるデーモンと、アプリケーションが D-Bus を使うためのライブラリのセットから構成されています。
 
[[Wikipedia:ja:D-Bus|D-Bus]] はプロセス間のやりとりを行うためのメッセージバスシステムです。システム全体とユーザーセッション両方で実行できるデーモンと、アプリケーションが D-Bus を使うためのライブラリのセットから構成されています。
   
{{Pkg|dbus}} は {{Pkg|systemd}} の依存関係としてインストールされユーザーセッションバスは各ユーザーごとに[https://archlinux.org/news/d-bus-now-launches-user-buses/ 自動的に開始]されます。
+
{{Pkg|dbus}} は {{Pkg|systemd}} の依存関係としてプルおよび、インストールされます。ユーザーセッションバスは各ユーザーごとに [https://archlinux.org/news/d-bus-now-launches-user-buses/ 自動的に] 起動されます。
   
  +
== 実装 ==
== Alternative Implementations ==
 
   
  +
Arch は 2 つの D-Bus メッセージブローカー実装を提供します。最初に、ユーザーは、{{Pkg|systemd}} パッケージのインストール中に、目的の ''dbus-units'' プロバイダーを選択するよう求められます。一度にインストールできる実装は 1 つだけです。これにより、自動開始される dbus 実装となるユニットファイルが提供されます。<br>
=== dbus-broker ===
 
  +
新しいデフォルトの {{Pkg|dbus-broker-units}} または {{Pkg|dbus-daemon-units}} パッケージは、ソケットによって開始される {{ic|dbus.service}} システムファイルとユーザーユニットファイルを提供します。それぞれの実装の {{ic|dbus-broker.service}} または {{ic|dbus.service}} ファイルへのシンボリックリンクになっています。systemd ユニットパッケージには、依存関係として、使用される実際の実装、つまり {{Pkg|dbus-broker}} や {{Pkg|dbus}} が必要です。これらは、シンボリックリンクのターゲットである {{ic|dbus-broker.service}} または {{ic|dbus.service}} ファイルも提供します。
   
  +
{{Pkg|dbus}} パッケージは現在でも systemd によって明示的に必要とされており、{{Pkg|dbus-broker}} は ''dbus'' 自体を提供しません。 ただし、どちらのパッケージも独自に自動起動されず、{{Pkg|dbus-units}} のプロバイダーは 1 つしかインストールできないので、両方のデーモンパッケージがインストールされていても問題ありません ''dbus'' パッケージは、{{Pkg|dbus-broker}} が現在提供していない診断目的で使用されるコマンドラインユーティリティにも役立つ場合があります。
{{Pkg|dbus-broker}} is a drop-in replacement for the ''libdbus'' reference implementation, which aims "to provide high performance and reliability, while keeping compatibility to the D-Bus reference implementation". [https://github.com/bus1/dbus-broker]
 
   
  +
=== dbus-broker ===
To enable ''dbus-broker'' as the system bus, first disable the ''dbus'' service and then activate the ''dbus-broker'' one:
 
   
  +
[https://github.com/bus1/dbus-broker dbus-broker] は現在 Arch のデフォルト実装です
# systemctl disable dbus.service
 
  +
[https://archlinux.org/news/making-dbus-broker-our-default-d-bus-daemon/] [https://rfc.archlinux.page/0025-dbus-broker-default/] これは [[D-Bus#リファレンス実装|リファレンス実装]] のドロップインの置き換えで、''D-Bus リファレンス実装との互換性を維持しつつ、高い性能と信頼性を提供する'' ことを目的としています。
# systemctl enable dbus-broker.service
 
   
  +
''dbus-units'' プロバイダーを求められたら、{{Pkg|dbus-broker-units}} を選択するか、直接インストールして下さい。
To enable as a user bus, run as the desired user:
 
   
  +
{{Note|{{Pkg|dbus-broker}} は現在 [[AppArmor]] を [https://github.com/bus1/dbus-broker/pull/286 サポートしていません。]}}
$ systemctl --user enable dbus-broker.service
 
   
  +
=== リファレンス実装 ===
Or, to enable for all users, run as root:
 
   
  +
[https://wiki.freedesktop.org/www/Software/dbus/ The reference implementation] は現在も Arch によって正式にサポートされています。
# systemctl --global enable dbus-broker.service
 
   
  +
''dbus-units'' プロバイダを要求されたら {{Pkg|dbus-daemon-units}} を選択するか、直接インストールしてください。
Reboot for these settings to take effect.
 
   
 
== ヒントとテクニック ==
 
== ヒントとテクニック ==
   
=== dbus サービスの無効化 ===
+
=== dbus サービスを上書きする ===
   
{{ic|~/.local/share/dbus-1/services}} にあ dbus のサービスを上書きすることがきます。
+
これは、同じ有名なバス名を提供す複数のサービスの中から特定のサービスを指定する際に便利です。
  +
例えば、[[KeePass#自動起動]] や [[KDE Wallet#D-Bus の自動アクティベーション]] を参照してください。
   
  +
D-Bus サービスは、{{ic|$XDG_DATA_HOME/dbus-1/services}} 内のサービスファイルで {{ic|1=Exec=/bin/false}} を設定することでマスクできます。
==デバッグ==
 
  +
例えば、gvfsd をマスクする場合は以下のようにします。
   
  +
{{bc|1=
* {{App|D-Feet|使いやすい D-Bus デバッガ GUI ツールです。D-Feet を使うことで実行中のプログラムの D-Bus インターフェイスを調べることができます。 |https://wiki.gnome.org/DFeet|{{Pkg|d-feet}}
 
  +
$ cp /usr/share/dbus-1/services/org.gtk.vfs.Daemon.service ~/.local/share/dbus-1/services
  +
$ sed 's{{!}}^Exec=.*{{!}}Exec=/bin/false{{!}}' ~/.local/share/dbus-1/services/org.gtk.vfs.Daemon.service
 
}}
 
}}
* {{App|QDbusViewer|GUI D-Bus debugger. Can be used to inspect D-Bus services and invoke methods on them.|https://doc.qt.io/qt-5/qdbusviewer.html|{{Pkg|qt5-tools}}}}
 
   
  +
サービスがすでに起動されている場合、上書きは機能しません。既存のサービスのプロセスを強制終了するか、サービスを早めに起動する必要があります。
You can also use {{man|1|busctl}} from [[systemd]].
 
  +
  +
== デバッグ ==
  +
  +
* {{App|Bustle|D-Bus のアクティビティのシーケンス図を描画します。シグナルの発行、メソッド呼び出し、それに対応する戻り値を表示し、各イベントのタイムスタンプとメソッド呼び出しの継続時間を示します。|https://gitlab.gnome.org/World/bustle|{{Pkg|bustle}}}}
  +
  +
* {{App|D-Feet|使いやすい D-Bus デバッガーの GUI ツール、開発は中止されています。|https://wiki.gnome.org/Apps/DFeet|{{AUR|d-feet}}}}
  +
  +
* {{App|D-Spy|使いやすい GUI の D-Bus デバッガーツール。D-Spy を使用すると、実行中のプログラムの D-Bus インターフェイスを検査し、それらのインターフェイスでメソッドを呼び出すことができます。|https://gitlab.gnome.org/GNOME/d-spy|{{Pkg|d-spy}}}}
  +
  +
* {{App|Qt D-Bus Viewer|GUI D-Bus デバッガー、D-Bus サービスを検査し、それらのメソッドを呼び出すために使用できます。|https://doc.qt.io/qt-6/qdbusviewer.html|{{Pkg|qt6-tools}}}}
  +
  +
{{man|1|busctl}} から [[systemd]] を使用することもできます
  +
  +
== 参照 ==
   
  +
* https://freedesktop.org/wiki/Software/dbus/
==参照==
 
*[https://www.freedesktop.org/wiki/Software/dbus D-Bus page at freedesktop.org]
+
* https://freedesktop.org/wiki/IntroductionToDBus/
  +
* https://uyha.github.io/technical/dbus-systemd.html systemd は DBus を使用してやり取りを行います。この記事では、DBus の基本的な概念と、{{ic|busctl}} を使用して systemd と通信する方法について紹介します。
*[https://www.freedesktop.org/wiki/IntroductionToDBus Introduction to D-Bus] on freedesktop.org
 

2025年3月3日 (月) 18:25時点における最新版

D-Bus はプロセス間のやりとりを行うためのメッセージバスシステムです。システム全体とユーザーセッション両方で実行できるデーモンと、アプリケーションが D-Bus を使うためのライブラリのセットから構成されています。

dbussystemd の依存関係としてプルおよび、インストールされます。ユーザーセッションのバスは各ユーザーごとに 自動的に 起動されます。

実装

Arch は 2 つの D-Bus メッセージブローカー実装を提供します。最初に、ユーザーは、systemd パッケージのインストール中に、目的の dbus-units プロバイダーを選択するよう求められます。一度にインストールできる実装は 1 つだけです。これにより、自動開始される dbus 実装となるユニットファイルが提供されます。
新しいデフォルトの dbus-broker-units または dbus-daemon-units パッケージは、ソケットによって開始される dbus.service システムファイルとユーザーユニットファイルを提供します。それぞれの実装の dbus-broker.service または dbus.service ファイルへのシンボリックリンクになっています。systemd ユニットパッケージには、依存関係として、使用される実際の実装、つまり dbus-brokerdbus が必要です。これらは、シンボリックリンクのターゲットである dbus-broker.service または dbus.service ファイルも提供します。

dbus パッケージは現在でも systemd によって明示的に必要とされており、dbus-brokerdbus 自体を提供しません。 ただし、どちらのパッケージも独自に自動起動されず、dbus-units のプロバイダーは 1 つしかインストールできないので、両方のデーモンパッケージがインストールされていても問題ありません dbus パッケージは、dbus-broker が現在提供していない診断目的で使用されるコマンドラインユーティリティにも役立つ場合があります。

dbus-broker

dbus-broker は現在 Arch のデフォルト実装です [1] [2] これは リファレンス実装 のドロップインの置き換えで、D-Bus リファレンス実装との互換性を維持しつつ、高い性能と信頼性を提供する ことを目的としています。

dbus-units プロバイダーを求められたら、dbus-broker-units を選択するか、直接インストールして下さい。

ノート: dbus-broker は現在 AppArmorサポートしていません。

リファレンス実装

The reference implementation は現在も Arch によって正式にサポートされています。

dbus-units プロバイダを要求されたら dbus-daemon-units を選択するか、直接インストールしてください。

ヒントとテクニック

dbus サービスを上書きする

これは、同じ有名なバス名を提供する複数のサービスの中から特定のサービスを指定する際に便利です。 例えば、KeePass#自動起動KDE Wallet#D-Bus の自動アクティベーション を参照してください。

D-Bus サービスは、$XDG_DATA_HOME/dbus-1/services 内のサービスファイルで Exec=/bin/false を設定することでマスクできます。 例えば、gvfsd をマスクする場合は以下のようにします。

$ cp /usr/share/dbus-1/services/org.gtk.vfs.Daemon.service ~/.local/share/dbus-1/services
$ sed 's|^Exec=.*|Exec=/bin/false|' ~/.local/share/dbus-1/services/org.gtk.vfs.Daemon.service

サービスがすでに起動されている場合、上書きは機能しません。既存のサービスのプロセスを強制終了するか、サービスを早めに起動する必要があります。

デバッグ

  • Bustle — D-Bus のアクティビティのシーケンス図を描画します。シグナルの発行、メソッド呼び出し、それに対応する戻り値を表示し、各イベントのタイムスタンプとメソッド呼び出しの継続時間を示します。
https://gitlab.gnome.org/World/bustle || bustle
  • D-Feet — 使いやすい D-Bus デバッガーの GUI ツール、開発は中止されています。
https://wiki.gnome.org/Apps/DFeet || d-feetAUR
  • D-Spy — 使いやすい GUI の D-Bus デバッガーツール。D-Spy を使用すると、実行中のプログラムの D-Bus インターフェイスを検査し、それらのインターフェイスでメソッドを呼び出すことができます。
https://gitlab.gnome.org/GNOME/d-spy || d-spy
  • Qt D-Bus Viewer — GUI D-Bus デバッガー、D-Bus サービスを検査し、それらのメソッドを呼び出すために使用できます。
https://doc.qt.io/qt-6/qdbusviewer.html || qt6-tools

busctl(1) から systemd を使用することもできます

参照