Beefy Boxes and Bandwidth Generously Provided by pair Networks
Do you know where your variables are?

A guide to installing modules for Win32 (2022 Edition)

by pryrt (Abbot)
on Jul 31, 2022 at 22:00 UTC ( #11145868=perltutorial: print w/replies, xml ) Need Help??

holli's excellent A guide to installing modules for Win32 has served the Monks well for nearly two decades. But after that amount of time, there is newer information that needs to be shared for guiding the next generation of Win32 Perl Monks.

ActiveState phased out using PPM in 2021 (), so starting with ActivePerl 5.28, PPM is no longer included.

And since 2008 (), there's been an alternative distribution, Strawberry Perl, which comes with it's own gcc/g++ compiler and build environment. Modern Strawberry Perl versions do not require using PPM for installation (though it still ships with a PPM client, if you can find PPM repositories to use it with).

ActiveState's ActivePerl

After ActiveState dropped PPM support, the modern method of "installing" modules on ActivePerl, as announced in The ActiveState Platform and Perl 5.32, is to make a binary ActivePerl build with the State Tool, where you tell it all the modules you need, and it will provide a binary build with all of those modules (and their dependencies) already installed.

Strawberry Perl

One of the benefits of Strawberry Perl is that they include a working gcc/g++ compiler and build environment, complete with a variant of make (dmake for older versions, gmake for newer versions; see perl -V:make to find out which your copy of Strawberry Perl uses) that means you can easily build and install modules similarly to how it's done on Linux and other OS:

The default client comes with Strawberry Perl, so installing Some::Module is as easy as cpan Some::Module. Strawberry Perl also comes pre-installed with cpanm, an alternative CPAN client that handles dependencies, allowing installation with cpanm Some::Module. You can install cpanplus or other of the advanced CPAN clients on Strawberry Perl as well.

Finally, if you are a traditionalist and want to manually build using the traditional recipe, you can look at the output of perl -V:make and then pick the appropriate variant of the recipe:

perl Makefile.PL make make test make install
perl Makefile.PL dmake dmake test dmake install
perl Makefile.PL gmake gmake test gmake install

Some modules may specify their own recipe for building and installing. If so, then try following their directions; the Strawberry build environment is pretty good. But if they specify a different recipe, it doesn't work, and the CPAN-client options don't work, you should file a bug report with the author, because any distributed module should be installable using cpan, cpanm, cpanplus and the like.

For any of these installation techniques: If you have an installed copy of Strawberry Perl, your path should point to the Perl and C binaries already; if you have a portable copy of Strawberry Perl, you may need to run portableshell.bat to get the environment set up correctly.

Other Alternatives

If you have built your own Perl, or for Windows Subsystem for Linux, or cygwin, or other Windows tools that provide bash or bash-like environments, you should still be able to follow the instructions in the original A Guide to Installing Modules for installing, or use cpanm or cpanplus or other clients not mentioned in the original guide.

Win32 Caveat: Module Case Sensitivity

File names on Windows are not case-sensitive, so some Windows users are used to typing PATHS IN ALL CAPS. Do not type module names in all caps, even when using a CPAN client from the Windows command line (cmd.exe or powershell), as Perl and the CPAN tools will not treat SOME::MODULE and Some::Module the same, even if they resolve to the same ...\Some\ file.

Windows Incompatibility

Please note that some modules have been created in such a way that they are incompatible with the Windows operating system. This guide cannot help you install and use a module that is not compatible with your OS. (You can check the CPAN Testers reports linked from the page for each module: if it doesn't show any passing results on the mswin32 platform, you may have difficulty installing the module.)

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (2)
As of 2023-10-02 20:47 GMT
Find Nodes?
    Voting Booth?

    No recent polls found