I guess that every single *nix user, at least once, has run across files with the *.run
or *.bin
extensions. These scripts are usually software installers and are widely used to distribute, but not limited to, proprietary software to the Unix world. Examples are the popular NVidia or ATI display drivers for Linux and other operating systems, the Sun Java Runtime Environment etc. Recently, I encountered some issues when trying to use such installers.
But first, some information about these scripts (installers). These are created with the makeself shell script, which actually creates self-extractable tar.gz
archives. When launched, the installer does an archive integrity check and then extracts the included software to the desired location and performs all the programmed actions in order to make the installed software functional within the operating system.
Recently, I had to install the SecureFTP ftp client for linux, but the script errored out with some strange messages like not being able to uncompress the archive or about not being able to verify the archive’s checksum or about wrong command line parameters used in some command calls internally. This had happened in the past too, when I wanted to install the good old game Unreal Tournament (1999) so to revive some good memories. ;-)
Here are some of the weird error messages:
tail: cannot open `+187' for reading: No such file or directory gunzip: stdin: not in gzip format Verifying archive integrity...tail: cannot open `+6' for reading: No such file or directory Error in check sums 1237260170 2341625838
As stated at the makeself website, archives created with Makeself older than v2.1.2 were using an old syntax for the head
and tail
Unix commands and there are problems uncompressing the included software.
In order to resolve this issue and make the installer “assume” that you use an old GNU/Linux version, you should export the following environment variable before using the installer:
export _POSIX2_VERSION=199209
After you finish installing the software, delete that ENV variable:
unset _POSIX2_VERSION
It took me a significant amount of time to learn about this workaround and, basically, I discovered it while searching for the software that creates these self-installing archives.
Hope this tip helps someone out there.
Error when using old run/bin installers under Linux, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.