2010年8月12日木曜日

[gentoo] pitivi 起動時のエラー

GentooLinux上で pitivi を起動しようとしたところ、以下のようなエラーが出て起動できなかった。

$ pitivi
ERROR:dbus.proxies:Introspect error on :1.3:/org/freedesktop/Hal/Manager: dbus.exceptions.DBusException: org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 1 matched rules; type="method_call", sender=":1.40" (uid=1000 pid=11904 comm="/usr/bin/python2.6) interface="org.freedesktop.DBus.Introspectable" member="Introspect" error name="(unset)" requested_reply=0 destination=":1.3" (uid=0 pid=4269 comm="/usr/sbin/hald))
Traceback (most recent call last):
  File "/usr/bin/pitivi", line 118, in 
    _run_pitivi()
  File "/usr/bin/pitivi", line 113, in _run_pitivi
    sys.exit(ptv.main(sys.argv))
  File "/usr/lib64/pitivi/python/pitivi/application.py", line 357, in main
    ptv = InteractivePitivi()
  File "/usr/lib64/pitivi/python/pitivi/application.py", line 237, in __init__
    Pitivi.__init__(self)
  File "/usr/lib64/pitivi/python/pitivi/application.py", line 138, in __init__
    self.deviceprobe = get_probe()
  File "/usr/lib64/pitivi/python/pitivi/device.py", line 69, in get_probe
    return HalDeviceProbe()
  File "/usr/lib64/pitivi/python/pitivi/device.py", line 154, in __init__
    for dev in self.manager.FindDeviceByCapability("video4linux"):
  File "/usr/lib64/python2.6/site-packages/dbus/proxies.py", line 68, in __call__
    return self._proxy_method(*args, **keywords)
  File "/usr/lib64/python2.6/site-packages/dbus/proxies.py", line 140, in __call__
    **keywords)
  File "/usr/lib64/python2.6/site-packages/dbus/connection.py", line 622, in call_blocking
    message, timeout)
dbus.exceptions.DBusException: org.freedesktop.DBus.Error.AccessDenied: Rejected send message, 1 matched rules; type="method_call", sender=":1.40" (uid=1000 pid=11904 comm="/usr/bin/python2.6) interface="org.freedesktop.Hal.Manager" member="FindDeviceByCapability" error name="(unset)" requested_reply=0 destination=":1.3" (uid=0 pid=4269 comm="/usr/sbin/hald))

DBus経由でHALへのアクセス権がないためのエラー?のようなので調べていくと、/etc/dbus-1/system.d/hal.conf が怪しそうということが判った。

"org.freedesktop.Hal.Manager" で探していくと、root ユーザと plugdev グループに所属しているユーザはアクセス権があるように見えたので、plugdev グループに入れてみたが同じエラーがでてしまった。

ネット上で色々調べていくと、全く同じ事例は見つからなかったが、FindDeviceByCapability関係で似たような物があったので参考に、hal.conf に以下の記述を plugdev グループのポリシーに追加した。

<allow send_destination="org.freedesktop.Hal" send_interface="org.freedesktop.Hal.Device.Video4Linux">
</allow>

これで旨く起動できることを確認した。