Reinstalling 5.16/64-bit

Posted by berniec on 2014-01-22 19:01

I am among the folks who have seriously broken/missing documentation. My *perl* [and all the packages I've used so far, which isn't all that many of 'em] runs perfectly. But the documentation is decimated [as with everyone else, even the core-components section is missing]. The only "solution" I've seen is a vague-feeling comment that something must have gone wrong with the installation [even though *some* docs are installed, and the actual program is installed], and the fix is to reinstall. such is life...

I downloaded the latest ActivePerl- Can I just run the msi [and hope for the best with the documentation] or should I uninstall the previous perl64/5.16 and THEN try reinstalling. Thanks!


ActiveState Staff
Fri, 2014-01-24 13:25

If you don't, you'll get an error reporting the presence of a previous version of Perl. But that's unlikely to be a solution by itself.

The installer ships with the documents zipped, to keep the size from ballooning. During an installation, the documents will be unzipped and written to the appropriate folder.

On some platforms, this can fail if the zipped documents have been preemptively stripped out of the download by a zealous AntiVirus or Firewall, but Windows is smart enough to notice that the MSI file isn't the size it's expected to be, and the Installer will croak. So we can be fairly confident that your installer is intact (and there are MD5 checksums available on the site to confirm this if necessary).

If you're installing the MSI from the command line, the options you specified may not have asked for the documents - they are an option.

If you didn't install from the command line, then it's likely that the installer has been prevented from writing the documents after it extracts them. The write permissions on the target directory are something you can look into, and so are the directory creation timestamps. If the timestamps are much older than they reasonably should be, a previous version of Perl may have been on the system, and may not have been uninstalled as per the manuals:
If this is the case, then a full remove and re-install would be all you need to do. I suspect it won't, because the odds are good that the directory was owned by the same user that is running the current installation, and in that case, a write shouldn't block.

There are other things that are capable of blocking a installer process from writing to disk. AntiVirus or AntiSpyware is a common culprit. So is Windows itself; if you are installing to a directory which requires elevated privs to write you encounter UAC on Vista and higher versions of Windows, and MSI installers are not designed to install software to any disk except the local system disk.

If you happen to on an Enterprise version of Windows, your IT team can also block installers from operating by setting certain Group Policies, but that usually would prevent the installer from running at all, and not give a spotty, half installation.

All in all, it sounds most like an AntiVirus program is the reason for this, so just a remove-and-reinstall would be likely to hit the same barrier.

berniec | Mon, 2014-01-27 11:48

I removed the old perl and installed the latest version {5.16.3160}. I watched the install and it said "generating HTML docs". And shortly thereafter the install completed and I see that the docs are *still* messed up. No complaints, and no indication of any errors. And some of the docs seem to be installed:

Directory of C:\Perl64\html

01/27/2014 02:27 PM .
01/27/2014 02:27 PM ..
08/31/2007 04:46 PM 15,201 Active.css
03/13/2013 02:28 PM 1,833 activeperl.html
09/13/2012 04:01 PM arch
03/13/2000 07:56 PM 6,242 Artistic.txt
01/27/2014 02:27 PM bin
10/11/2004 09:26 AM 126 blank.html
03/13/2013 02:28 PM 4,155 changes.html
01/27/2014 02:27 PM Components
03/13/2013 02:28 PM 6,492 Copyright.html
10/17/2005 10:31 PM 45 displayToc.js
08/08/2012 11:43 AM 18,994 EULA-Community_License.r
08/08/2012 11:43 AM 18,030 EULA-Community_License.t
01/27/2014 02:27 PM faq
08/25/2006 12:41 PM 369 favicon.ico
01/27/2014 02:27 PM images
03/13/2013 02:28 PM 1,288 index.html
03/13/2013 02:28 PM 34,162 install.html
01/27/2014 02:27 PM lib
03/13/2013 02:28 PM 3,826 perlmain.html
03/13/2013 03:05 PM 9,399 perltoc.html
08/12/2010 02:46 PM 4,117 readme.html
03/13/2013 02:28 PM 10,117 release.html
08/12/2010 02:53 PM 6,966 resources.html
02/07/2006 03:50 PM 609 scineplex.css
12/19/2010 06:11 PM site
04/14/2005 02:09 PM 578 tocHeader.css
10/17/2005 10:25 PM 0 tocParas.js
10/17/2005 10:25 PM 0 tocTab.js
04/12/2005 08:22 AM 1,131 topframe.html
01/27/2014 02:27 PM Windows

Does any of this seem to hint at why there are no docs. I just double-clicked on the .msi file and then OKed it when the UAC asked [this all on win7/pro].


I see, though, that things *didn't* get installed properly, For example, when I look at release.html, it says:

ActivePerl 1603 -- Release Notes

Welcome, and thank you for downloading ActivePerl. This release corresponds to Perl version 5.16.3.

Even though I just installed 3160. And I tried perl -V and it got really nasty:

C:\Users\Bernie>perl -V
Can't load 'C:/Perl64/site/lib/auto/Win32/Win32.dll' for module Win32: load_file
:The specified module could not be found at C:/Perl64/lib/ line 191
at C:/Perl64/lib/ActivePerl/ line 403.
Compilation failed in require at C:/Perl64/lib/ActivePerl/ line 403.
BEGIN failed--compilation aborted.

I'm going to try again. This time, after I uninstall Perl I'm going to nuke the entire Perl64 hierarchy [which means all my 'site' packages will have to be reinstalled...UGH!!] I wish I could remember where the list of installed packages lives.... PPM says I have 199 packages installed, but I'm not sure I can get an actual list of them... Ah, I can get that from the command line PPM with a little hacking.

Interesting: when I try to do "ppm help", right before I get the same error as I got above I get a popup "The program can't start because perl512.dll is missing from your computer". [I got that error there, too]

OK, so off to uninstall. *nuke* the perl 64 directory. Then try installing again. I'm not running any AV so that shouldn't be an issue....

berniec | Mon, 2014-01-27 11:58

OK, all is well, now. AFter I uninstall Perl, the Perl64 directory had just two subdirectories: site and html. I deleted both of them and *THEN* the install went through perfectly and all the docs are there. [but the release notes still say 1603..:o)].
Now to reinstall my 199 packages and I should be back on the air......

I wonder what it was in the site or html directories that make the "simple" install choke. I can tell it was trying to preserve my loaded packages but clearly that didn't work

berniec | Mon, 2014-01-27 13:11

For others who might run into this [and it'll happen every time you reload/upgrade]. BEFORE you uninstall the old Perl do
ppm list site >sitelist

Then take this little program:

use strict;
use warnings ;
unless (@ARGV == 1)
{   warn "Usage: ReloadSitePackages <listofpackages>\n" ;
    warn "   Get the package list by running 'ppm list site'\n" ;
    exit 1 ;
open (P, "<", $ARGV[0]) or die "Can't open package list: $!\n" ;
#Throw away the three header lines
while (my $pack = <P>)
{   next unless $pack =~ /^\| ([^ ]*) *\|/ ;
    print "call ppm install --area site --force $1\n" ;
exit ;

and run it as
PROGRAM sitelist >loadpackages.bat

Then run loadpackages.bat as administrator and your new perl will be all nicely reloaded and up to date.

ActiveState Staff
Tue, 2014-01-28 10:02

"The program can't start because perl512.dll is missing from your computer"

That means you still had 5.12 binaries in the Perl stack from the old version. After that, there is no way to predict what state your Perl is going to end up in. In a way, it's fortunate that the failure was obvious, and it got you looking into the problems quickly. A less obvious problem can cause insidious errors.

As you have found, a manual cleanup before a re-install is necessary to remove the components that were not in the original installer (documents in extracted form, and all modules installed locally)