Makeself is a shell script that creates self-extracting archives for all Unix platforms having a reasonable set of commands (tail, tar, sh, etc.).

The generated archive is actually 2 files in one:

  • A shell script at head of the file doing the extraction
  • followed by the archive to extract, usually a gzip compressed tar file. Makeself also supports uncompressed and bzip2 compressed tar archives.

Note: I have made a small modification to allow usage of "compress" as well. This was suggested by Jeff as Solaris machines previous to version 2.8 do not come with gzip preinstalled, only compress.

This is similar to tclkit, which contains a tcl script in front followed by a metakit database. In contrast to Tclkit makeself does not need a specialized runtime but is founded on commands commonly found on unix systems.

An important feature of the generated script/tar file is the ability of the stub to execute a file in the archive after unpacking it. This allows the generic stub to call upon a specialized installer for the package in question.

The current place to get makeself from is . And yes, makeself was used to create its own distribution.

It also seems that there are RPMs of makeself available for various linux distributions.

EE: How is this different from the standard unix command shar ?

It is different because the standard unix command shar only wraps text files. makeself appears to wrap any file - tar, gzipped, etc.

EE: I"m sorry, but that doesn't appear to be true. My shar tells me that it can handle text and binary files, can uuencode files that look like binary, and can, if desired, compress and uuencode ALL files when storing them...

EE: Hmm. Actually, shar does not appear to be able to specify "run this program after extracting it", so I guess there is a difference.

EE: shar in modern versions of Linpix can be used to run executables after extraction along with chmodding

RFox - 2013-07-03 13:10:13

A fairly simple post processing of shar archives lets you do an extract/execute....though I've only tried this with archives created by Linux shar.

Many of the people interested in makeself will also want to consider alternative methods of "deployment".