10. 아이튠즈 서버 설치하기 [NAS 구축기][ubuntu 10.4]

얼렁뚱땅설명서 2012. 3. 5. 15:23


지금까지는 NAS의 가장 기본 기능을 끝냈다.
Samba 서버를 이용하여, 언제 어디서나 네트워크 드라이브로 설정할 수 있는 기능을 완성했으며,
덤으로 SSH나 FTP 서버도 설치했다. 
그럼 이제부터, 재미있는 기능들을 설치해 보도록 하자.

처음은 아이튠즈 서버다.  리눅스용 아이튠즈 서버는 firefly(or mt-daapd)가 있다.  apple의 DAAP(Digital Audio Access Protocol)를 구현한 것으로, PC의 아이튠즈나 아이폰, 안드로이드 등에서 사용할 수 있다.


root@Team4Svr:~# apt-get install dpkg-dev
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음 새 패키지가 전에 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  x11vnc xvnc4viewer tk freenx-session-launcher expect freenx-rdp libvncserver0 freenx-smb freenx-vnc tcl tcl8.5
  freenx-server
이들을 지우기 위해서는 'apt-get autoremove'를 사용하십시오.
다음 패키지를 더 설치할 것입니다:
  build-essential g++ g++-4.4 libstdc++6-4.4-dev xz-utils
제안하는 패키지:
  debian-keyring debian-maintainers g++-multilib g++-4.4-multilib gcc-4.4-doc libstdc++6-4.4-dbg
  libstdc++6-4.4-doc
다음 새 패키지를 설치할 것입니다:
  build-essential dpkg-dev g++ g++-4.4 libstdc++6-4.4-dev xz-utils
0개 업그레이드, 6개 새로 설치, 0개 지우기 및 0개 업그레이드 안 함.
8,174k바이트 아카이브를 받아야 합니다.
이 작업 후 26.2M바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까 [Y/n]?
받기:1 http://ftp.daum.net/ubuntu/ lucid/main libstdc++6-4.4-dev 4.4.3-4ubuntu5 [1,522kB]
받기:2 http://ftp.daum.net/ubuntu/ lucid/main g++-4.4 4.4.3-4ubuntu5 [5,756kB]
받기:3 http://ftp.daum.net/ubuntu/ lucid/main g++ 4:4.4.3-1ubuntu1 [1,450B]
받기:4 http://ftp.daum.net/ubuntu/ lucid/main xz-utils 4.999.9beta+20091116-1 [233kB]
받기:5 http://ftp.daum.net/ubuntu/ lucid-updates/main dpkg-dev 1.15.5.6ubuntu4.5 [654kB]
받기:6 http://ftp.daum.net/ubuntu/ lucid/main build-essential 11.4build1 [7,278B]
내려받기 8,174k바이트, 소요시간 1초 (6,234k바이트/초)
전에 선택하지 않은 libstdc++6-4.4-dev 패키지를 선택합니다.
(데이터베이스 읽는중 ...현재 128781개의 파일과 디렉토리가 설치되어 있습니다.)
libstdc++6-4.4-dev 패키지를 푸는 중입니다 (.../libstdc++6-4.4-dev_4.4.3-4ubuntu5_amd64.deb에서) ...
전에 선택하지 않은 g++-4.4 패키지를 선택합니다.
g++-4.4 패키지를 푸는 중입니다 (.../g++-4.4_4.4.3-4ubuntu5_amd64.deb에서) ...
전에 선택하지 않은 g++ 패키지를 선택합니다.
g++ 패키지를 푸는 중입니다 (.../g++_4%3a4.4.3-1ubuntu1_amd64.deb에서) ...
전에 선택하지 않은 xz-utils 패키지를 선택합니다.
xz-utils 패키지를 푸는 중입니다 (.../xz-utils_4.999.9beta+20091116-1_amd64.deb에서) ...
전에 선택하지 않은 dpkg-dev 패키지를 선택합니다.
dpkg-dev 패키지를 푸는 중입니다 (.../dpkg-dev_1.15.5.6ubuntu4.5_all.deb에서) ...
전에 선택하지 않은 build-essential 패키지를 선택합니다.
build-essential 패키지를 푸는 중입니다 (.../build-essential_11.4build1_amd64.deb에서) ...
man-db에 대한 트리거를 처리하는 중입니다 ...
xz-utils (4.999.9beta+20091116-1) 설정하는 중입니다 ...
dpkg-dev (1.15.5.6ubuntu4.5) 설정하는 중입니다 ...
libstdc++6-4.4-dev (4.4.3-4ubuntu5) 설정하는 중입니다 ...
g++-4.4 (4.4.3-4ubuntu5) 설정하는 중입니다 ...
g++ (4:4.4.3-1ubuntu1) 설정하는 중입니다 ...
update-alternatives: /usr/bin/g++ 사용해서 자동 모드에서 /usr/bin/c++ (c++) 제공.

