Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re^3: Packaging my own Perl Module

by Khurrum (Novice)
on Nov 18, 2007 at 23:39 UTC ( [id://651552]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Packaging my own Perl Module
in thread Packaging my own Perl Module

Hi thank you for your help. I have looked at the toolkit but i am a little confused. Here is what i want to. I have a script that has to be run on multiple machines and that uses some Perl Packages including Config::Auto, SOAP::Lite now i want to be able to pass my script on to a user on one of the test machines and be able to run it without having to install any Perl packages. It is safe to assume that each machine will have ActivePerl installed.

Now what i was thinking is to package those modules somehow so my script could be run in conjunction with those modules. Now one solution i initially thought was to get all the PM files, zip them together and then just copy them in the Perl folder on each machine, using a trivial script. The problem i am seeing is that there could be loads of files that would need to be copied so i am not sure how feasible and efficient this solution would be.

Now you pointed me to PAR and i used the PAR::Packer package and the pp utility to generate a par file using 'pp -p -o output.par input.pl'. I am not sure if i should generate a PAR file or an EXE. With an EXE i think it unzips all the files into a TEMP folder and then deletes them when the EXE stops.

The other solution is to provide each end user with the output.par file and the script i want to run. I am not sure how the PAR file mechanism works like does it unzip the files somewhere local or something? But the problem with this i have found is that the end user will still need to install the PAR and PAR:Dist packages in order to actually read a PAR file.

Could you please suggest a solution and correct the things i have misunderstood. Thanks.

Replies are listed 'Best First'.
Re^4: Packaging my own Perl Module
by erroneousBollock (Curate) on Nov 19, 2007 at 00:00 UTC
    Now what i was thinking is to package those modules somehow so my script could be run in conjunction with those modules. Now one solution i initially thought was to get all the PM files, zip them together and then just copy them in the Perl folder on each machine, using a trivial script. The problem i am seeing is that there could be loads of files that would need to be copied so i am not sure how feasible and efficient this solution would be.
    As you imply, this doesn't work well for modules that use binary shared libraries.

    I am not sure if i should generate a PAR file or an EXE. With an EXE i think it unzips all the files into a TEMP folder and then deletes them when the EXE stops.
    That is basically correct. I'm not sure if it must clean up the unpacked files... they're unpacked to some tmp directory generally writable by the user on the given OS.

    The other solution is to provide each end user with the output.par file and the script i want to run. I am not sure how the PAR file mechanism works like does it unzip the files somewhere local or something?
    It works identically as when pp is used to create an executable.

    But the problem with this i have found is that the end user will still need to install the PAR and PAR:Dist packages in order to actually read a PAR file.
    Ah, if that were the case then PAR would be pretty useless, no? ;-)

    Have a look at the PAR Loaders section in the Perl Archive Toolkit tutorial. Specifically:

    The PAR loader can prepend itself to a PAR file
    So either:
    • the user just needs perl installed (by prepending the par loader to the archive), or
    • the user runs the executable you provide (no perl needed), or
    • the user has PAR installed and loads the PAR archive directly.
    There are plenty of options.

    -David

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://651552]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others having a coffee break in the Monastery: (4)
As of 2024-03-29 06:37 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found