Catalyst Install Issues

software development


I’ve been trying to get perl Catalyst installed on my account to no avail. I first tried following the wiki instructions to the letter, but it would fail off while installing Catalyst::Devel. I backed off everything I did, then first tried following the wiki CPAN install instructions, followed by the wiki’s install instructions for the actual Catalyst sections. Failed again, at the same point. Again I backed it off, and tried following the Catalyst Advent Calendar instructions ( for installing via local::lib. Again, it errors on the tests.

While the errors are different for each method, the most common one for the original wiki instructions are that it’s trying to install necessary packages to the root “/usr/bin/perl” directory rather than the /home//local directory specified in my .profile (and, for good measure, .bashrc and .bash_profile).

Among the errors for the other methods, the most common seems to be related to the Cwd command coming back with garbage for the install directory.

I even tried installing my own local perl 5.10 instance, again following the wiki’s instructions, but when compiling it errors off, saying something about “miniperl failing”.

Has anyone been able to get Catalyst::Devel installed and running? Note that, near as I can tell, the Catalyst interpreter works (I’m able to run the “perl -MCatalyst -e ‘print "There is no I in team, but there is an I in pie"x100’” command mentioned in the wiki). It’s just that the development scripts are AWOL–when I try to do “ Test” it can’t find, and when I do a search for it, and try to run it, it says “you need to install Catalyst::Devel”.

If anyone’s gotten it to work, please let me know what you did so I can try it. Thanks.

PS: Here’s an example of a common error I see. Any idea on what’s causing this would be very helpful

Failed test ‘Response Cookies’

at t/live_engine_response_cookies.t line 33.

Structures begin differing at:

$got->{Catalyst} = Does not exist

$expected->{Catalyst} = ARRAY(0x814cbb8)

Failed test ‘Response Cookies’

at t/live_engine_response_cookies.t line 51.

Structures begin differing at:

$got->{Catalyst} = Does not exist

$expected->{Catalyst} = ARRAY(0x814cbb8)

Looks like you failed 2 tests of 15.

Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/15 subtests


I finally got it to work.

First, follow the steps here, up until you’re supposed to install Catalyst (basically, follow the steps for installing local::lib):

(NOTE: instead of copying that line mentioned in the article to the .bashrc file, copy it to the .bash_profile–that way you don’t have to source it and it’ll run when you log in)

Then fire up CPAN. I just use all the default settings.

install Test::Pod
install Test::Pod::Coverage
install Class::C3
install File::Temp
install Compress::Zlib (THIS ONE IS VERY IMPORTANT–it was never listed as a dependency, but install died without it)
install DBIx::Class
install Task::Catalyst

and let it install all of the dependencies. It’ll probably still die off with that error while installing Task::Catalyst. I’m guessing you probably don’t need all of these, but this is the order I installed them and it worked for me.

Then, go to the CPAN website and download the absolute newest Catalyst release–the one I got was from 10/15/08. Install it with the “perl Makefile.PL; make;make test; make install” method. For some reason when I’d install from the CPAN command line it would give me the older version. Like I said before, I’m a bit of a newb on CPAN, so I’m probably doing it wrong. At any rate, this method works.

Then it finally seems to work. If you have any problems, make sure you have all of the modules installed that are mentioned on the Dreamhost wiki, as well as all of the modules that are mentioned in the cat-install script mentioned in the wiki (the script itself didn’t seem to work right, but I went through and installed all the modules manually).

I used the following perl script to test what was installed, don’t know if someone might find it helpful:

use strict;
use warnings;

use ExtUtils::Installed;

my $instmod = ExtUtils::Installed->new();

printf "%-40s %s\n", "Module", "Version";
print  "--------------------------------------------------\n";
foreach my $module ($instmod->modules())
my $version = $instmod->version($module) || "Unknown";
printf "%-40s %s\n", $module, $version;
print  "------------------------\n";
print  "--- Contents of \@INC ---\n";
print  "------------------------\n";
my $x;
foreach $x(@INC)
print "Inc: $x \n"