build-essential (11.4build1) 설정하는 중입니다 ...
root@Team4Svr:~# apt-get install avahi-daemon
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
avahi-daemon 패키지는 이미 최신 버전입니다.
다음 새 패키지가 전에 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  x11vnc xvnc4viewer tk freenx-session-launcher expect freenx-rdp libvncserver0 freenx-smb freenx-vnc tcl tcl8.5
  freenx-server
이들을 지우기 위해서는 'apt-get autoremove'를 사용하십시오.
0개 업그레이드, 0개 새로 설치, 0개 지우기 및 0개 업그레이드 안 함.
root@Team4Svr:~# apt-get install libgdbm-dev libid3tag0-dev
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음 새 패키지가 전에 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  x11vnc xvnc4viewer tk freenx-session-launcher expect freenx-rdp libvncserver0 freenx-smb freenx-vnc tcl tcl8.5
  freenx-server
이들을 지우기 위해서는 'apt-get autoremove'를 사용하십시오.
다음 패키지를 더 설치할 것입니다:
  libid3tag0 zlib1g-dev
다음 새 패키지를 설치할 것입니다:
  libgdbm-dev libid3tag0 libid3tag0-dev zlib1g-dev
0개 업그레이드, 4개 새로 설치, 0개 지우기 및 0개 업그레이드 안 함.
287k바이트 아카이브를 받아야 합니다.
이 작업 후 950k바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까 [Y/n]?
받기:1 http://ftp.daum.net/ubuntu/ lucid/main libgdbm-dev 1.8.3-9 [38.4kB]
받기:2 http://ftp.daum.net/ubuntu/ lucid/main libid3tag0 0.15.1b-10build2 [39.6kB]
받기:3 http://ftp.daum.net/ubuntu/ lucid/main zlib1g-dev 1:1.2.3.3.dfsg-15ubuntu1 [167kB]
받기:4 http://ftp.daum.net/ubuntu/ lucid/main libid3tag0-dev 0.15.1b-10build2 [41.6kB]
내려받기 287k바이트, 소요시간 0초 (874k바이트/초)
전에 선택하지 않은 libgdbm-dev 패키지를 선택합니다.
(데이터베이스 읽는중 ...현재 129763개의 파일과 디렉토리가 설치되어 있습니다.)
libgdbm-dev 패키지를 푸는 중입니다 (.../libgdbm-dev_1.8.3-9_amd64.deb에서) ...
전에 선택하지 않은 libid3tag0 패키지를 선택합니다.
libid3tag0 패키지를 푸는 중입니다 (.../libid3tag0_0.15.1b-10build2_amd64.deb에서) ...
전에 선택하지 않은 zlib1g-dev 패키지를 선택합니다.
zlib1g-dev 패키지를 푸는 중입니다 (.../zlib1g-dev_1%3a1.2.3.3.dfsg-15ubuntu1_amd64.deb에서) ...
전에 선택하지 않은 libid3tag0-dev 패키지를 선택합니다.
libid3tag0-dev 패키지를 푸는 중입니다 (.../libid3tag0-dev_0.15.1b-10build2_amd64.deb에서) ...
man-db에 대한 트리거를 처리하는 중입니다 ...
libgdbm-dev (1.8.3-9) 설정하는 중입니다 ...
libid3tag0 (0.15.1b-10build2) 설정하는 중입니다 ...

zlib1g-dev (1:1.2.3.3.dfsg-15ubuntu1) 설정하는 중입니다 ...
libid3tag0-dev (0.15.1b-10build2) 설정하는 중입니다 ...
libc-bin에 대한 트리거를 처리하는 중입니다 ...
ldconfig deferred processing now taking place
root@Team4Svr:~# apt-get install libsqlite0
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
libsqlite0 패키지는 이미 최신 버전입니다.
다음 새 패키지가 전에 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  x11vnc xvnc4viewer tk freenx-session-launcher expect freenx-rdp libvncserver0 freenx-smb freenx-vnc tcl tcl8.5
  freenx-server
