MIDAS Knowledge Base MIDAS Knowledge Base

Server Readiness Tool reports Perl modules are missing when installed

Our handy Server Readiness Tool can be downloaded and used prior to purchasing a self-hosted edition of our web based room booking and resource scheduling software to quickly assess whether your server is ready to run our software.

As part of the checks the Server Readiness Tool performs, it will verify the existence of the Perl modules which MIDAS requires in order to function correctly. If any of these required modules are not found, the tool will inform you and provide guidance on how to install missing Perl modules.

Once you've installed any missing Perl modules, you can then run the Server Readiness Tool again, and all being well all tests will pass and your server will be ready to install and run MIDAS!

If however when you re-run the Server Readiness Tool after installing missing modules, you're informed that necessary modules are still missing, then it's likely that the modules you've just installed have not been installed to a correct location on your server.

For example, some servers have multiple instances of Perl installed at different locations, for different users or indeed different purposes (i.e. WHM/cPanel use a dedicated and isolated instance of Perl). If you've installed Perl modules to one of these instances of Perl, they may not be available to the specific Perl instance that you're running the Server Readiness Tool under, and therefore the Server Readiness Tool will report that they are not installed.

When looking for modules, Perl searches in the locations specified within either the @INC environmental variable (under Linux), or "Path" environmental variable (under Windows). If the modules cannot be found in one of folders (or their sub folders) contained within @INC/Path, then the Server Readiness Tool will report that the modules are missing.

You'll therefore need to ensure that any Perl modules you're installing are installed to a location reference within @INC/Path system variable.

Windows To view the contents of the "Path" environmental variable on Windows:Linux To view the contents of the "@INC" environmental variable on Linux:
  1. Open System Properties (Control Panel → System → Advanced Properties)
  2. On the Advanced tab, click the "Environmental Variables" button
  1. From the command line (Bash), type:
    # perl -e 'print join "\n",@INC'

Windows To locate where a Perl module has been installed on Windows:Linux To locate where a Perl module has been installed on a Linux server:
  1. Use Find Files & Folders under Windows to search. For example, if you've installed the Perl module "Crypt::Eksblowfish", search your computer for "Eksblowfish"
  1. Issue a "find / -name" command from Bash. For example, if you've installed the Perl module "Crypt::Eksblowfish", issue:
    #find / -name Eksblowfish

You can then compare the location on the Perl module with the locations specified in @INC/Path.

Here's an illustrative example on Linux:

# perl -e 'print join "\n",@INC'
/usr/local/lib64/perl5
/usr/local/share/perl5
/usr/lib64/perl5/vendor_perl
/usr/share/perl5/vendor_perl
/usr/lib64/perl5
/usr/share/perl5

# find / -name Eksblowfish
/home/virtfs/usr/local/lib64/perl5/Crypt/Eksblowfish
/home/virtfs/usr/local/lib64/perl5/auto/Crypt/Eksblowfish
/usr/local/lib64/perl5/Crypt/Eksblowfish
/usr/local/lib64/perl5/auto/Crypt/Eksblowfish

In the above example four different instances of the Crypt::Eksblowfish module were found on the server, however, not all of these paths are covered by the paths specified within the @INC variable.

As the path /usr/local/lib64/perl5/Crypt/Eksblowfish is covered by the @INC path /usr/lib64/perl5, the Server Readiness Tool will be able to locate this module.

If the location where your Perl modules are installed is not encompassed within one of the @INC/Path locations, this will be the reason for module not found errors/warnings when running the Server Readiness Tool.

You'd either need to modify the @INC/Path environmental variable to point to the location where your Perl modules are installed, or more preferably install Perl modules to a location already present in @INC/Path.

TIP: If running Linux and installing modules via CPAN/MCSPAN commands, this may install modules to /root/perl or /root/perl5, etc (locations which are unlikely to be included within @INC). Installing modules via "yum" instead, or alternatively, running CPAN/MSCPAN commands though the same instance of Perl as the Server Readiness Tool is using, should install modules to the correct location

Perl module install locations in Strawberry Perl Strawberry Perl Users: Strawberry Perl is an odd case; by default @INC contains "C:/Strawberry/perl/site/lib,C:/Strawberry/perl/vendor/lib,C:/Strawberry/perl/lib", however Strawberry Perl will only look for installed modules in the first of these locations. When installing Perl Modules under Strawberry Perl by default they are installed to C:/Strawberry/perl/vendor/lib and therefore may not be detected by Perl/our Server Readiness Tool. To resolve, simply add/modify the "PERL5LIB" environment variable on Windows to point to C:\Strawberry\perl\vendor\lib. After setting the PERL5LIB variable and rebooting your server, the Server Readiness Tool should be able to see the Perl modules installed under C:/Strawberry/perl/vendor/lib

You might also be interested in...


MIDAS » KB » Support » Article 00165

← Return to the Knowledge Base