SourceFiles.org - Use the Source, Luke
Home | Register | News | Forums | Guide | MyLinks | Bookmark

Related Sites

Latest News
  General News
  Reviews
  Press Releases
  Software
  Hardware
  Security
  Tutorials
  Off Topic


Back to files

HOWTO: install XMLTV under Cygwin on Windows

Introduction

XMLTV works mostly fine under the Cygwin unix environment for Windows...

This allows you to use the normal Perl Source code XMLTV installation without the need for the Windows executable version, giving the following advantages:

  • faster download of new XMLTV versions (source dist is 1/10th the size of the Win32 version)
  • ability to develop, debug and test new grabbers
  • ability to quickly patch bugs in grabbers without waiting for the new Win32 EXE version..
  • ability to use grabbers that are not yet part of the Win32 EXE

The disadvantages are:

  • Cygwin gives a unix command line environment that is alien to most windows users,
  • the initial download is very large -- Cygwin itself with the required packages is about 40Mb and the XMLTV prereq file is another 4Mb.
  • Cygwin uses a large amount of disk space.

Also cygwin itself has a few odd features that can cause some issues with XMLTV, and TK based XMLTV GUI apps do not work in cygwin (tv_check)

WARNING: I have not tested every XMLTV app and grabber under Cygwin...

WARNING: Unix command lines can be very powerful and provide very little hand-holding (such as 'Are you sure' messages when you want to delete things). For this reason it is relatively easy to delete files unintentionally and to render your system non-operational.. Take care with command lines and make regular backups!

Scope

This HOWTO only deals with how to get XMLTV running on Cygwin. It does not deal in any way with how to use Cygwin itself other than installing the required packages fro XMLTV, so knowledge of how to work using the unix-style command line shell will be required.

Advanced usage, such as applying patch files and working with CVS checkouts is not covered by this HOWTO.

Instructions

1) Install Cygwin:

Download and run Cygwin's installer.

http://www.cygwin.com/setup.exe

In the installer, select:

Install from Internet
-> Next
Select a suitable installation directory, All Users, Unix file type -> Next
Select Local Package directory = some temporary folder...

        there will be a folder created - named after the download server -
        which you can delete after installation.

-> Next
Select the correct HTTP/FTP proxy settings -> Next
Select a nearby mirror server
-> Next

The package list will now be downloaded and shown in a categorised tree view.
-- Click on the (+) text button to expand / contract a branch -- Click on the '() Skip' text-button on a package line to select a

version to download. It will change from 'Skip' to the version number. If the package is already installed, the additional options 'Keep', 'Reinstall', 'Uninstall' will also be shown

Apart from the default packages that are pre-selected by the installer, you need to ensure that the following packages are selected

Base/

        diffutils
        tar
    Devel/      
        expat
        gcc
        make
    Interpreters/ 
        perl
    Libs/
        libiconv
        libiconv2
        libxml2  ** select version 2.5.11 or 2.6.7 or later ** see below
    Utils/      
        bzip2
        patch
        patchutils
        rebase
    Web/
        wget

Other useful packages to install are editors:

Editor/

        vim (vi clone)
        nano (pico clone)

If you want to have access to the pre-release, under-development versions of XMLTV then the CVS package is also useful

Devel/

cvs

** Note Re libxml2:
The Perl XML::LibXML package is known not to work with certain versions of libxml2. This package is required for some of the grabbers (tv_grab_se) At time of writing, libxml2 version 2.5.11 is known to be OK, as is 2.6.7. At time of writing, Cygwin's default version is 2.6.4, which is known not to work For more information on working versions see README in xml_prereq_x/XML-LibXML-xxx. For this reason you must make sure that the correct version is selected here by clicking several times on the () 'Skip'/'Version' button...

After a lot of downloading, (about 40Mb) and some installing you should now have cygwin in your start menu... Running it gives you a command window with a unix-style prompt:

username@hostname WorkingDir
$

Tips:

The Tab key will complete the remains of a filename/directory name if unique. If not unique, it will complete as much as possible, and a second Tab will indicate the possible matches.

~/ is shorthand for your home directory. You can always go to this directory with cd ~/

Your PC's drives now appear with unix paths as:

/cygdrive/c/
but the cd command accepts

cd c:
as a shortcut.

