This is the installation file for the Rivendell package. MANDATORY PREREQUISITES You will need the following installed and configured properly on your system before building Rivendell: Apache Web Server Included with most distros, or available from: http://www.apache.org/. Expat A stream-oriented XML parser library. Available at https://libexpat.github.io/. ID3Lib An audio metadata tag library. Included in most distros, or available at http://id3lib.sourceforge.net/. LibCurl, v7.19.0 or later A client-side URL transfer library. Included with most distros, or available at: http://curl.haxx.se/libcurl/. LibCoverArt, v1.0.0 or later A library for accessing the MusicBrainz Cover Art Archive. Available at https://musicbrainz.org/ LibDiscId, v0.6.2 or later A library for reading the attributes of audio CDs. Available at https://musicbrainz.org/ LibMusicBrainz, v5.0.1 or later A library for accessing the MusicBrainz open music encyclopedia Available at https://musicbrainz.org/ LibParanoia A library for ripping audio CDs. Included in most distributions, but also available from http://www.xiph.org/paranoia/. LibSndFile An audio file support library, written by Erik de Castro Lopo. Included with most distros, or you can find it at http://www.mega-nerd.com/libsndfile/. MySQL/MariaDB Database Server Included in most Linux distributions. See http://www.mysql.com/. PAM Pluggable Authentication Modules A suite of shared libraries that enable the local system administrator to choose how applications authenticate users. Included with virtually all modern distros, or see http://www.kernel.org/pub/linux/libs/pam/. OggVorbis - Open Source Audio Coding Library. Needed for OggVorbis importing and exporting. Included with most distros, or available at: http://www.xiph.org/. Python, v3.4 or later Open source scripting language. Included with most distros, or available at: https://www.python.org/. PycURL, v7.43.0 or later Python interface to libcurl. Available at http://pycurl.io/. PyMySQL, v1.3.12 or later Python library for accessing MySQL databases. Available at https://github.com/PyMySQL/mysqlclient-python. PySerial, v 3.2.1 or later Python library for accessing serial devices. Available at https://pythonhosted.org/pyserial/. Requests, v2.12.5 or later HTTP transfer library for Python. Available at http://docs.python-requests.org/. Qt4 Toolkit, v4.6 or better Most modern Linux distros include this. It can also be downloaded directly at http://www.qt.io/. Secret Rabbit Code A sample-rate converter library, written by Erik de Castro Lopo. Included with most distros, or you can find it at http://www.mega-nerd.com/SRC/. SoundTouch Audio Processing Library A library for altering the pitch and/or tempo of digital audio data. Available at http://www.surina.net/soundtouch/. Systemd System and Service Manager Most modern Linux distros include this. TagLib Audio Meta-Data Library, v1.8 or better A high-quality C++ library for reading and writing a variety of audio metadata formats. Available at https://taglib.org/. X11 Window System Virtually all Linux distros should include this. OPTIONAL PREREQUISITES The following components are optional, but needed at build- and run- time in order for particular features to work: One or more audio driver libraries. Choices are: AudioScience HPI Driver - v3.00 or greater. For supporting AudioScience's line of high-end professional audio adapters. See http://www.audioscience.com/. The JACK Audio Connection Kit A low latency audio server, designed from the ground up for professional audio work. See http://jackaudio.org/. The Advanced Linux Sound Architecture (ALSA) v1.0 or greater. The standard soundcard driver for Linux for kernels 2.6.x or later. See http://www.alsa-project.org/. Free Lossless Audio Codec (FLAC), v1.2.x or greater A "lossless" audio encoding library. Included with most distros, or available from: http://flac.sourceforge.net/. FAAD2 / mp4v2 - AAC/MP4 Decoding Libraries. Needed for MP4 file importation. Available at http://www.audiocoding.com/faad2.html and https://code.google.com/p/mp4v2/ respectively. LAME - MPEG Layer 3 Encoder Library. Needed for MPEG Layer 3 exporting. Available at http://lame.sourceforge.net/. MAD - MPEG Audio Decoder Library. Needed for MPEG importing and playout. Available at http://www.underbit.com/products/mad/. TwoLAME - MPEG Layer 2 Encoder Library. Needed for MPEG Layer 2 exporting and capture. Available at http://www.twolame.org/. DOCUMENTATION ------------- The larger pieces of the Rivendell documentation are written in XML-DocBook5. Pre-generated docs are included in the source tarball, so special tools will not normally be required to view or install them. However, if you need to rebuild them (either because you've modified the DocBook sources or are installing from the primary GitHub repository), then you will need the following: XML-DocBook5 Stylesheets. Available at http://sourceforge.net/projects/docbook/. You will also need to create a $DOCBOOK_STYLESHEETS variable in your environment that points to the top of the stylesheet tree. More information can be found at http://www.docbook.org/tdg5/en/html/appa.html#s.stylesheetinstall. On RHEL-ish systems, they are also available in the 'docbook5-style-xsl' package. xsltproc. Command line XSLT processor. Available at http://xmlsoft.org/XSLT/xsltproc2.html Apache FOP. Formatting Objects (FO) processor. Available at https://xmlgraphics.apache.org/fop/. INSTALLATION There are three major steps to getting a Rivendell system up and running. They are: 1) Setting up pre-requisite software 2) Installing the Rivendell package 3) Initial configuration 1) Setting Up Prerequisites The major prerequisite piece of software needed for a functioning Rivendell system is the MySQL database engine. This needs to be accessible from the target system (either by running on the local host, or on a remote system) before Rivendell installation proper is commenced. In practice, this means that the 'mysqld' daemon is running and can be connected to using the mysql(1) client. You will also need a login name/password for an account on the server with administrative rights. The process of configuring mySQL on a given host can be intricate and is generally beyond the scope of this document. Details can be found in a number of books on the subject, as well as in the very extensive documentation that accompanies the server itself. 2) Installing the Rivendell Package Once the prerequisites are set up, installation is most often a matter of cd'ing to the top of the Rivendell source tree and typing './configure', 'make', followed (as root) by 'make install'. Those who obtained the source via CVS will need to do './autogen.sh' first. The ./configure script will auto-detect what sound drivers (HPI, JACK or ALSA) are available and enable build support accordingly. To override this behavior, it's possible to specify '--disable-hpi', '--disable-jack' or '--disable-alsa' as an argument to './configure'. Be sure to see the important additional information regarding configuration in the 'docs/JACK.txt' or 'docs/ALSA.txt' files if you plan on using those sound driver architectures. The installation of Rivendell's web services components are controlled by two parameters passed to 'configure', as follows: --libexecdir Location to install web scripts and static content --sysconfdir Location to install Apache configuration The specific values to pass will vary widely depending upon the specific distro in question. Some known good values (assuming a default Apache setup): RHEL 5: --libexecdir=/var/httpd/rd-bin --sysconfdir=/etc/httpd/conf.d RHEL 6/7: --libexecdir=/var/www/rd-bin --sysconfdir=/etc/httpd/conf.d SuSE: --libexecdir=/srv/www/rd-bin --sysconfdir=/etc/apache2/conf.d After doing 'make install', be sure to restart the Apache web service. 3) Initial Configuration Next, you'll need to install a small configuration file at '/etc/rd.conf'. A sample can be found in 'conf/rd.conf-sample'. Much of this can be used unchanged, with the exception of the entries in the [Identity] section. These should be changed to reflect the user and group name of the system accounts that will be running Rivendell. The directory for the audio sample data next needs to be created, as so: mkdir /var/snd This directory should owned, readable, writable and searchable by the user and group specified in the 'AudioOwner=' and 'AudioGroup=' entires in '/etc/rd.conf' and readable and searchable by Others (mode 0775). Next, create an empty database on the MySQL/MariaDb server, as well as a DB user to access it. This user should have the following privileges: Select Insert Update Delete Create Drop References Index Alter Create Temporary Table Lock Tables In the '[mySQL]' section of the '/etc/rd.conf' file, set the 'Database=', 'Loginname=' and 'Password=' parameters to the DB name, user and password that you created. Then, create an initial Rivendell database and generate the audio for the test-tone cart in the audio store audio cart by doing: rddbmgr --create --generate-audio If all goes well, this command should return with no output. Finally, start up the Rivendell service by doing (as root): systemctl start rivendell You should now be able to run the various Rivendell components from the Applications menu.