Ok, I’ve been pulling my hair out for about a week on this stupid ColdFusion 9 installer. Seriously, it’s been a nightmare for me!
I’m running RHEL 5.5 32-bit, but I suspect this problem will happen to anyone downloading the free ColdFusion 9 installer from Adobe (until they fix it). The Developer and Trial versions get no support, even if you are trying to test before upgrading from a licensed version of MX 7. Luckily I put up enough stink on Twitter that I got around this ridiculous policy (thanks to @Adobe_Care). I know I was a bit of a troll, but seriously, when someone is tries to help your company fix your product, you should help them back. Maybe I should have used the secret phrase SHIBBOLEET to get past the basic support techs (hat tip: @jsternberg)… I’ve also gotta thank @cfjedimaster and @fymd for at least trying to help me out.
So here is the problem, the Cold Fusion installer scripts have historically set the BLOCKSIZE variable to 32768. I have no idea why people do this, BLOCKSIZE is a reserved variable in Unix/Linux for the filesystem. It’s not like the script needs to use the variable BLOCKSIZE… the script could use IGNORAMUS as the variable name. The problem with this script compared to the installer script from CF MX 7 (and probably 8) is that 9 compares the “needed space” with a blocksize set to 512 to a df without changing the blocksize to 512.
Basically this is what the free developer script does:
export LAX_DEBUG=true
./ColdFusion_9_WWE_linux.bin
Preparing to install...
Checking for POSIX df.
Found POSIX df.
Checking tail options...
Using tail -n 1.
True location of the self extractor: /home/layotte/ColdFusion_9_WWE_linux.bin
Creating installer data directory: /tmp/install.dir.27024
Creating installer data directory: /tmp/install.dir.27024/InstallerData
Gathering free-space information...
Space needed to complete the self-extraction: 2636600 blocks
Available space: 439115 blocks
Available blocks: 439115 Needed blocks: 2636600 (block = 512 bytes)
WARNING: /tmp does not have enough disk space!
Attempting to use /home/layotte for install base and tmp dir.
Creating installer data directory: /home/layotte/install.dir.27024
Creating installer data directory: /home/layotte/install.dir.27024/InstallerData
Available blocks: 439114 Needed blocks: 2636600 (block = 512 bytes)
WARNING! The amount of /home/layotte disk space required to perform
this installation is greater than what is available. Please
free up at least 1098743 kilobytes in /home/layotte and attempt this
installation again. You may also set the IATEMPDIR environment
variable to a directory on a disk partition with enough free
disk space. To set the variable enter one of the following
commands at the UNIX command line prompt before running this
installer again:
- for Bourne shell (sh), ksh, bash and zsh:
$ IATEMPDIR=/your/free/space/directory
$ export IATEMPDIR
- for C shell (csh) and tcsh:
$ setenv IATEMPDIR /your/free/space/directory
The discrepancy is because the installer script runs df -P to calculate the free space after it sets the BLOCKSIZE to 32768 and then it compares it against a number with a BLOCKSIZE calculated at 512. Here’s a video I made for Adobe support…
I knew if I included -B 512 in the DF command, it would screw up all the checksums and mess up the file extraction points from the file. I opened up the file and tried renaming the BLOCKSIZE variable to ZLOCKSIZE, I knew this shouldn’t mess up the checksum’s for file extraction… but it did because after saving the new file, the file size increased by 1 byte.
Then it struck me, what if I piped the script through sed and did a search/replace. This was the key to success for my issue. This was the command I used:
cat ColdFusion_9_WWE_linux.bin | sed "s/BLOCKSIZE/IGNORAMUS/" \
> ColdFusion_9_WWE_linux.new.bin
Note the IGNORAMUS has just as many characters (and thus bytes) as BLOCKSIZE. Ultimately this renamed the variable, $BLOCKSIZE and $OS_BLOCKSIZE… but that doesn’t matter, because neither one of these variable names are important to the script, as long as they are consistent with each other. The file size remained the same after doing this, which gave me a little hope.
Then I set the BLOCKSIZE system variable to 512 to match the original OS_BLOCKSIZE variable, now OS_IGNORAMUS. This way, when the df command runs, it is compared against the same blocksizes.
export BLOCKSIZE=512
./ColdFusion_9_WWE_linux.new.bin
Preparing to install...
Checking for POSIX df.
Found POSIX df.
Checking tail options...
Using tail -n 1.
True location of the self extractor: /home/layotte/ColdFusion_9_WWE_linux.new.bin
Creating installer data directory: /tmp/install.dir.16822
Creating installer data directory: /tmp/install.dir.16822/InstallerData
Gathering free-space information...
Space needed to complete the self-extraction: 2636600 blocks
Available space: 29210664 blocks
Available blocks: 29210664 Needed blocks: 2636600 (block = 512 bytes)
Computed number of blocks to extract: 1877
Extracting the JRE from the installer archive...
Extracting JRE from ./ColdFusion_9_WWE_linux.new.bin to /tmp/install.dir.16822/Linux/resource/jre_padded ...
Extracting done, exit code = 0
Extracting JRE from /tmp/install.dir.16822/Linux/resource/jre_padded to /tmp/install.dir.16822/Linux/resource/vm.tar.Z ...
Extracting done, exit code = 0
Unpacking the JRE...
Unpacking the JRE...
gzip is /bin/gzip
GZIP done.
TAR done.
Extracting the installation resources from the installer archive...
Extracting install.zip from ./ColdFusion_9_WWE_linux.new.bin to /tmp/install.dir.16822/InstallerData/installer.padded ...
Extracting to padded done, exit code = 0
Extracting from padded to zip done, exit code = 0
Creating disk1 data directory: /tmp/install.dir.16822/InstallerData/Disk1
Creating instdata data directory: /tmp/install.dir.16822/InstallerData/Disk1/InstData
Extracting resources from ./ColdFusion_9_WWE_linux.new.bin to /tmp/install.dir.16822/InstallerData/Disk1/InstData/Resource1.zip ...
Extracting done, exit code = 0
Configuring the installer for this system's environment...
And there you have it, the installer ran like a beaut, no errors and now I have the development version of ColdFusion running without any issues (I did have to go in an change the group of the CFIDE dir, but that’s fine). I haven’t messed around with it yet, I wanted to post this first. Apparently I am the only person to have this problem. Hopefully Adobe will fix their installer script so no one else has to go through this.