Installing CPAN Modules on ActivePerl 5.18 and Later

installing CPAN Modules on ActivePerl 5.18 and Later
April 2021 Update: PPM has been replaced with the ActiveState Platform, which enhances PPM’s build and deploy capabilities. You can try it for yourself by installing Perl 5.32, or else let us show you how it works.

CPAN is a critical library for Perl programmers, and knowing how to install modules from this repository into ActivePerl is important. In a prior blog we showed how to do the installation on older versions of ActivePerl, and in this one we’ve provided a new step-by-step guide for those on ActivePerl 5.18 or later.

While we include a wide variety of modules in ActivePerl, you may want to utilize additional modules from CPAN. Once you have found a module you like, you have two choices:

  1. Download pre-compiled binaries with the Perl Package Manager (PPM)
  2. Build and install the modules yourself with the regular Perl tools, like the CPAN shell.

For the first, all it takes is a simple command like this:

ppm install Class::XSAccessor

and for the second:

cpan Class::XSAccessor

The examples and screenshots below refer to ActivePerl 5.22 on Windows 10, but the PPM command works the same way with the Linux and Mac OS X versions of ActivePerl. (As mentioned above, these steps will work for ActivePerl 5.18 or later.)

Using The Perl Package Manager

ActiveState maintains repositories of precompiled CPAN packages that can be installed with either the PPM command-line client, or the PPM GUI application. For example, to install the DBD-mysql database driver all you have to do is run the ppm install command:

Alternatively you can run ppm without any parameters to invoke the GUI, just search for DBD-mysql, select the DBD-mysql package, and perform the following installation:

ActiveState downloads all new packages from CPAN once a day and tries to build them for each supported platform. The generated binaries will be added to the PPM repositories if:

  • All required prerequisite modules are available.
  • The build is successful.
  • The module passes all of its own regression tests.

Troubleshooting PPM Connections

For those using PPM with a proxy server you can follow these instructions. PPM uses the LWP module to access the ActiveState package repository. If Internet access must go through a proxy server, then the http_proxy environment variable must be set to tell LWP how to get a connection.

For Windows, use:

set http_proxy=http://user:passwd@proxy.company.com:8080

And in bash on Linux/Mac, use:

export http_proxy=http://user:passwd@proxy.company.com:8080

A common error is to leave out the protocol prefix (“http://” or “https://”) from the variable setting, in which case it will not work at all.

Many places on the net explain that the environment variables http_proxy_user and http_proxy_pass need to be set. This information was true for the old PPM3 client and is no longer correct. Only the standard http_proxy variable is used.

The ppm log command is a handy debugging tool to display the last couple of minutes from the PPM log file in case the connection to the repo still fails after setting the http_proxy variable:

ppm log 5

For more information about firewalls and proxies, visit this FAQ.

Building Modules Locally

If a precompiled version of the module you are looking for does not exist in the PPM repository, you can attempt to compile it yourself. For most modules, this is a simple process, even on Windows. Some modules, particularly those which require other C libraries, will require additional steps. Building these types of modules will not be covered here. If you run into trouble with a particular module that needs a custom build configuration, let us know and we may be able to add it to PPM in the future.

Windows

Building binary Perl modules on Windows used to be a bit of a black art, requiring Microsoft Visual Studio and a lot of trial-and-error. These days, ActivePerl on Windows is built using MinGW (a Windows port of GCC) and can automatically install the tools needed.

The CPAN shell will automatically download and install MinGW and dmake on first use, and then attempt to build the requested module:

To manually compile or test a module outside of the cpan shell, use dmake in the directory where the downloaded module code resides:

perl Makefile.PL
dmake
dmake test
dmake install

Tips:

  • MinGW and dmake will be installed into C:\Perl\site \bin. Make sure this directory is on your PATH (done by default by the ActivePerl installer).
  • You must use dmake.exe with MinGW. Using other make tools such as GNU make or nmake will not work.

Linux

On Linux, GCC and associated build tools are typically already installed. If not, the necessary tools are usually grouped into a package called build-essential or similar. Consult your Linux distribution’s documentation for details. Once GCC is installed, the cpan command will be able to build most modules.

Mac OS X

Installing Xcode from the Mac App Store or the Apple Developer site will install all the necessary tools and allow you to build most modules.

Summary

Whether you use our pre-built PPM packages or choose to compile modules yourself, ActivePerl makes installing CPAN modules easier than ever. Thanks to modern open-source tools like MinGW and dmake it makes it easier for Windows developers when it comes to building binary Perl modules.

Recent Posts

Tech Debt Best Practices: Minimizing Opportunity Cost & Security Risk

Tech debt is an unavoidable consequence of modern application development, leading to security and performance concerns as older open-source codebases become more vulnerable and outdated. Unfortunately, the opportunity cost of an upgrade often means organizations are left to manage growing risk the best they can. But it doesn’t have to be this way.

Read More
Scroll to Top