Ubuntu Intrepid Ibex Installation

From MythTV Official Wiki
Revision as of 02:54, 23 August 2009 by Keller999 (talk | contribs) (Updated PulseAudio section to something a little less rash than 'rip it out'. Borrowed from the 9.04 page.)

Jump to: navigation, search

Source Installation on Ubuntu 8.10 Intrepid Ibex

See Ubuntu Installation Guides for installing on other Ubuntu versions.

This will allow you to build and install the latest build on ubuntu 8.10.

I personally suggest installing xubuntu over ubuntu - it boots just that much faster - but thats a personal opinion.

Prerequesites

First install required packages (split in two parts because Terminal doesn't like pasting long lines):

 sudo apt-get install build-essential liblircclient-dev libasound2-dev libdts-dev libdvdnav-dev \
 libxv-dev libxxf86vm-dev transcode libmp3lame-dev subversion qt4-dev-tools libqt4-dev libsamplerate0 \
 libxvidcore4 liba52-0.7.4-dev libfame-dev libcdio-dev msttcorefonts libasound2-doc libmad0-dev
 sudo apt-get install libid3tag0-dev libvorbis-dev libflac-dev libcdaudio-dev libcdparanoia0-dev \
 fftw3-dev libfaad-dev libsmpeg-dev libmp4v2-dev libtag1-dev mysql-server libvisual-0.4-dev libexif-dev 

To install css support use:

/usr/share/doc/libdvdread3/install-css.sh

If you want mythweb as well - you need

 sudo apt-get install apache2 php5 libapache2-mod-php5 php5-mysql

How do I get and compile the source code?

svn co http://svn.mythtv.org/svn/trunk/mythtv
svn co http://svn.mythtv.org/svn/trunk/mythplugins
svn co http://svn.mythtv.org/svn/trunk/myththemes

then simply go in each directory and run:

./configure
make
sudo make install

if you dont want some modules you might want to disable then in mythplugins (ie. flix support)

./configure --disable-mythnetflix

optional/post install tasks

creating the mythtv user

to run mythtv as its own user I created one (so the backend doesnt run as root)

sudo useradd mythtv

mythtv database setup

You have to create a file for mythtv for databse connections ~mythtv/.mythtv/mysql.txt

DBHostName=localhost

# By default, Myth tries to ping the DB host to see if it exists.
# If your DB host or network doesn't accept pings, set this to no:
#
DBHostPing=no

DBHostName=localhost
DBUserName=mythtv
DBName=mythconverg
DBPassword=mythtv

# Set the following if you want to use something other than this
# machine's real hostname for identifying settings in the database.
# This is useful if your hostname changes often, as otherwise you
# will need to reconfigure mythtv (or futz with the DB) every time.
# TWO HOSTS MUST NOT USE THE SAME VALUE
#
LocalHostName=MYCOOLMYTHTVHOST

# If you want your frontend to be able to wake your MySQL server
# using WakeOnLan, have a look at the following settings:
#
#
# The time the frontend waits (in seconds) between reconnect tries.
# This should be the rough time your MySQL server needs for startup
#
#WOLsqlReconnectWaitTime=0
#
#
# This is the number of retries to wake the MySQL server
# until the frontend gives up
#
#WOLsqlConnectRetry=5
#
#
# This is the command executed to wake your MySQL server.
#
#WOLsqlCommand=echo 'WOLsqlServerCommand not set'

Then you have to create a database and let the user set above access it

mysql -u root -p
create database mythconverg;
set password for 'mythtv'@'%' = password('mythtv');
set password for 'mythtv'@'localhost' = password('mythtv');
flush privileges;

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

mythbackend

If mythbackend is running OK, test mythfrontend:

mythfrontend

running mythtv on start

I use a slightly modified script from mythbuntu for that. Just copy the content to /etc/init.d/mythtv-backend - chmod it with sudo chmod 755 /etc/init.d/mythtv-backend

To start every time you still have to add it to the rc: update-rc.d mythtv-backend defaults

Also create a log directory for mythtv:

sudo mkdir /var/log/mythtv
sudo chown mythtv:mythtv /var/log/mythtv
#! /bin/sh
### BEGIN INIT INFO
# Provides:          mythtv-backend
# Required-Start:    $local_fs $remote_fs $network
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/Stop the MythTV server.
### END INIT INFO

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/local/bin/mythbackend
NAME="mythbackend"
DESC="MythTV server"

test -x $DAEMON || exit 0

. /lib/lsb/init-functions

set -e

prime_firewire()
{
    if [ "$ENABLE_FIREWIRE" = "TRUE" ]; then
        log_daemon_msg "Priming Firewire "
        su - $USER -c "/usr/bin/mythprime"
        log_end_msg $?
    fi
}

USER=mythtv
USER_HOME=$(grep ^$USER /etc/passwd | awk -F : '{print $6}')
RUNDIR=/var/run/mythtv
ARGS="--daemon --logfile /var/log/mythtv/mythbackend.log --pidfile $RUNDIR/$NAME.pid"
EXTRA_ARGS=""
NICE=0

if [ -f /etc/default/mythtv-backend ]; then
  . /etc/default/mythtv-backend
fi

ARGS="$ARGS $EXTRA_ARGS"

mkdir -p $RUNDIR
chown -R $USER $RUNDIR

unset DISPLAY
unset SESSION_MANAGER

#create a symbolic link for mysql.txt so it can't be overwritten
mkdir -p $USER_HOME/.mythtv
chown -R $USER $USER_HOME/.mythtv
if [ ! -e $USER_HOME/.mythtv/mysql.txt ]; then
        ln -s /etc/mythtv/mysql.txt $USER_HOME/.mythtv/mysql.txt
fi

case "$1" in
  start)
        if [ -e $RUNDIR/$NAME.pid ]; then
                PIDDIR=/proc/$(cat $RUNDIR/$NAME.pid)
                if [ -d ${RUNDIR} -a "$(readlink -f ${RUNDIR}/exe)" = "${DAEMON}" ]; then
                        log_success_msg "$DESC already started; use restart instead."
                        exit 1
                else
                        log_success_msg "Removing stale PID file $RUNDIR/$NAME"
                        rm -f $RUNDIR/$NAME.pid
                fi
        fi
        prime_firewire
        log_daemon_msg "Starting $DESC: $NAME "
        start-stop-daemon --start --pidfile $RUNDIR/$NAME.pid \
                --chuid $USER --nicelevel $NICE --exec $DAEMON -- $ARGS
        log_end_msg $?
        ;;
  stop)
        log_daemon_msg "Stopping $DESC: $NAME "
        start-stop-daemon --stop --oknodo --pidfile $RUNDIR/$NAME.pid \
                --chuid $USER --exec $DAEMON -- $ARGS
        log_end_msg $?
        test -e $RUNDIR/$NAME.pid && rm $RUNDIR/$NAME.pid
        ;;
  restart|force-reload)
        log_daemon_msg "Restarting $DESC: $NAME "
        start-stop-daemon --stop --oknodo --pidfile $RUNDIR/$NAME.pid \
                --chuid $USER --exec $DAEMON -- $ARGS
        sleep 3
        prime_firewire
        start-stop-daemon --start --pidfile $RUNDIR/$NAME.pid \
                --chuid $USER --nicelevel $NICE --exec $DAEMON -- $ARGS
    log_end_msg $?
        ;;
  status)
        # We want to maintain backward compatibility with Hardy,
        # so we're not going to use status_of_proc()
        pidofproc -p $RUNDIR/$NAME.pid $DAEMON >/dev/null && status=0 || status=$?
        if [ $status -eq 0 ]; then
                log_success_msg "$NAME is running"
        else
                log_failure_msg "$NAME is not running"
        fi
        exit $status
        ;;
  *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
        exit 2
        ;;