이들을 지우기 위해서는 'apt-get autoremove'를 사용하십시오.
0개 업그레이드, 0개 새로 설치, 0개 지우기 및 0개 업그레이드 안 함.
root@Team4Svr:~# apt-get install libsqlite0-dev
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음 새 패키지가 전에 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  x11vnc xvnc4viewer tk freenx-session-launcher expect freenx-rdp libvncserver0 freenx-smb freenx-vnc tcl tcl8.5
  freenx-server
이들을 지우기 위해서는 'apt-get autoremove'를 사용하십시오.
제안하는 패키지:
  sqlite-doc
다음 새 패키지를 설치할 것입니다:
  libsqlite0-dev
0개 업그레이드, 1개 새로 설치, 0개 지우기 및 0개 업그레이드 안 함.
234k바이트 아카이브를 받아야 합니다.
이 작업 후 770k바이트의 디스크 공간을 더 사용하게 됩니다.
받기:1 http://ftp.daum.net/ubuntu/ lucid/main libsqlite0-dev 2.8.17-6build2 [234kB]
내려받기 234k바이트, 소요시간 0초 (1,979k바이트/초)
전에 선택하지 않은 libsqlite0-dev 패키지를 선택합니다.
(데이터베이스 읽는중 ...현재 129857개의 파일과 디렉토리가 설치되어 있습니다.)
libsqlite0-dev 패키지를 푸는 중입니다 (.../libsqlite0-dev_2.8.17-6build2_amd64.deb에서) ...
libsqlite0-dev (2.8.17-6build2) 설정하는 중입니다 ...
root@Team4Svr:~# apt-get install gawk
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
gawk 패키지는 이미 최신 버전입니다.
다음 새 패키지가 전에 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  x11vnc xvnc4viewer tk freenx-session-launcher expect freenx-rdp libvncserver0 freenx-smb freenx-vnc tcl tcl8.5
  freenx-server
이들을 지우기 위해서는 'apt-get autoremove'를 사용하십시오.
0개 업그레이드, 0개 새로 설치, 0개 지우기 및 0개 업그레이드 안 함.
root@Team4Svr:~#
root@Team4Svr:~# apt-get install gcc
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
gcc 패키지는 이미 최신 버전입니다.
다음 새 패키지가 전에 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  x11vnc xvnc4viewer tk freenx-session-launcher expect freenx-rdp libvncserver0 freenx-smb freenx-vnc tcl tcl8.5
  freenx-server
이들을 지우기 위해서는 'apt-get autoremove'를 사용하십시오.
0개 업그레이드, 0개 새로 설치, 0개 지우기 및 0개 업그레이드 안 함.
root@Team4Svr:~# apt-get install mt-daapd
패키지 목록을 읽는 중입니다... 완료
의존성 트리를 만드는 중입니다
상태 정보를 읽는 중입니다... 완료
다음 새 패키지가 전에 자동으로 설치되었지만 더 이상 필요하지 않습니다:
  x11vnc xvnc4viewer tk freenx-session-launcher expect freenx-rdp libvncserver0 freenx-smb freenx-vnc tcl tcl8.5
  freenx-server
이들을 지우기 위해서는 'apt-get autoremove'를 사용하십시오.
다음 패키지를 더 설치할 것입니다:
  javascript-common libavcodec52 libavformat52 libavutil49 libgsm1 libjs-prototype libjs-scriptaculous
  libschroedinger-1.0-0 libtagc0 wwwconfig-common
제안하는 패키지:
  apache2 httpd mysql-client postgresql-client apache apache-ssl
다음 새 패키지를 설치할 것입니다:
  javascript-common libavcodec52 libavformat52 libavutil49 libgsm1 libjs-prototype libjs-scriptaculous
  libschroedinger-1.0-0 libtagc0 mt-daapd wwwconfig-common
