Difference between revisions of "Build from Source"

From MythTV Official Wiki
Jump to: navigation, search
(Remove obsolete commented stuff.)
(Install MythWeb)
Line 125: Line 125:
 
<pre>cd ~/build/mythweb/
 
<pre>cd ~/build/mythweb/
 
sudo mkdir /usr/local/share/mythtv/mythweb/
 
sudo mkdir /usr/local/share/mythtv/mythweb/
sudo cp -rv * /usr/local/share/mythtv/mythweb/
+
sudo cp -rv ~/build/mythweb /var/www/mythweb
 
sudo ln -s /usr/local/share/mythtv/mythweb/ /var/www/
 
sudo ln -s /usr/local/share/mythtv/mythweb/ /var/www/
 
sudo cp -v /usr/local/share/mythtv/mythweb/mythweb.conf.apache /etc/apache2/sites-available/mythweb.conf
 
sudo cp -v /usr/local/share/mythtv/mythweb/mythweb.conf.apache /etc/apache2/sites-available/mythweb.conf
Line 134: Line 134:
 
<pre>sudo ln -s ../sites-available/mythweb.conf /etc/apache2/sites-enabled/mythweb.conf
 
<pre>sudo ln -s ../sites-available/mythweb.conf /etc/apache2/sites-enabled/mythweb.conf
 
cd /etc/apache2
 
cd /etc/apache2
sudo ln -s mythweb.conf ../sites-available/mythweb.conf
+
sudo a2enmod rewrite.load
sudo chown -R www-data /usr/local/share/mythtv/mythweb/data/
+
sudo a2ensite mythweb.conf
sudo chgrp -R www-data /usr/local/share/mythtv/mythweb/data/
+
sudo chown -R www-data:www-data /usr/local/share/mythtv/mythweb/data/
 
sudo chmod -R g+w /usr/local/share/mythtv/mythweb/data/
 
sudo chmod -R g+w /usr/local/share/mythtv/mythweb/data/
sudo ln -s ../mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
 
 
</pre>
 
</pre>
 
Restart your apache server as follows to get the changes applied:
 
Restart your apache server as follows to get the changes applied:
 
<pre>
 
<pre>
sudo /etc/init.d/apache2 stop
+
sudo /etc/init.d/apache2 restart
sudo /etc/init.d/apache2 start
 
 
</pre>
 
</pre>
 
the database and backend must be running for MythWeb to work. At this point you have not yet set up the database or the backend so you cannot try MythWeb. Once those things have been set up and are running, test MythWeb by navigating to <nowiki>http://servername/mythweb</nowiki> where ''servername'' is your master backend server on which mythweb is running. If running from a different system you may have to add ''servername'' plus its ip address to your /etc/hosts file.
 
the database and backend must be running for MythWeb to work. At this point you have not yet set up the database or the backend so you cannot try MythWeb. Once those things have been set up and are running, test MythWeb by navigating to <nowiki>http://servername/mythweb</nowiki> where ''servername'' is your master backend server on which mythweb is running. If running from a different system you may have to add ''servername'' plus its ip address to your /etc/hosts file.

Revision as of 04:18, 30 September 2015

Software-update-available.png This page is up-to-date as of MythTV version 0.27.6, the current release is 31.0

Introduction

For most people, it will be far easier to install a pre-built package for MythTV rather than building from source. Reasons for building from source include:

  • There is no pre-built package for your Linux distribution.
  • The pre-built package for your distribution is out of date.
  • You want to run a pre-release version of the software.

If you have already installed a pre-built package and you have a need to try out a source code change, it would be preferable to use your distribution's build process to build a version that is compatible with the already installed version. There are differences in the placement of files between the downloaded packages and the code you build yourself.

This guide shows how to build from source code downloaded from github.

Dependencies

One of the most difficult parts of building the code is getting the correct dependencies installed first. The syntax for installing these will vary from one distribution to another, and package names may also vary between distributions.

