mpdでシンボリックリンクを使う

以前、シングルボードコンピュータ Orange Pi One で、ミュージックサーバを構築しました。

以来、運用し続けているのですが、今回ファイルサーバの音楽データも再生したくなり、シンボリックリンクを張ることにしたのですが、若干ハマったのでメモします。

結論

mpd で作成するファイルをシンボリックリンクで設定する際は、ファイルに実行権限を付与しましょう。

設定概要

mpd は Music Player Daemon(ミュージック・プレイヤ・デーモン)の略で、ミュージックサーバ本体になります。

mpd 本体のインストール方法は下記記事をご参照ください。

Armbianでミュージックサーバ – あららぼ

今までは mpd 標準のディレクトリ /var/lib/mpd/music 配下に音楽ファイル(flac とか mp3)を置いていましたが、ファイルが増えてくるとファイルサーバ経由で再生したい...と思うようになりました。
そこで、一部ファイルをファイルサーバ経由で再生するように設定します。

  • ローカルの音楽ファイル
    /var/lib/mpd/music
  • ファイルサーバの音楽ファイル
    /var/lib/mpd/music/radio

設定

ローカルの音楽ファイルに加えて、シンボリックリンクでファイルサーバの音楽ファイルを再生できるように設定します。

シンボリックリンクを作成

mpd で再生するデータをシンボリックリンクで設定します。
*今回は標準のデータディレクトリ /var/lib/mpd/music/music 配下にシンボリックリンク(radio)を作成しています。

# ln -s /media/DIRECTORY/Music/ /var/lib/mpd/music/music/radio

# ls -lh /var/lib/mpd/music/music/
lrwxrwxrwx  1 root root   23 Dec 18 05:03  radio -> /media/DIRECTORY/Music/

mpd 設定ファイル(mpd.conf)を修正

mpd はデフォルトでシンボリックリンクが無効なので、シンボリックリンク設定を有効(yes)にします。
follow_outside_symlinks はデータディレクトリ内であれば不要です。
(今回のようにデータディレクトリ配下にシンボリックリンクを張る際は不要です)。

下記、mpd.conf の設定変更例。

# diff -u /root/mpd.conf_bk20221218 /etc/mpd.conf 
--- /root/mpd.conf_bk20221218 2022-12-18 05:27:29.889005891 +0000
+++ /etc/mpd.conf 2022-12-18 06:01:29.538341944 +0000
@@ -136,12 +136,12 @@
 # If this setting is set to "yes", MPD will discover audio files by following
 # symbolic links outside of the configured music_directory.
 #
-#follow_outside_symlinks "yes"
+follow_outside_symlinks  "yes"
 #
 # If this setting is set to "yes", MPD will discover audio files by following
 # symbolic links inside of the configured music_directory.
 #
-#follow_inside_symlinks    "yes"
+follow_inside_symlinks   "yes"
 #
 ###############################################################################

サービス再起動

mpd.conf を変更した後はサービス再起動が必要です。

# sudo service mpd restart

mpd データベース更新

読み込む音楽ファイルが変更になった際はデータベースを更新する必要があります。

# mpc update

なお、mpc コマンドが無い場合は、下記コマンドで追加します。

# sudo apt install mpc -y

エラーになったら

最初、mpd で設定したシンボリックリンクを表示できず、悩みました。
mpd のステータスを見てみたら Permission denied...。つまり権限不足でした。(read 権限だけだと NG)

# service mpd status
● mpd.service - Music Player Daemon
   Loaded: loaded (/lib/systemd/system/mpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2022-12-18 09:20:05 UTC; 4min 43s ago
     Docs: man:mpd(1)
           man:mpd.conf(5)
           file:///usr/share/doc/mpd/user-manual.html
 Main PID: 814 (mpd)
    Tasks: 3 (limit: 905)
   Memory: 35.9M
   CGroup: /system.slice/mpd.service
           └─814 /usr/bin/mpd --no-daemon

Dec 18 09:20:00 orangepione systemd[1]: Starting Music Player Daemon...
Dec 18 09:20:05 orangepione mpd[814]: Dec 18 09:20 : exception: Failed to access /media/DIRECTORY/Music: Permission denied
Dec 18 09:20:05 orangepione systemd[1]: Started Music Player Daemon.

mpd で読み込むには実行権限が必要です。
下記、権限追加後のステータス。

# service mpd status
● mpd.service - Music Player Daemon
   Loaded: loaded (/lib/systemd/system/mpd.service; enabled; vendor preset: enabled)
   Active: active (running) since Sun 2022-12-18 09:30:13 UTC; 31s ago
     Docs: man:mpd(1)
           man:mpd.conf(5)
           file:///usr/share/doc/mpd/user-manual.html
 Main PID: 805 (mpd)
    Tasks: 3 (limit: 905)
   Memory: 35.9M
   CGroup: /system.slice/mpd.service
           └─805 /usr/bin/mpd --no-daemon

Dec 18 09:30:08 orangepione systemd[1]: Starting Music Player Daemon...
Dec 18 09:30:13 orangepione systemd[1]: Started Music Player Daemon.

コメントする