0개 업그레이드, 11개 새로 설치, 0개 지우기 및 0개 업그레이드 안 함.
3,374k바이트 아카이브를 받아야 합니다.
이 작업 후 9,744k바이트의 디스크 공간을 더 사용하게 됩니다.
계속 하시겠습니까 [Y/n]?
받기:1 http://ftp.daum.net/ubuntu/ lucid/universe wwwconfig-common 0.2.1 [22.8kB]
받기:2 http://ftp.daum.net/ubuntu/ lucid/universe javascript-common 7 [3,854B]
받기:3 http://ftp.daum.net/ubuntu/ lucid-updates/main libavutil49 4:0.5.1-1ubuntu1.3 [65.8kB]
받기:4 http://ftp.daum.net/ubuntu/ lucid/main libgsm1 1.0.13-3 [29.3kB]
받기:5 http://ftp.daum.net/ubuntu/ lucid/main libschroedinger-1.0-0 1.0.9.is.1.0.8-0ubuntu1 [213kB]
받기:6 http://ftp.daum.net/ubuntu/ lucid-updates/main libavcodec52 4:0.5.1-1ubuntu1.3 [2,207kB]
받기:7 http://ftp.daum.net/ubuntu/ lucid-updates/main libavformat52 4:0.5.1-1ubuntu1.3 [372kB]
받기:8 http://ftp.daum.net/ubuntu/ lucid/universe libjs-prototype 1.6.1-1 [34.9kB]
받기:9 http://ftp.daum.net/ubuntu/ lucid/universe libjs-scriptaculous 1.8.3-1 [127kB]
받기:10 http://ftp.daum.net/ubuntu/ lucid-updates/main libtagc0 1.6.3-0ubuntu1 [14.3kB]
받기:11 http://ftp.daum.net/ubuntu/ lucid/universe mt-daapd 0.9~r1696.dfsg-15build1 [284kB]
내려받기 3,374k바이트, 소요시간 1초 (2,525k바이트/초)
전에 선택하지 않은 wwwconfig-common 패키지를 선택합니다.
(데이터베이스 읽는중 ...현재 129866개의 파일과 디렉토리가 설치되어 있습니다.)
wwwconfig-common 패키지를 푸는 중입니다 (.../wwwconfig-common_0.2.1_all.deb에서) ...
전에 선택하지 않은 javascript-common 패키지를 선택합니다.
javascript-common 패키지를 푸는 중입니다 (.../javascript-common_7_all.deb에서) ...
전에 선택하지 않은 libavutil49 패키지를 선택합니다.
libavutil49 패키지를 푸는 중입니다 (.../libavutil49_4%3a0.5.1-1ubuntu1.3_amd64.deb에서) ...
전에 선택하지 않은 libgsm1 패키지를 선택합니다.
libgsm1 패키지를 푸는 중입니다 (.../libgsm1_1.0.13-3_amd64.deb에서) ...
전에 선택하지 않은 libschroedinger-1.0-0 패키지를 선택합니다.
libschroedinger-1.0-0 패키지를 푸는 중입니다 (.../libschroedinger-1.0-0_1.0.9.is.1.0.8-0ubuntu1_amd64.deb에서) ...
전에 선택하지 않은 libavcodec52 패키지를 선택합니다.
libavcodec52 패키지를 푸는 중입니다 (.../libavcodec52_4%3a0.5.1-1ubuntu1.3_amd64.deb에서) ...
전에 선택하지 않은 libavformat52 패키지를 선택합니다.
libavformat52 패키지를 푸는 중입니다 (.../libavformat52_4%3a0.5.1-1ubuntu1.3_amd64.deb에서) ...
전에 선택하지 않은 libjs-prototype 패키지를 선택합니다.
libjs-prototype 패키지를 푸는 중입니다 (.../libjs-prototype_1.6.1-1_all.deb에서) ...
전에 선택하지 않은 libjs-scriptaculous 패키지를 선택합니다.
libjs-scriptaculous 패키지를 푸는 중입니다 (.../libjs-scriptaculous_1.8.3-1_all.deb에서) ...
전에 선택하지 않은 libtagc0 패키지를 선택합니다.
libtagc0 패키지를 푸는 중입니다 (.../libtagc0_1.6.3-0ubuntu1_amd64.deb에서) ...
전에 선택하지 않은 mt-daapd 패키지를 선택합니다.
mt-daapd 패키지를 푸는 중입니다 (.../mt-daapd_0.9~r1696.dfsg-15build1_amd64.deb에서) ...
man-db에 대한 트리거를 처리하는 중입니다 ...
ureadahead에 대한 트리거를 처리하는 중입니다 ...
ureadahead will be reprofiled on next reboot
wwwconfig-common (0.2.1) 설정하는 중입니다 ...
javascript-common (7) 설정하는 중입니다 ...

libavutil49 (4:0.5.1-1ubuntu1.3) 설정하는 중입니다 ...

libgsm1 (1.0.13-3) 설정하는 중입니다 ...

