Installation instructions for forked-daapd ------------------------------------------ This document contains instructions for installing forked-daapd from the git tree. System-specific requirements: - Linux: + glibc 2.9+ (for signalfd) + libasound (ALSA sound support - or you can use OSS4) - FreeBSD: + OSS4 sound support + libiconv Tools required: - autotools-dev - autoconf - libtool - gettext - gawk - gperf Libraries: - libantlr3c (ANTLR3 C runtime, version 3.2 for tarball builds) from - Avahi client libraries (avahi-client), 0.6.24 minimum from - sqlite3 3.5.0+ with unlock notify API enabled (read below) from - libav 0.6.x - 0.8.x (or ffmpeg 0.5.x - 0.10.x) from - libconfuse from - libevent 1.4 (** NOT libevent 2 **) from - libavl /!\ Read below - MiniXML (aka mxml or libmxml) from - gcrypt 1.2.0+ from - zlib from - libunistring 0.9.3+ from - libflac (optional - FLAC support) from - taglib (optional - Musepack support) from - libplist 0.16+ (optional - iTunes XML support) from If using binary packages, remember that you need the development packages to build forked-daapd (usually named -dev or -devel). libavl is not the GNU libavl. There doesn't seem to be an upstream website anymore, but you'll find the source tarball alongside the forked-daapd release tarballs (see below for the URL). Alternatively, you can fetch it from any Debian mirror, too (it'll be in /debian/pool/main/liba/libavl). sqlite3 needs to be built with support for the unlock notify API; this isn't always the case in binary packages, so you may need to rebuild sqlite3 to enable the unlock notify API (you can check for the presence of the sqlite3_unlock_notify symbol in the sqlite3 library). Refer to the sqlite3 documentation, look for SQLITE_ENABLE_UNLOCK_NOTIFY. Note about libav (ffmpeg) ------------------------- libav (or ffmpeg) is a central piece of forked-daapd and most other FLOSS multimedia applications. The version of libav you use will potentially have a great influence on your experience with forked-daapd. forked-daapd is known to be working with libav 0.8.x, but it also supports older versions of libav and ffmpeg. Versions of libav/ffmpeg newer than 0.8.x/0.11.x do not work well with forked-daapd. Building from the git tree -------------------------- The source for this version of forked-daapd can be found here: The original (now unmaintained) source can be found here: Required tools: - ANTLR v3 is required to build forked-daapd, along with its C runtime (libantlr3c). Use at least version 3.1.3 of ANTLR v3 and the matching C runtime version. - Java runtime: ANTLR is written in Java and as such a JRE is required to run the tool. The JRE is enough, you don't need a full JDK. - autotools: autoconf 2.63+, automake 1.10+, libtool 2.2. Run autoreconf -i at the top of the source tree to generate the build system. - gettext: libunistring requires iconv and gettext provides the autotools macro definitions for iconv. Start by generating the build system by running autoreconf -i. This will generate the configure script and Makefile.in. The configure script will look for a wrapper called antlr3 in the PATH to invoke ANTLR3. If your installation of ANTLR3 does not come with such a wrapper, create one as follows: #!/bin/sh CLASSPATH=... exec /path/to/java -cp $CLASSPATH org.antlr.Tool "@" Adjust the CLASSPATH as needed so that Java will find all the jars needed by ANTLR3. The parsers will be generated during the build, no manual intervention is needed. To display the configure options run ./configure --help FLAC and Musepack support are optional. If not enabled, metadata extraction will fail on these files. Support for iTunes Music Library XML format is optional. Use --enable-itunes to enable this feature. Recommended build settings: ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --enable-flac After configure run the usual make, and if that went well, sudo make install After installation, edit the configuration file, /etc/forked-daapd.conf and adjust the values at your convenience. forked-daapd will drop privileges to any user you'll specify in the configuration file if it's started as root. This user must have read permission on your library (you can create a group for this and make the user a member of the group, for instance) and read/write permissions on the database location ($localstatedir/cache/forked-daapd by default). You'll need an init script if you want to start forked-daapd at boot. A simple init script will do, forked-daapd daemonizes all by itself and creates a pidfile under /var/run. Different distributions have different standards for init scripts and some do not use init scripts anymore; check the documentation for your distribution. For dependency-based boot systems, here are the forked-daapd dependencies: - local filesystems - network filesystems, if needed in your setup (library on NFS, ...) - networking - NTP - Avahi daemon The LSB header below sums it up: ### BEGIN INIT INFO # Provides: forked-daapd # Required-Start: $local_fs $remote_fs $network $time # Required-Stop: $local_fs $remote_fs $network $time # Should-Start: avahi # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: media server with support for RSP, DAAP, DACP and AirTunes # Description: forked-daapd is an iTunes-compatible media server for # sharing your media library over the local network with RSP # clients like the SoundBridge from Roku and DAAP clients # like iTunes. It can also stream music to AirTunes devices, # and it can be controlled by Apple Remote (and compatibles). ### END INIT INFO