esac

exit 0

autostart frontend in xubuntu

Create a file in ~/.config/autostart/mythfrontend.desktop:

[Desktop Entry]
Encoding=UTF-8
Version=0.9.9
Type=Application
Name=MythTV Frontend
Comment=
Exec=mythfrontend
StartupNotify=false
Terminal=false
Hidden=false

mythweb

For mythweb I just created a symlink to the checked out mythweb in the /var/www:

sudo ln -s /usr/local/src/mythtv/mythplugins/mythweb /var/www/mythweb
# make sure data is writeable
sudo chown -R www-data /usr/local/src/mythtv/mythplugins/mythweb/data

you have to enable mod-rewrite

sudo ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load

and copy/edit the apache config

sudo cp mythplugins/mythweb/mythweb.conf.apache /etc/apache2/sites-available/mythweb.conf
sudo ln -s /etc/apache2/sites-available/mythweb.conf /etc/apache2/sites-enabled/mythweb.conf

after that restart and have fun:

sudo /etc/init.d/apache2 restart

Something didnt work - what next?

With this you should be able to compile and install mythtv on a new (x)ubunut box. Most problems come with mythtv setup (config files, database initialisation etc.) Please refer to the other wiki pages/documentation for info on that

Pulse Audio is running!!!

If you get this error when running mythfrontend:

ERROR: ***Pulse Audio is running!!!!***
ERROR: But MythTV has not been compiled with Pulse Audio disabling support. EXITING! 

You need to install the pulse dev package:

$sudo apt-get install libpulse-dev 

Then recompile mythtv. This time when you run ./configure the Pulse audio support will be indicated.