|We don't bite newbies here... much|
Using perl's Extutils::MakeMaker or Module::Build to install applicationsby Anonymous Monk
|on Nov 07, 2007 at 13:55 UTC||Need Help??|
Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
Can you guys share your experience on using Perl module building method like Extutils::MakeMaker or Module::Build (or perhaps yet another one) to install applications that are written in Perl mixed with other stuffs.
My application is comprised of several scripts, many of them written in Perl but there are also a few shell and Ruby scripts. There are Perl modules in lib/perl/ as well as lib/ruby/ and lib/php/. Other stuffs include PHP and HTML files that will be copied to docroot, non-POD documentation, icons, sample config files, etc. All in all there are over 1000 files.
Currently to install everything I only use a shell script with an rsync command. The shell accepts an argument which is the prefix / root directory to install to. Luckily there is no compilation step necessary in my scripts, they can simply be copied from the source directory to the destination directory.
I package everything in a tarball, and user can simply extract the tarball and invoke the install shell script mentioned above to install the application.
I am now planning to allow users to choose PREFIX as well as BIN_DIR, SBIN_DIR, LOCALSTATE_DIR, a la autoconf. However I am not familiar at all with autoconf, and I have a feeling it is a little overkill, since my application does not contain C or any other program which needs to be compiled ilke C.
The premise of using a build and install method like normal Perl/CPAN modules is attractive for me because at least I've created one or two Perl modules, and there are utilities to convert a Perl module to an RPM/deb package, which will let my users install my application with greater ease as well as spare me the trouble of having to create a .spec or debian/ control files, with which I am not really familiar either.
Any input is appreciated. Thanks.