Build Dependencies for version 0.27
ccache yasm libqt4-dev libqtwebkit-dev libqt4-opengl-dev libdvdnav-dev libfreetype6-dev libavc1394-dev libiec61883-dev liblircclient-dev libxinerama-dev libxxf86vm-dev libcrystalhd-dev libxvmc-dev libxext-dev libimlib2-dev libasound2-dev libmp3lame-dev libvorbis-dev libdts-dev lsb-release libpulse-dev libxrandr-dev libfftw3-dev libva-dev libvdpau-dev libudev-dev libclass-dbi-perl libnet-upnp-perl libio-socket-inet6-perl libdbd-mysql-perl libjson-perl libwww-perl python-oauth python-lxml python-mysqldb python-pycurl python-urlgrabber libgl1-mesa-dev libdvdread-dev fftw-dev libvorbis-dev libflac-dev libmad0-dev libcdaudio-dev libcdio-dev libcdparanoia-dev libsdl1.2-dev libfaad-dev libexif-dev libtiff4-dev libxv-dev libtag1-dev libvisual-0.4-dev libmysqlclient-dev libdate-manip-perl libxml-simple-perl libimage-size-perl libdatetime-format-iso8601-perl libsoap-lite-perl libx264-dev libvpx-dev libavahi-compat-libdnssd-dev libssl-dev libcdio-cdda-dev libcdio-paranoia-dev libxml2-dev libass-dev libcec-dev uuid-dev libxml-xpath-perl autoconf gdb
Build Dependencies for version 0.28
ccache yasm help2man qtdeclarative5-dev libqt5webkit5-dev libqt5opengl5-dev qtscript5-dev qt5-qmake libdvb-dev po-debconf linux-kernel-headers libdvdnav-dev libfreetype6-dev libavc1394-dev libiec61883-dev liblircclient-dev libxinerama-dev libxxf86vm-dev libcrystalhd-dev libxvmc-dev libxext-dev libimlib2-dev libasound2-dev libmp3lame-dev libvorbis-dev libdts-dev lsb-release libpulse-dev libxrandr-dev libfftw3-dev libva-dev libvdpau-dev libudev-dev libclass-dbi-perl libnet-upnp-perl libio-socket-inet6-perl libdbd-mysql-perl libjson-perl libwww-perl dh-python python python-oauth python-lxml python-mysqldb python-pycurl python-urlgrabber libgl1-mesa-dev libdvdread-dev fftw-dev libvorbis-dev libflac-dev libmad0-dev libcdaudio-dev libcdio-dev libcdparanoia-dev libsdl1.2-dev libfaad-dev libexif-dev libtiff5-dev libxv-dev libtag1-dev libvisual-0.4-dev libmysqlclient-dev libdate-manip-perl libxml-simple-perl libimage-size-perl libdatetime-format-iso8601-perl libsoap-lite-perl libx264-dev libvpx-dev libavahi-compat-libdnssd-dev libssl-dev libcdio-cdda-dev libcdio-paranoia-dev libxml2-dev libass-dev libcec-dev libexiv2-dev uuid-dev libxml-xpath-perl autoconf gdb
Run Time Dependencies for version 0.27
mysql-server ntp libicu48
Run Time Dependencies for MythWeb
apache2-mpm-prefork php5 php5-mysql libhttp-date-perl

Install the build dependencies on your build machine. Install the Run Time dependencies on your MythTV machine (which may be the same as the build machine). If you plan to use MythWeb, install those dependencies on your master backend system.

Distribution Install Command Additional packages
Ubuntu, Debian, MythBuntu, other Debian based distributions. sudo apt-get install Dependency List
build-essential git

Depending on your distribution, run the install command with the list of packages.

Getting and compiling the source code

Step Command to run
create a directory cd
mkdir ~/build
clone cd ~/build
git clone https://github.com/MythTV/mythtv.git mythtv
cd mythtv
Check versions available git branch -a
Choose your version. The current stable released version is 31-fixes. We recommend to use that version. git checkout fixes/0.xx

In general, you should probably choose the stable version. If you don't mind if your MythTV system is non-functional or has serious bugs that may prevent proper operation/result in lost recordings or inability to play back recordings, you may try using the unstable, development code. If using unstable, development code, you should follow the mythtv-commits and mythtv-dev mailing lists.

Build and Install MythTV

In the ~/build/mythtv/mythtv directory, run the ./configure script. You can see available options by using the --help parameter with configure:

./configure --help

By default the build will install mythtv in a directory structure under /usr/local/. Executables will be in /usr/local/bin. You can modify this behavior with the --prefix= parameter. The default prefix is /usr/local.

Normally you will not need to supply any options to configure. Run it as follows:

./configure

The configure step may identify dependencies that are missing. If so you will need to find them and install them before continuing. Please let us know via an update to this page or make a comment in th discussion page.

If the configure was successful, run the build as follows

make

The build may identify missing dependencies. Install them and notify us via a comment in the discussion.
When the build is successful, install this way

sudo make install

Build and Install Plugins

Building and installing the plugins is optional. I recommend that new users skip this step. Plugins are not needed for any of the main functionality of MythTV, including watching Videos and watching DVDs. Plugins are for Music, Weather, YouTube, Games, etc.

In the ~/build/mythtv/mythplugins directory, run the same commands as above for building and installing MythTV. If you only want to build certain plugins, you can disable the others in the ./configure command (check the --help for the syntax for that).

./configure
make
sudo make install

Install MythWeb

If you plan to run MythWeb, install it on your master backend server. Install the dependencies, listed above. Check out Mythweb from git:

Step Command to run
clone cd ~/build
git clone https://github.com/MythTV/mythweb.git mythweb
cd mythweb
Check versions available git branch -a
Choose your version. The current stable released version is 31-fixes. We recommend to use that version. git checkout fixes/0.xx

