_ [debian] system-wide PulseAudio

単一システム上で複数ユーザに音を鳴らしたいのだけど、ユーザごとに pulseaudio を起動するとブロックしてしまって 1ユーザしか音を鳴らせない。ということで、pulseaudio をシステムデーモンとして起動してやることにした。 ところが、

Pulseaudio no longer installs the initscript for a system wide daemon. If you use systemwide mode (you probably shouldn’t), you can find the init script plus default file in /usr/share/doc/pulseaudio/examples/

ref. /usr/share/doc/pulseaudio/NEWS.Debian.gz

という具合になっていたので、まず /usr/share/doc/pulseaudio/examples/pulseaudio.default.example を /etc/defaut/pulseaudio に設置し、/usr/share/doc/pulseaudio/examples/pulseaudio.init.example を /etc/init.d/pulseaudio に設置した。 と思ったら /etc/defaut/pulseaudio はそのまま使えないので、

PULSEAUDIO_SYSTEM_START=1
DISALLOW_MODULE_LOADING=0

として置き換え (#718207)。 さらに /etc/pulse/daemon.conf で daemonize = yes を設定。 これで pulseaudio がシステムデーモンとして起動するようになったけど、各ユーザの pulseaudio が起動しないように、~/.pulse/client.conf に、

autospawn = no

と指定。ここで音を鳴らそうとするけど syslog に

[pulseaudio] protocol-native.c: Denied access to client with invalid authentication data.

となって音が出ない。どうやら /var/run/pulse/.config/pulse/cookie が認証情報らしい。これを ~/.pulse/ にコピーして ~/.pulse/client.conf に、

cookie-file = /home/XXXXXXXX/.pulse/cookie

としてやると、各ユーザで同時に音を鳴らせるようになった。 参考情報: