I’m installing ActivePerl-5.16.3.1603-x86_64-linux-glibc-2.3.5-296746 on CentOS 7, with the command: ./install.sh --license-accepted --prefix=/ppp/software/ActivePerl-5.16
But the installation failed with the error message, has any one seen this issue and how to fix it?
Thank you very much!
Installing ActivePerl...
Copying files to /ppp/software/ActivePerl-5.16...done
Relocating...done (256 files relocated)
Generating HTML documentation...Can't locate ActivePerl/DocTools.pm in @INC (@INC contains: /tmp/perl---------------------------------------------please-run-the-install-script---------------------------------------------/site/lib /tmp/perl---------------------------------------------please-run-the-install-script---------------------------------------------/lib .).
BEGIN failed--compilation aborted.
Install of ActivePerl to /ppp/software/ActivePerl-5.16 failed:
Command exits with 2:
/ppp/software/ActivePerl-5.16/bin/perl -MActivePerl::DocTools -eUpdateHTML(1)
stopped at support/install.pl line 301.
If skip installing HTML Doc, got the following error:
Installing ActivePerl...
Copying files to /ppp/software/ActivePerl-5.16...done
Relocating...done (256 files relocated)
Can't locate ActivePerl/PPM/InstallArea.pm in @INC (@INC contains: /tmp/perl---------------------------------------------please-run-the-install-script---------------------------------------------/site/lib /tmp/perl---------------------------------------------please-run-the-install-script---------------------------------------------/lib .).
BEGIN failed--compilation aborted.
Install of ActivePerl to /ppp/software/ActivePerl-5.16 failed:
Command exits with 2:
/ppp/software/ActivePerl-5.16/bin/perl -MActivePerl::PPM::InstallArea -e ActivePerl::PPM::InstallArea->new('perl')->sync_db(keep_package_version => 1)
stopped at support/install.pl line 310.
I suspect that ActiveState’s response will be along the lines of 5.16 no longer being supported.
I shall start by saying I have limited experience on Linux OS, and have not installed ActivePerl on Linux.
The output from the install script shows that the files have been relocated to /ppp/software/ActivePerl-5.16, which ought to include ActivePerl/DocTools.pm. Can you locate ActivePerl/DocTools.pm there?
@inc does not appear to include paths to the relocated lib folders.
Does adding the path for ActivePerl/DocTools.pm to @INC using the PERL5LIB environment variable resolve the issue?
What do see in @INC if you run env perl -V ?
Are you logged in as a root user? If not, have you tried sudo ./install.sh ?
The script is failing to complete relocation, even though it claims it has. The error message string is showing the prelocation values that come right out of the uninstalled binaries. Yes, 5.16 hasn’t been supported for installations in quite a few years, and we wouldn’t be updating any of the installers for it to accommodate external issues.
Does the subfolder /ppp/software exist before you run the installer, and does the current user have read, write, and execute permissions there? If the permissions don’t match, try logging in as root or using sudo as suggested above.
Blocked relocation raises some more exotic possibilities:
There might be issues with SELinux settings on the target folder or with the binaries that 5.16 is using to extract itself and relocate.
There might be issues with a Security Suite protecting the target folder or preventing tar files in the payload from extracting or being modified.
You should not expect that PPM will work, even if this completes. While the PPM servers are still online for a while longer, the hosts they run on will no longer accept insecure network connections, and these old versions can’t provide a secure connection by current standards.
Not having any access to PPM makes using these old versions very much more restricted than you’re probably used to, and you’re likely to have challenges duplicating any existing installations you have on other servers.
I’m running the install.sh with root user
The DocTools.pm is located in the right place, but seems @INC doesn’t include the /ppp/software/ActivePerl-5.16/lib path which has all the modules.
Please see the output below
[root@xx$ ls -l /ppp/software/ActivePerl-5.16/lib/ActivePerl/DocTools.pm
-rw-r--r-- 1 x x 1863 Jul 7 18:07 /ppp/software/ActivePerl-5.16/lib/ActivePerl/DocTools.pm
[root@xx$ ls -l /ppp/software/ActivePerl-5.16/lib/ActivePerl/PPM/InstallArea.pm
-rw-r--r-- 1 x x 36932 Jul 7 18:07 /ppp/software/ActivePerl-5.16/lib/ActivePerl/PPM/InstallArea.pm
[root@xx$ perl -V
Can't locate Config.pm in @INC (@INC contains: /tmp/perl---------------------------------------------please-run-the-install-script---------------------------------------------/site/lib /tmp/perl---------------------------------------------please-run-the-install-script---------------------------------------------/lib .).
BEGIN failed--compilation aborted.
[root@xx$ ls -l /ppp/software/ActivePerl-5.16/lib/Config.pm
-rw-r--r-- 1 x x 3327 Jul 21 17:35 /ppp/software/ActivePerl-5.16/lib/Config.pm
I’m running the install.sh with root user, and it has all the read/write/execute permission.
I’ve tried with or without the the /ppp/software/ActivePerl-5.16 folder exists before running the installer, either way works.
It looks like all the files have been relocated and all the required pm files are in the lib folder as I posted earlier. But the @INC doesn’t have the /ppp/software/ActivePerl-5.16/lib folder.
[root@xx]$ pwd
/ppp/software/ActivePerl-5.16
[root@xx$ ll
total 20
drwxr-xr-x 2 x x 4096 Jul 7 18:06 bin
drwxr-xr-x 2 x x 30 Jul 7 18:06 etc
drwxr-xr-x 8 x x 4096 Jul 7 18:06 html
drwxr-xr-x 104 x x 8192 Jul 7 18:18 lib
drwxr-xr-x 4 x x 30 Jul 7 18:18 man
drwxr-xr-x 3 x x 17 Jul 7 18:22 site
[root@xx]$ du -h --max-depth=1
0 ./site
8.8M ./bin
87M ./lib
68K ./etc
31M ./man
1.5M ./html
127M .
I’m new to perl, is there any way I can set @INC?
Not sure if I understood correctly, are you saying even if the installation is successful, I won’t be able to use perl?
As @ActiveState-Support suspected, it was a source package issue. As for our deployment process, the source package was copied from another server, then compressed, uploaded to git, then the current server downloaded from git, then uncompressed it to the current server. There must be some file missing/damaged during those steps.
I tried coping the source package directly to the current server, and the installation was successful!
“Relocation” is more than just putting the files in the appropriate folder. Once the files are in the folder they need to be modified so that internal pointers match the new location.
What likely happened in that process was that one or more symbolic links got replaced by copies of the file instead of links. If there’s a copy instead of a link, the relocation changes are not applied where they need to be made.
Should you need to add library paths to @INC, then you can use PERL5LIB.
In a bash shell
export PERL5LIB=<path to library>
adds the specified path to the beginning of @INC. Separate multiple paths with a colon.
By default, the zip command dereferences symbolic links, i.e. symbolic links are replaced by a copy of the linked file or folder (as mentioned by ActiveState-Support).
Use the --symlinks option to preserve links.
Perl 5.16 uses ActiveState Perl Pack Manager (PPM). You will not be able to connect the PPM server, and therefore cannot add Perl packages to your installation using PPM.
You could always add packages using cpan or cpanm.
Alternatively, you could upgrade to Activestate Perl 5.36
the cost of which would depend on your organisation’s requirements, see
That is nice of you to say sorry. I have no issue with helping others, as long as they learn from it, and therefore do not need to ask the same question again in the future.