Set up the web application as follows:

cd ~/build/mythweb/
sudo mkdir /usr/local/share/mythtv/mythweb/
sudo cp -rv ~/build/mythweb /var/www/mythweb
sudo ln -s /usr/local/share/mythtv/mythweb/ /var/www/
sudo cp -v /usr/local/share/mythtv/mythweb/mythweb.conf.apache /etc/apache2/sites-available/mythweb.conf

Edit file /etc/apache2/sites-available/mythweb.conf using gedit or vi, for example:

sudo vi /etc/apache2/sites-available/mythweb.conf

Change the lines containing <Directory "/var/www/html/data"> and <Directory "/var/www/html" > so that they read <Directory "/var/www/mythweb/data"> and <Directory "/var/www/mythweb" >, i.e. change the html to mythweb.

sudo ln -s ../sites-available/mythweb.conf /etc/apache2/sites-enabled/mythweb.conf
cd /etc/apache2
sudo a2enmod rewrite.load
sudo a2ensite mythweb.conf
sudo chown -R www-data:www-data /usr/local/share/mythtv/mythweb/data/
sudo chmod -R g+w /usr/local/share/mythtv/mythweb/data/

Restart your apache server as follows to get the changes applied:

sudo /etc/init.d/apache2 restart

the database and backend must be running for MythWeb to work. At this point you have not yet set up the database or the backend so you cannot try MythWeb. Once those things have been set up and are running, test MythWeb by navigating to http://servername/mythweb where servername is your master backend server on which mythweb is running. If running from a different system you may have to add servername plus its ip address to your /etc/hosts file.

For more advanced and detailed instructions on MythWeb see the file mythweb/INSTALL in the download from github.

Post-install tasks

After installing the software there are a number of steps that must be taken before you have a working environment. If you installed from a pre-built package these would be done automatically.

Creating the mythtv user

MythTV backend needs to run as its own user. This should be a system account. Create a user as follows:

sudo useradd --system mythtv

MythTV Database Setup

Run these commands from the command line. The mysql command will prompt for your root database password, which you would have supplied during mysql installation. The mysql daemon must be running.

mysql -u root -p
create database mythconverg;
create user 'mythtv'@'%' identified by 'mythtv';
create user 'mythtv'@'localhost' identified by 'mythtv';
set password for 'mythtv'@'%' = password('mythtv');
set password for 'mythtv'@'localhost' = password('mythtv');
connect mythconverg;
grant all privileges on *.* to 'mythtv'@'%' with grant option;
grant all privileges on *.* to 'mythtv'@'localhost' with grant option;
flush privileges;
exit;

Run the following command to set up time zone tables:

mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql

Run mythbackend. This will automatically create your database or upgrade your previous mythconverg database schema to the latest version:

mythbackend

mythbackend will start up and create the database tables, after which it will shut down. Further attempts to start it will result in a message as follows:

 E  Scheduler: No capture cards are defined in the database.
 Perhaps you should re-read the installation instructions?

Before you can get the backend to start up and stay running, you have to configure at least one capture card correctly, plus one video source and connect these with an input. See Configuring_MythTV. Note that if you had installed the Ubuntu pre-built package there would not be this restriction, the backend can run without any configuration being done.

Backend Startup

For MythTV to be able to schedule and make recordings, the backend must be running at the time of the scheduled recordings. Normally this means running the backend at all times while the server is running. It should be set up to be automatically started when the server starts. This is handled automatically for you in the pre-built packages, but if you are building it yourself you have to set up some mechanism. Possible ways of doing it are Upstart, init script, /etc/rc.local. Ubuntu packages run it from Upstart, which has the ability to restart the process if it fails.

The simplest way will be by editing the rc.local. Use gksudo gedit to edit rc.local and add the following line:

/usr/local/bin/mythbackend -d --logpath /tmp/ --user mythtv

This is a very basic and simplistic approach, but will work. For a reliable system you need to use something more advanced like Upstart. If you install from the Ubuntu or MythBuntu package the Upstart setup is done for you. Also you may want to create a directory other than /tmp/ for your logs. Note that whatever directory you create for logs must be writeable by the mythtv user as well as frontend users. The fronend user if your normal Linux login, which you will use for viewing MythTV.

Note that logging uses a program mythlogserver. If the log file is not created try adding this line before the mythbackend line:

su -c "/usr/local/bin/mythlogserver -d --logpath /tmp/" mythtv

You can get a list of options available with mythbackend by running mythbackend --help.

If the backend starts up before you have added any capture cards it will immediately shut down again. Proceed to Configuring MythTV and complete the configuration up to the point of setting up a capture card, a video source and an input connection, before trying to start it again.

Next Steps

At this point you need to perform the configuration steps. See the table of contents and proceed to Configuring_MythTV and then Configuring_Frontend. Until you have done that you will not be able to do anything usefule with MythTV.