Debian 8.0 jessieでMediaTombをコンパイルするとうまくコンパイルができない。割とありがちなgccの絡みらしい。とりあえずぐぐった事をベースにパッチを書く。
../src/zmm/object.h:51:39: error: expected ‘)’ before ‘size’ static void* operator new (size_t size); ^ Makefile:1394: recipe for target 'libmediatomb_a-autoscan.o' failed make[2]: *** [libmediatomb_a-autoscan.o] Error 1 make[2]: Leaving directory '/usr/local/src/mediatomb-0.12.1/build' Makefile:434: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory '/usr/local/src/mediatomb-0.12.1' Makefile:360: recipe for target 'all' failed make: *** [all] Error 2
../src/hash/dbo_hash.h:139:26: note: use ‘this->search’ instead Makefile:1408: recipe for target 'libmediatomb_a-autoscan_inotify.o' failed make[2]: *** [libmediatomb_a-autoscan_inotify.o] Error 1 make[2]: Leaving directory '/usr/local/src/mediatomb-0.12.1/build' Makefile:434: recipe for target 'all-recursive' failed make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory '/usr/local/src/mediatomb-0.12.1' Makefile:360: recipe for target 'all' failed make: *** [all] Error 2
パッチはこちら。mediatomb-0.12.1-gcc.patch
パッチ適用+コンパイルは概ね下記のような感じ。
$ wget -O mediatomb-0.12.1.tar.gz? "http://downloads.sourceforge.net/project/mediatomb/MediaTomb/0.12.1/mediatomb-0.12.1.tar.gz?r=http%3A%2F%2Fmediatomb.cc%2Fpages%2Fdownload&ts=1471868024&use_mirror=jaist" $ wget -O mediatomb-0.12.1-gcc.patch "http://blog.nogisawa.net/wp-content/uploads/2016/08/mediatomb-0.12.1-gcc.patch_.txt" $ tar zvxf mediatomb-0.12.1.tar.gz $ patch -p0 < mediatomb-0.12.1-gcc.patch $ cd mediatomb-0.12.1 $ ./configure --prefix=/usr/local $ make $ su - # make install
あとSystemdに登録する時は/etc/systemd/system/mediatomb.serviceというファイルを新規で作成。下記のような内容を書き込んでsystemd enable mediatombをすると登録される。
(mediatombユーザーも作成)
[Unit] Description = MediaTomb [Service] ExecStart = /usr/local/bin/mediatomb -c /etc/mediatomb/config.xml -d -u mediatomb -g mediatomb -P /var/run/mediatomb.pid -l /var/log/mediatomb.log -p 50500 Restart = always KillMode = process [Install] WantedBy = multi-user.target
ちなみに一度登録するとmediatomb.serviceを書き換えても反映されないので一旦disableで登録を解除してからenableで再登録する必要があるらしい。