newrisedesigns has asked for the wisdom of the Perl Monks concerning the following question:

Good Fellow Monks,

I attempted to install the XML::Simple module on a remote machine that I do not have direct access or root access. The machine is a webserver that my company uses through a web hosting provider.

I began by reading tachyon's post concerning installing modules. I telneted into the machine and set the CPAN module to pass the LIB=~/lib argument to Makefile.PL.

Everything went smoothly, until CPAN attempted to install XML::Parser (required by XML::Simple). "make install" returned an error, and CPAN stopped installing.

I attempted to manually install the files through the shell, and was able to pinpoint the problem with XML::Parser::Expat, which is missing/cannot access "expat.h". After looking in Expat.c and Expat.xs, and noticing they both "include <expat.h>", I found a copy of expat.h, and just for the hell of it, I uploaded it, and attempted to see if just including that file would help. No luck.

Here's the error response from "make install" in the Expat subdirectory.

gcc -c -fno-strict-aliasing -I/usr/local/include -O2 -march=i386 -mcp +u=i686 - DVERSION=\"2.31\" -DXS_VERSION=\"2.31\" -fPIC -I/usr/lib/perl5/5.6.1/i +386-linux/ CORE Expat.c Expat.xs:12:19: expat.h: No such file or directory make: *** [Expat.o] Error 1
This is my first attempt at installing a module remotely and any help would be greatly appreciated.

John J Reiser

Replies are listed 'Best First'.
Re: Problem Installing Module XML::Parser on a Remote Machine
by moxliukas (Curate) on Sep 07, 2002 at 20:39 UTC

    XML::Parser requires expat library to be installed on the machine. You can get expat from and then compile it on this host machine (I have no idea if this needs root access, but I do believe you can install it somewhere in your home directory. You will need to tell the configure script where you want it to be installed). After this you should be able to complie XML::Parser with no difficulty (you will need to tell where you have put expat though)

    Hope this helps