[分享] 不必啟動iTunes也能分享iTunes的音樂 - mt-daapd

*本文同步發表於我的暴露格

事情的開始又是在01上看到這篇『在 linux 上 架設 iTunes Server』的分享,用的是套叫做『mt-daapd』的*nix套件。咦?竟然有OSX的說明文件耶?在OSX上裝這個,會不會有點...嗯...奇怪?OSX上不是可以直接跑iTunes來分享嗎?是沒錯,可是這樣就必須隨時把iTunes開著...開玩笑,有文字模式,槓嘛要弄個GUI來浪費資源?當然還是CLI萬萬歲啦。

根據mt-daapd站上的說明文件,要在OSX上安裝mt-daapd,步驟如下:

  1. mt-daapd站上下載最新的tarball檔,回來準備自己編譯。

  2. 安裝Fink:Fink是OSX與廣大*nix軟體間的橋樑,透過Fink,可以輕易地(如果不要發生一堆莫名其妙的相依性問題Orz)安裝與管理文字模式的軟體套件。Fink的安裝可以參考這裡

  3. 用Fink安裝libid3tag與gdbm3兩個套件:
    % fink install libid3tag
    % fink install gdbm3


  4. 把上述套件安裝妥後,把mt-daapd的tarball解出來,進到解出的目錄,開始進行編譯:
    % ./configure --with-id3tag=/sw --with-gdbm-includes=/sw/includes --with-gdbm-libs=/sw/lib
    % sudo make
    % sudo make install


  5. 現行0.2.4版的intall script在OSX上好像不會自己把所有該建的目錄、該複製的檔案弄好,所以得自己來:
    % sudo mkdir /etc/mt-daapd
    % sudo cp contrib/mt-daapd.conf /etc/mt-daapd/
    % sudo cp contrib/mt-daapd.playlist /etc/mt-daapd/


  6. 修改/etc/mt-daapd/mt-daapd.conf,這是mt-daapd的設定檔,主要要改的部份如下(其他的用預設值就可):
    # the location for the db files
    db_dir /var/cache/mt-daapd

    # change the freakin' default password
    admin_pw put_top_secret_admin_pass_here

    # put whatever directory you want here. No trailing slash and no spaces! (no you can't use backslashes to make this work!)
    mp3_dir /Volumes/Decoy/iTunes/iTunes Music

    # Set the servername for Rendezvous/Bonjour
    servername G3BW500


  7. /etc/mt-daapd/mt-daapd.conf裡的『db_dir』參數所指定的目錄,也別忘了要手動建立,否則mt-daapd跑不起來(也不會自己去建):
    % sudo mkdir /var/cache
    % sudo mkdir /var/cache/mt-daapd


  8. 因為我的OSX上也裝了有iTunes,所以『mp3_dir』指向的目錄就是iTunes Music檔案夾的位置,這樣也可以方便用iTunes來管理歌曲。
  9. 接著可以先來測試一下是否可以順利分享了:
    % /usr/local/sbin/mt-daapd -c /etc/mt-daapd/mt-daapd.conf

    啟動另一部PC或Mac上的iTunes,如果在左邊sidebar看到先前設定的servername出現,那就成功了。

  10. 接著是最後的仕上 - 設定StartupItems,讓mt-daapd可以在開機後自動啟動。這需要先在/Library/StartupItems下新增一個目錄,並在其下準備兩個檔案:
    % sudo mkdir /Library/StartupItems/mt-daapd
    % sudo touch /Library/StartupItems/mt-daapd/mt-daapd
    % sudo touch /Library/StartupItems/mt-daapd/StartupParameters.plist

    mt-daapd的檔案權限是755,內容如下:
    #!/bin/sh

    . /etc/rc.common

    StartService ()
    {
    ConsoleMessage "Starting mt-daapd"
    /usr/local/sbin/mt-daapd -c /etc/mt-daapd/mt-daapd.conf
    }

    StopService ()
    {
    ConsoleMessage "Stopping mt-daapd"
    killall mt-daapd
    }

    RestartService ()
    {
    StopService
    StartService
    }

    RunService "$1"

    StartupParameters.plist的內容如下:
    {
    Description = "mt-daapd iTunes server";
    Provides = ("mt-daapd");
    Require = ("Disks", "Resolver", "Network");
    Uses = ("Network", "mDNSResponder");
    OrderPreference = "Last";
    Messages =
    {
    start = "Starting mt-daapd";
    stop = "Stopping mt-daapd";
    restart = "Reloading mt-daapd";
    };
    }


原本安裝的步驟到此就完成,但是我自己卻卡在最後StartupItems的地方,怎麼弄就是無法自動啟動mt-daapd,但是在Terminal手動執行(步驟9)卻很正常,以SystemStarter指令測試步驟10的StartupItems也OK。
% sudo SystemStarter start mt-daapd

搞了一天,做了各種測試與檢查,最後發現問題是出在我把『mp3_dir』設在非啟動磁碟上(而且是被ATA界面卡模擬成SCSI磁碟);而OSX從Panther開始,就不會在有使用者登入GUI前,掛載任何非啟動磁碟的非IDE磁碟或分割區(相對地也會在使用者登出GUI後卸載這類非IDE磁碟或分割區)。所以在mt-daapd的StartupItems被執行時,mp3_dir指向的磁區尚未被掛上來,當然mt-daapd就立即退出了。解決之道只需要一行,只要在Terminal執行:
sudo defaults write /Library/Preferences/SystemConfiguration/autodiskmount AutomountDisksWithoutUserLogin -bool true
2006-04-03 13:57 發佈
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?