Next Previous Contents

4. System Configuration Requirements for Compiling MythTV

Before you compile MythTV from the current source tarball or from CVS, you may need to modify your system configuration in a few ways.

In general, if you install MythTV from pre-packaged binaries for your Linux distribution/version, you don't need to be too concerned about the issues in this section of the HOWTO - the install script for the packages should take care of them. However, this section is still recommended reading which may help if the packager skipped a step in their packaging.

4.1 Software requirements for compiling MythTV

General requirements

MythTV is written in C++ and requires a fairly complete, but standard, compilation environment, including a recent g++ compiler, make, and appropriate headers files for shared libraries. Any standard Linux distribution should be able to install a suitable compilation environment from its packaging system. Section 3.2 of this HOWTO provides some details of how to install the required environment for many distributions.

Subsequent sections of this chapter address the few oddities that you may have to adjust by hand before you compile MythTV.

The reference compilation system for MythTV is Debian.

Distribution-Specific Notes

None

4.2 Shared-Library Requirements for MythTV

Modifying /etc/ld.so.conf

The runtime manager for shared libraries, /lib/ld.so, gets information about the locations and contents of shared libraries from /etc/ld.so.cache, a file created by ldconfig from information in /etc/ld.so.conf. Because MythTV installs some shared libraries in /usr/local/lib, that directory needs to be added to the list of directories for ld.so to search when doing runtime linking of programs. You do this, as root, by editing /etc/ld.so.conf, then running ldconfig. There are many ways to do this; one that works is to enter this series of commands:

$ su -
# echo /usr/local/lib >> /etc/ld.so.conf
# /sbin/ldconfig
# exit
$

Distribution-Specific Notes

Red Hat

It appears that Red Hat Linux 8.0 requires that the ldconfig command be run twice. Red Hat will also frequently "forget" about the path. It's recommended to run /sbin/ldconfig after installing every package. Failing that, always run it if you get an unexpected error about not finding libraries.

4.3 Environment variable Requirements for MythTV

General requirements

QT libraries and binaries

The compiler needs to be able to locate QT binaries and libraries in order to compile MythTV. QTDIR needs to be set and /usr/lib/qt3/bin must be added to your path. Your distribution may already be making these changes as a part of the installation of the software prerequisites detailed earlier.

One way to do this is as follows:

Open a shell and execute the following:

$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/games:/usr/lib/qt3/bin:/home/mythtv/bin:/usr/lib/qt3/bin
$ echo $QTDIR
/usr/lib/qt3

You should see a value like /usr/lib/qt3 for QTDIR and /usr/lib/qt3/bin should be in $PATH.

If you don't, do not proceed past this step until you have resolved this error. You may need to manually specify the QTDIR and PATH at the shell prompt before compiling.

Also, check that there has been a link created in /usr/lib/qt3/mkspecs called default. If not, you'll get errors during the compile. See the Troubleshooting Section for more information.

Distribution-Specific Notes

Mandrake

The following instructions work for Mandrake 9.0 and 9.1 using bash as the shell, and may be applicable for a distribution which uses /etc/profile.d.

As root, create the following file in /etc/profile.d The example filename is "mythtv.sh". Use what you feel is appropriate.

Open a shell, and switch to superuser mode. NOTE: ^D means press CTRL and d at the same time.

$ su
# cd /etc/profile.d
cat > mythtv.sh
export QTDIR=/usr/lib/qt3
export PATH=$PATH:/usr/lib/qt3/bin
^D

# chmod a+x mythtv.sh
# exit
$ exit
The last two commands are to exit out of the shell. This way, when you next open a shell your new commands will take effect.

Red Hat Linux 9/8.0

Red Hat Linux 9/8.0 use a default locale with UTF-8 encoding. Date::Manip, a perl module used by XMLTV, is not UTF-8 safe. As a result, whenever you run setup or mythfilldatabase you will get a lot of UTF-8 warnings. There is an http://membled.com/work/patches/DateManip/ updated version of Date::Manip at the XMLTV site fixing this and other XMLTV related # bugs.

Debian

Debian source packages are available from the same place as the binary packages. These can be used to build customized packages, and to automatically satisfy MythTV's build-time dependencies.

