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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
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 |
You’ll see that I actually have plenty of space:
1 2 3 4 5 6 7 |
df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/VolGroup00-LogVol00 28G 13G 14G 48% / /dev/sda2 68G 1.5G 63G 3% /www /dev/sda1 99M 25M 70M 26% /boot tmpfs 1.9G 0 1.9G 0% /dev/shm |
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:
1 2 |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
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.