The cygwin installation directory: (c:/cygwin by default) is mapped to the cygwin 'root' directory: '/'

Note: If your PC does not have access to a broadband internet connection, and you don't want to spend several hours downloading 40Mb of Cygwin, but you have access to another PC that does have broadband, the cygwin installer has the option 'Download from Internet' to just download the required packages into the 'Local Package Directory'. You then write the contents of the directory to CD or a Flash disk, then use the 'Install from Local Directory' option on your target PC.

2) Download and unpack XMLTV source

Now download the XMLTV source distribution, and the _prereq files from sourceforge

http://files.xmltv.org
Save them in your Cygwin Home directory: c:/cygwin/home/username

At the Cygwin command prompt, Unpack the 2 tar.bz2 files using the command lines:

bunzip2 -c xmltv-x.x.x.tar.bz2 | tar -xvf - bunzip2 -c xmltv_prereq-x.tar.bz2 | tar -xvf -

Where x is replaced by the version numbers of the files you downloaded

3) Install the XMLTV prereq packages:

Change directory to the prereq directory created by unpacking the tar.bz2 file and list the packages therein.

cd xmltv_prereq-x
ls

For more info check the README:

less README

Note that the packages with TK cannot be installed in the current version of Cygwin, as PERL/TK is not yet part of Cygwin... This is not important, and only means that the XMLTV tv_check command cannot be installed

The packages need to be installed in alphanumeric order -- ie all packages with 00 first, then 01 then A-Z then a-z So, For each directory starting with 00 (apart from 00_tk) do:

cd directory
perl Makefile.PL; make test install cd ..
Do the same for each directory starting with 01, then for each of the remaining directories (apart from those with Tk
)...

Note: Some of the prerequisite modules (such as PerlIO-gzip, and libwww-perl) might fail some of its tests and will not install with the above command. These will need to be installed by running

make install
in the package directory. I have not found the failed tests to cause a problem yet.

Note: When installing XML-LibXML I got an error:

C:\cygwin\bin\perl.exe: *** unable to remap C:\cygwin\bin\cygiconv-2.dll to same address as parent...
If this is the case, close all other Cygwin windows and run the command:

rebaseall -v
then try again.

Note: When installing HTML-Parser, answer No to the question:

Do you want decoding on unicode entities? [no] no I have had problems with decoded Unicode characters in Perl/Cygwin.

Note: When installing libwww-perl, answer NO to the questions:

Do you want to install the GET alias? [y] n Do you want to install the HEAD alias? [y] n Do you want to install the POST alias? [y] n this is because installing these aliases failed on my system!

Note: you will not be able to install Text-Kakasi (required for Japan grabber) without downloading, building and installing the Kakasi library. See README in the xmltv_prereq directory for more details. If you don't need this, just skip the package.

cd back to your home directory when complete

cd ~/

4) Configure TimeZone

XMLTV (actually the PERL Date::Manip module) needs the TZ variable set correctly for the time and date handling for summer and winter time to work. Date::Manip has internal knowledge of some time zone values.

If the TZ variable is not set, some XMLTV grabbers and the tv_split command will not work.

Cygwin has its own idea of the time zone (from windows), and overriding the time zone with TZ can show confusing output from some Cygwin commands that display the time and date...

eg: No TZ set, my time zone in windows is CET == GMT+1, the current local time is 11:15)

$ date
Tue Mar 9 11:15:06 RST 2004
Setting TZ to CET

$ export TZ=CET
$ date
Tue Mar 9 10:15:25 GMT 2004
as you can see setting a TZ variable makes Cygwin report all times as GMT...

NOTE Setting TZ does not change the date of the system, merely the display of the dates...

To avoid this confusion, it is best only to set the TZ variable when you are running the XMLTV tools.

To set your time zone, run.

export TZ=EST
or whatever your time zone is...
This will set the time zone for all future commands run in this Cygwin window. If you use another window, you will need to rerun this command...

To see the list of the time zones understood by Date::Manip:

http://search.cpan.org/~sbeck/DateManip-5.42a/Manip.pod#TIMEZONES or if a newer version has been released, go to

http://search.cpan.org/~sbeck
click on Date::Manip
Click on Date::Manip in the Modules list to see the docs Click on TIMEZONES to see the TZ list