sh-2.05b# apt-get build-dep mythtv
Reading Package Lists...
Building Dependency Tree...
The following NEW packages will be installed:
  debconf-utils debhelper file fontconfig gettext html2text intltool-debian
  libaudio2 libexpat1 libfontconfig1 libfontconfig1-dev libfreetype6
  libfreetype6-dev libglib2.0-0 libjpeg62 libjpeg62-dev liblame-dev liblame0
  liblcms1 liblcms1-dev libmagic1 libmng-dev libmng1 libmysqlclient-dev
  libmysqlclient12 libogg-dev libogg0 libpng12-0 libpng12-dev libqt3-headers
  libqt3-mt-dev libqt3c102-mt libvorbis-dev libvorbis0a libvorbisenc2
  libvorbisfile3 libxcursor-dev libxcursor1 libxft2 libxft2-dev libxrender-dev
  libxrender1 mysql-common pkg-config po-debconf qt3-dev-tools xfree86-common
  xlibmesa-gl-dev xlibmesa-glu-dev xlibmesa3-gl xlibmesa3-glu xlibs xlibs-dev
  zlib1g-dev
0 upgraded, 54 newly installed, 0 to remove and 0 not upgraded.
Need to get 0B/24.0MB of archives.
After unpacking 78.7MB of additional disk space will be used.
Do you want to continue? [Y/n] 
[...]
sh-2.05b# cd /tmp
sh-2.05b# apt-get source mythtv
Reading Package Lists...
Building Dependency Tree...
Need to get 3085kB of source archives.
Get:1 http://dijkstra.csh.rit.edu unstable/mythtv mythtv 0.11-4 (dsc) [507B]
Get:2 http://dijkstra.csh.rit.edu unstable/mythtv mythtv 0.11-4 (tar) [3071kB]
Get:3 http://dijkstra.csh.rit.edu unstable/mythtv mythtv 0.11-4 (diff) [13.9kB]
Fetched 3085kB in 0s (8120kB/s)
dpkg-source: extracting mythtv in mythtv-0.11
sh-2.05b# cd mythtv-0.11
[customize settings.pro, etc.]
[edit debian/changelog and increment the version number]
sh-2.05b# dpkg-buildpackage -rfakeroot -us -uc -b
[...]
dpkg-deb: building package `mythtv-backend' in `../mythtv-backend_0.11-4_i386.deb'.
dpkg-deb: building package `mythtv-frontend' in `../mythtv-frontend_0.11-4_i386.deb'.
dpkg-deb: building package `libmyth-0.11' in `../libmyth-0.11_0.11-4_i386.deb'.
dpkg-deb: building package `libmyth-0.11-dev' in `../libmyth-0.11-dev_0.11-4_i386.deb'.
 dpkg-genchanges -b
dpkg-genchanges: binary-only upload - not including any source code
dpkg-buildpackage: binary only upload (no source included)
sh-2.05b# ls -l ../*.deb
-rw-r--r--    1 root     root        31734 Sep  6 19:07 ../libmyth-0.11-dev_0.11-4_i386.deb
-rw-r--r--    1 root     root       408444 Sep  6 19:07 ../libmyth-0.11_0.11-4_i386.deb
-rw-r--r--    1 root     root      3324966 Sep  6 19:07 ../mythtv-backend_0.11-4_i386.deb
-rw-r--r--    1 root     root        15350 Sep  6 19:07 ../mythtv-common_0.11-4_all.deb
-rw-r--r--    1 root     root        17978 Sep  6 19:07 ../mythtv-database_0.11-4_all.deb
-rw-r--r--    1 root     root       422232 Sep  6 19:07 ../mythtv-doc_0.11-4_all.deb
-rw-r--r--    1 root     root      4900474 Sep  6 19:07 ../mythtv-frontend_0.11-4_i386.deb
-rw-r--r--    1 root     root        12372 Sep  6 19:07 ../mythtv_0.11-4_all.deb

If building from CVS instead of the source package, then the QTDIR environment variable must be set when building. On Debian woody, QTDIR should be set to /usr/share/qt. On Debian unstable, QTDIR should be set to /usr/share/qt3.


Next Previous Contents