http://www.perlmonks.org?node_id=470746

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

Hello Monks,

I am creating a WebApp that will be installed at a customer site on a Linux Server. It is becoming fairly detailed and complex and makes use of a lot of CPAN perl modules that don't ship with the normal perl distribution, as well as some linux programs that will also need to be installed/compiled/updated. So my questions are as follows:

1)Since this server may not have net access to CPAN/outside network I need to create an install program/package that will have some intelligent checking and install capabilities....what would be some good ways to go about this?

2)This WebApp uses Apache, Mysql,OpenSSl,Mod_Perl and Html::Mason, which all have some modules/packages that need to be built and compiled with the appropriate combination to allow the WebApp to work properly...Since I figure I am not the first to be faced with this installation problem I thought I would ask how people go about tackling this issue, since I will need to do this over and over again??

Thanks in advance for any insight/help/guidance you can give me on this subject!

Replies are listed 'Best First'.
Re: WebApp Installation Preparation
by Fletch (Bishop) on Jun 28, 2005 at 18:24 UTC

    Use PAR to package everything up into an executable. Hypothetically you could even package up apache et al into the archive and have your program use those versions.

    --
    We're looking for people in ATL

      Par is a good way to package up all of the perl modules. I would steer away from using it for Apache or the other 3rd party bins. I would also like to point out that you may have issues on non-similar hosts. Meaning if you build your PAR on debian and the client is running Redhat that is based on a different version of libc, you can have issues. You best bet would be to have all of the required sources for all of the 3rd party modules and bins in your delivery with a script that compiles and installs them to their system with the compile time options that you need. I would also suggest placing them in a directory besides the standard one -- so that lets say you need apache installed with your options it does not clobber their own install of it.


      -Waswas
Re: WebApp Installation Preparation
by fmerges (Chaplain) on Jun 28, 2005 at 21:31 UTC

    Hi,

    I can only recommend you a linux distribution like Debian where you have the most used perl modules prepackaged and also the Apache webserver with compiled mod_perl support, and ssl, and mysql, etc... also Mason ;-)

    So you only need to do a apt-get install list of packages and you can get a list of all the packages you need to satisfy the dependencies..., take a look at apt-get and dselect to get a better way to get the list of packages.

    For all the rest of the perl modules that aren't prepackaged in .deb files, you can get it from CPAN and put it into a PAR, or simply ship with the other .deb files the tar.gz files from the modules sources.

    Sounds easy, right?

    Regards,

    :-)
      Yeah, on most linux distros that I work with, I use apt or yum or rpm, or some other package management program...but in this case there will potentially (most likely) be no externel network access so none of those update programs would work.

      I think in my case using PAR will definitely help with the perl dependencies. I think most of the Linux boxes I will be installing on will be redhat or fedora, which usually come with Apache,MySql and Perl but it would probably be best (as advised before) if I install in another set of directories.

        Hi,

        One thing is doing an network update, and another is creating a Cd which contain all the updates necessary... and that's what I mean, you create/compile a Cd with all the necessary updates, for example a Cd with .deb packages and some tar.gz and then you take it to the non-ext-net-node and make a local update of the packages... ;-)

        And you know the packages you need because doing something like apt-get showpkg X you can see the dependencies this package has.

        Get an idea of what I mean?

        Regards,

        ;-)
Re: WebApp Installation Preparation
by donarb (Beadle) on Jul 01, 2005 at 06:55 UTC
    Take a look at the Krang source. It's a content management system built around CGI::Application. There are scripts in there that will build and install the whole system (including Apache/mod_perl) from an archive.

    http://krang.sourceforge.net