To check that this TZ works with Date::Manip, run the command:

$ perl -e 'use Date::Manip; print Date_TimeZone;'

If all is OK, and Date::Manip recognised your TZ, this should print out the time zone. If not you will get some errors such as "ERROR: Date::Manip unable to determine TimeZone."

The actual value of the time zone should not affect the results of most of the XMLTV commands, grabbers and tools EXCEPT for tv_grab_na -- which requires the time zone to be correctly set.

5) Install XMLTV

cd to the unpacked xmltv-x.x.x directory and run

perl Makefile.PL

The defaults will list all the grabbers that you can install and that are compatible with the Perl modules on your system. Either accept the defaults, or customise the grabbers/tools that you want to install..

Note tv_check will not work due to TK not being available.

Build and test:

make test
Normally, all tests should pass successfully.

Install
make install

That?s it. You can now delete the downloaded xmltv files and unpacked directories if you want to.

You now can use XMLTV like you would normally on unix:

eg

tv_grab_uk_rt --configure
tv_grab_uk_rt --days 1 > uk_today.xml

6) Automation of grabbing (optional)

If you need to automate the grabbing, you can use a Windows scheduled task to run a Bash shell script as follows:

Create a file in your Cygwin home directory called xmltv_scheduled_grab.sh containing:

-- START OF FILE -- CUT-HERE --
#!/usr/bin/bash
# IMPORTANT! previous line must be first line of file! #
# Set up environment
. /etc/profile
. ~/.bash_profile

# cd to home directory
cd

Set up TZ variable
CHANGE THIS TO MATCH YOUR TIME ZONE

#
export TZ=CET

Run grabber get 5 days listings, sending log messages to a logfile CHANGE THE GRABBER COMMAND LINE TO WHAT YOU REQUIRE #
tv_grab_uk_rt --days 5 --output uk_rt_xmltv.xml | tee grab_uk_rt_xmltv.log 2>&1

-- END OF FILE -- CUT-HERE --

(Obviously, as indicated, you need to change the grabber command line and the setting of TZ to what you require...)

Make this command executable:

chmod +x xmltv_scheduled_grab.sh

Test this command at the cygwin command line

xmltv_scheduled_grab.sh

If it is OK, you should get 2 files in your cygwin home

uk_rt_xmltv.xml containing the XMLTV output grab_uk_rt_xmltv.log containing the log messages from the grabber

You now need to create a Windows scheduled task to run this script

(Win XP: Start

          -> Control Panel 
          -> Performance and Maintenance 
          -> Scheduled tasks
          -> Add Scheduled task
     Win 2000: Start
          -> Control Panel 
          -> Scheduled tasks
          -> Add Scheduled task)

Select ANY program from the list (you will change the actual command line later).
Select a schedule (you can also change this later) Ignore the username/password screen for the moment. Select 'Open advanced properties for this task' before clicking OK to allow you set the real command line in the Task Properties window...

The problem with this command is that it will want to create a console window that will pop up on top of everything else when it runs...

You can either create this window minimised (via a transient window that will pop up and disappear -- also annoying, but less so) using the scheduled command:

cmd /c start /min c:\cygwin\bin\bash.exe ~/xmltv_scheduled_grab.sh

or if you download and install the program runhide from:

http://www.extendingflash.com/utilities/runhide.html and then use the scheduled command line

runhide.exe c:\cygwin\bin\bash.exe ~/xmltv_scheduled_grab.sh then the window will never appear...

You can test these command lines by pasting them into the start->Run box.

Enter the required command line in the Scheduled Task Properties window. Click the 'Set password' button, and enter your password (if you have one). Check the Schedule and Settings tabs.
Finally click OK.

You can test the scheduled task by right-clicking it and selecting Run.


HISTORY

$Id: README.cygwin,v 1.1 2004/05/23 08:51:54 epaepa Exp $

09/03/2004 Niel Markwick

initial version
11/03/2004 Niel Markwick

added more information on Time Zones, corrected typo's


Other Sites

Discussion Groups
  Beginners
  Distributions
  Networking / Security
  Software
  PDAs

About | FAQ | Privacy | Awards | Contact
Comments to the webmaster are welcome.
Copyright 2006 Sourcefiles.org All rights reserved.