ネットワーキングとサウンド(ALSA)の両方を使用するサービスがあり、それを使用してシステムシステムサービスを作成しようとしています。ユーザーサービスとして機能しますが、システムサービスとして機能させることはできません。
dbus-run-session[16623]: ALSA lib pulse.c:242:(pulse_connect) PulseAudio: Unable to connect:
dbus-run-session[16623]: Alsa error PCM open ALSA function 'snd_pcm_open' failed with error 'ECONNREFUSED: Connection refused'
dbus-run-session[16623]: Could not start audio: Alsa error: PCM open failed
これが私が今まで持っているものです。これはテンプレートセルで、パラメータは私のユーザー名です。サンドボックス設定をコメントアウトします。
# /etc/systemd/system/[email protected]
[Unit]
Description=A spotify playing daemon
Documentation=https://github.com/Spotifyd/spotifyd
Wants=sound.target
After=sound.target
Wants=network-online.target
After=network-online.target
[Service]
User=%i
Type=exec
ExecStart=/usr/bin/dbus-run-session /usr/local/bin/spotifyd --no-daemon
Restart=always
RestartSec=12
ProtectSystem=full
#ProtectSystem=strict
#ProtectHome=tmpfs
#TemporaryFileSystem=/home/%i
#BindPaths=/home/%i/.config/pulse
#BindReadOnlyPaths=/home/%i/.local/share/
#ProtectHome=read-only
#ReadWritePaths=/home/%i/.config/pulse
#ReadOnlyPaths=/home/%i/.local/share/
#PrivateTmp=true
#NoNewPrivileges=true
[Install]
WantedBy=default.target
コメント:
- このデーモンはパルスオーディオをサポートするようにコンパイルされておらず、ALSAのみをサポートしています。これが重要かどうかはわかりません。
dbus-run-session
それ以外の場合はd-bus名を登録するため、起動時に失敗します。- オンラインのネットワークに頼ることができるので、ユーザーサービスではなくシステムサービスを好みます。
- 私のユーザーと一緒にサービスを実行していますが、d-bus / MPRISが機能している限り、新しいユーザーになることもできます。
- PulseAudio/ALSAをシステムサービスとして実行したくありません。
- グループ=オーディオが機能しません
それでは、オーディオ設定に何が問題なのでしょうか?システムサービスを通常のアカウントに切り替えると、ユーザーサービスと同じ結果が得られます。
答え1
システムサービスを通常のアカウントに切り替えると、ユーザーサービスと同じ結果が得られます。
共有されていないものがありますが、環境はそうです。
これは ALSA に正常にアクセスするために必要です。 (源泉:https://askubuntu.com/questions/70560/why-am-i-getting-this-connection-to-pulseaudio-failed-error)
Environment=XDG_RUNTIME_DIR=/run/user/1000
これにより、ユーザーサービスとして実行する必要があることに気づきました。システムサービスとユーザーセッションのライフサイクルが一致しません。