libschroedinger-1.0-0 (1.0.9.is.1.0.8-0ubuntu1) 설정하는 중입니다 ...

libavcodec52 (4:0.5.1-1ubuntu1.3) 설정하는 중입니다 ...

libavformat52 (4:0.5.1-1ubuntu1.3) 설정하는 중입니다 ...

libjs-prototype (1.6.1-1) 설정하는 중입니다 ...
libjs-scriptaculous (1.8.3-1) 설정하는 중입니다 ...
libtagc0 (1.6.3-0ubuntu1) 설정하는 중입니다 ...

mt-daapd (0.9~r1696.dfsg-15build1) 설정하는 중입니다 ...
Starting mt-daapd: mt-daapd.

libc-bin에 대한 트리거를 처리하는 중입니다 ...
ldconfig deferred processing now taking place
root@Team4Svr:~#
root@Team4Svr:~# service mt-daapd stop
Stopping mt-daapd: mt-daapd.
Waiting for mt-daapd to terminate.....OK, all clear.

root@Team4Svr:~# vi /etc/mt-daapd.conf

...
...
#
# admin_pw (required)
#
# This is the password to the administrative pages
#

admin_pw = input password
...
...
#
# mp3_dir (required)
#
# Location of the mp3 files to share.  Note that because the
# files are stored in the database by inode, these must be
# in the same physical filesystem.
#

mp3_dir = /DataCenter/Music
...
...

root@Team4Svr:~# service mt-daapd start


이렇게 하면 아이튠즈에서 아이튠즈 서버가 보인다.  
그러나, 한참을 기다려도 음악파일 목록 따위는 보이지 않고, 뺑글뺑글 돌아가는 서버이름만.....ㅡ.ㅜ
아이튠즈 10.5 이상은 패치를 해야만 한다.



패치 방법은 아래와 같다. 
이번엔 길어서 패치과정을 뺐다.

root@Team4Svr:~# service mt-daapd stop
root@Team4Svr:~# aptitude install gpa devscripts debhelper dpatch libflac-dev libvorbis-dev libmpcdec-dev libavcodec-dev libavformat-dev libid3tag0-dev libtagc0-dev libavahi-client-dev libsqlite3-dev libjs-prototype libjs-scriptaculous avahi-daemon autotools-dev
....
....
root@Team4Svr:~# mkdir ~/mt-daapd
root@Team4Svr:~# cd ~/mt-daapd
root@Team4Svr:~# apt-get source mt-daapd
...
...
...

root@Team4Svr:~# cd ~/mt-daapd/mt-daapd-0.9~r1696.dfsg/debian/patches/
root@Team4Svr:~# wget http://www.zero-factorial.com/coding/21_itunes10.5.dpatch
root@Team4Svr:~# echo 21_itunes10.5.dpatch >> 00list
root@Team4Svr:~# cd ../..
root@Team4Svr:~# dch -i "Fix for iTunes 10"
root@Team4Svr:~# debuild -us -uc
...
...
...
root@Team4Svr:~# cd ../../..
root@Team4Svr:~# sudo dpkg -i mt-daapd_0.9~r1696.dfsg-15build2_amd64.deb
...
...
root@Team4Svr:~# service mt-daapd start

 

위와 같이 작업하면 일단 아이튠즈에서 서버가 떠있는 것은 확인할 수 있다. 아이튠즈 서버 관리는 웹브라우저를 통해서도 가능하다.
아이피 주소와 포트번호만 넣어주면 된다. 본인의 경우는 http://192.168.10.5:3689 로 입력하였다. 
 그러면 아래와 같은 화면을 볼 수 있을 것이다. 
사용자 이름은 admin 비밀번호는  mt-daapd.conf 에서 입력한 패스워드를 입력하면 된다.


일단, configuration 항목에 가서 Music Folder의 위치를 입력한다.
여기까지만해도 아이튠즈에서 음악파일 목록을 확인할 수 있을 것이다.


Smart playlists로 음악파일의 목록을 만들어주면, 좀더 심플한 목록을 볼 수 있지만..
이 작업은 노가다가 심하다는 단점이 있다. ㅡㅡ;;
나중에 이것을 어떻게 간단하게 만들어 줄수 있는지 연구(?)해 볼 참이다.



위의 작업이 끝났으면 아래와 같이 아이튠즈에서도, iPhone에서도, 안드로이드에서도 우리의 홈서버가 보유하고 있는 모든 음악을 서비스 받을 수 있다.