Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


The following was generated from http://www.megastep.org/makeself/


               makeself - Make self-extractable archives on Unix

   [2]makeself.sh is a small shell script that generates a self-extractable
   tar.gz archive from a directory. The resulting file appears as a shell
   script (many of those have a .run suffix), and can be launched as is. The
   archive will then uncompress itself to a temporary directory and an optional
   arbitrary command will be executed (for example an installation script).
   This is pretty similar to archives generated with WinZip Self-Extractor in
   the Windows world. Makeself archives also include checksums for integrity
   self-validation (CRC and/or MD5 checksums).

   The makeself.sh script itself is used only to create the archives from a
   directory of files. The resultant archive is actually a compressed (using
   gzip, bzip2, or compress) TAR archive, with a small shell script stub at the
   beginning. This small stub performs all the steps of extracting the files,
   running the embedded command, and removing the temporary files when it's all
   over. All what the user has to do to install the software contained in such
   an archive is to "run" the archive, i.e sh nice-software.run. I recommend
   using the "run" (which was introduced by some Makeself archives released by
   Loki Software) or "sh" suffix for such archives not to confuse the users,
   since they know it's actually shell scripts (with quite a lot of binary data
   attached to it though!).

   I am trying to keep the code of this script as portable as possible, i.e
   it's not relying on any bash-specific features and only calls commands that
   are installed on any functioning UNIX-compatible system. This script as well
   as  the  archives it generates should run on any Unix flavor, with any
   compatible Bourne shell, provided of course that the compression programs
   are available.

   As of version 2.1, Makeself has been rewritten and tested on the following
   platforms :
     * Linux (all distributions)
     * Sun Solaris (8 tested)
     * HP-UX (tested on 11.0 and 11i on HPPA RISC)
     * SCO OpenUnix and OpenServer
     * IBM AIX 5.1L
     * MacOS X (Darwin)
     * SGI IRIX 6.5
     * FreeBSD
     * UnicOS / Cray

   If you successfully run Makeself and/or archives created with it on another
   system, then [3]let me know!

   Examples of publicly available archives made using makeself are :
     * Game patches and installers for [4]Id Software games like Quake 3 for
       Linux or Return To Castle Wolfenstien ;
     * All game patches released by [5]Loki Software for the Linux version of
       popular games ;
     * The [6]nVidia drivers for Linux
     * The installer for the Linux version of [7]Google Earth
     * The [8]Makeself distribution itself ;-)
     * and countless others...

   Important note for Apache users: By default, most Web servers will think
   that Makeself archives are regular text files and thus they may show up as
   text in a Web browser. The correct way to prevent this is to add a MIME type
   for this file format, like so (in httpd.conf) :
   AddType application/x-makeself .run

   Important note for recent GNU/Linux distributions: Archives created with
   Makeself prior to v2.1.2 were using an old syntax for the head and tail Unix
   commands that is being progressively obsoleted in their GNU forms. Therefore
   you may have problems uncompressing some of these archives. A workaround for
   this is to set the environment variable $_POSIX2_VERSION to enable the old
   syntax, i.e. :
   export _POSIX2_VERSION=199209


   The syntax of makeself is the following:

   makeself.sh [args] archive_dir file_name label startup_script [script_args]
     * args are optional options for Makeself. The available ones are :
          + --version  :  Prints the version number on stdout, then exits
          + --gzip : Use gzip for compression (is the default on platforms on
            which gzip is commonly available, like Linux)
          + --bzip2 : Use bzip2 instead of gzip for better compression. The
            bzip2 command must be available in the command path. I recommend
            that  you set the prefix to something like '.bz2.run' for the
            archive, so that potential users know that they'll need bzip2 to
            extract it.
          + --compress : Use the UNIX "compress" command to compress the data.
            This should be the default on all platforms that don't have gzip
          + --nocomp : Do not use any compression for the archive, which will
            then be an uncompressed TAR.
          + --notemp : The generated archive will not extract the files to a
            temporary directory, but in a new directory created in the current
            directory. This is better to distribute software packages that may
            extract and compile by themselves (i.e. launch the compilation
            through the embedded script).
          + --current : Files will be extracted to the current directory,
            instead of in a subdirectory. This option implies --notemp above.
          + --follow  :  Follow  the symbolic links inside of the archive
            directory, i.e. store the files that are being pointed to instead
            of the links themselves.
          + --append  (new in 2.1.x): Append data to an existing archive,
            instead of creating a new one. In this mode, the settings from the
            original archive are reused (compression type, label, embedded
            script), and thus don't need to be specified again on the command
          + --header : Makeself 2.0 uses a separate file to store the header
            stub, called "makeself-header.sh". By default, it is assumed that
            it is stored in the same location as makeself.sh. This option can
            be used to specify its actual location if it is stored someplace
          + --copy : Upon extraction, the archive will first extract itself to
            a temporary directory. The main application of this is to allow
            self-contained installers stored in a Makeself archive on a CD,
            when the installer program will later need to unmount the CD and
            allow a new one to be inserted. This prevents "Filesystem busy"
            errors for installers that span multiple CDs.
          + --nox11 : Disable the automatic spawning of a new terminal in X11.
          + --nowait : When executed from a new X11 terminal, disable the user
            prompt at the end of the script execution.
          + --nomd5 and --nocrc : Disable the creation of a MD5 / CRC checksum
            for the archive. This speeds up the extraction process if integrity
            checking is not necessary.
          + --lsm  file  : Provide and LSM file to makeself, that will be
            embedded in the generated archive. LSM files are describing a
            software package in a way that is easily parseable. The LSM entry
            can  then be later retrieved using the '-lsm' argument to the
            archive. An exemple of a LSM file is provided with Makeself.
     * archive_dir is the name of the directory that contains the files to be
     * file_name is the name of the archive to be created
     * label is an arbitrary text string describing the package. It will be
       displayed while extracting the files.
     * startup_script is the command to be executed from within the directory
       of extracted files. Thus, if you wish to execute a program contain in
       this directory, you must prefix your command with "./". For example,
       ./program will be fine. The script_args are additionnal arguments for
       this command.

   Here  is an example, assuming the user has a package image stored in a
   /home/joe/mysoft, and he wants to generate a self-extracting package named
   mysoft.sh,  which  will  launch the "setup" script initially stored in
   /home/joe/mysoft :

   makeself.sh /home/joe/mysoft mysoft.sh "Joe's Nice Software Package" ./setup
   Here is also how I created the [9]makeself.run archive which contains the
   Makeself distribution :

   makeself.sh --notemp makeself makeself.run "Makeself by Stephane Peter" echo
   "Makeself has extracted itself"

   Archives generated with Makeself 2.1 can be passed the following arguments:

     * --keep : Prevent the files to be extracted in a temporary directory that
       will be removed after the embedded script's execution. The files will
       then be extracted in the current working directory and will stay here
       until you remove them.
     * --verbose : Will prompt the user before executing the embedded command
     * --target dir : Allows to extract the archive in an arbitrary place.
     * --nox11 : Do not spawn a X11 terminal.
     * --confirm : Prompt the user for confirmation before running the embedded
     * --info : Print out general information about the archive (does not
     * --lsm : Print out the LSM entry, if it is present.
     * --list : List the files in the archive.
     * --check : Check the archive for integrity using the embedded checksums.
       Does not extract the archive.
     * --nochown  : By default, a "chown -R" command is run on the target
       directory after extraction, so that all files belong to the current
       user. This is mostly needed if you are running as root, as tar will then
       try  to recreate the initial user ownerships. You may disable this
       behavior with this flag.
     * --tar : Run the tar command on the contents of the archive, using the
       following arguments as parameter for the command.
     * --noexec : Do not run the embedded script after extraction.

   Any  subsequent  arguments to the archive will be passed as additional
   arguments to the embedded command. You should explicitly use the -- special
   command-line construct before any such options to make sure that Makeself
   will not try to interpret them.


   Makeself is covered by the [10]GNU General Public License (GPL) version 2
   and above. Archives generated by Makeself don't have to be placed under this
   license (although I encourage it ;-)), since the archive itself is merely
   data for Makeself.


   Get the latest official distribution [11]here (version 2.1.4).

   The  latest development version can be grabbed from the Loki Setup SVN
   module, at [12]svn.icculus.org.

Version history

     * v1.0: Initial public release
     * v1.1: The archive can be passed parameters that will be passed on to the
       embedded script, thanks to John C. Quillan
     * v1.2: Cosmetic updates, support for bzip2 compression and non-temporary
       archives. Many ideas thanks to Francois Petitjean.
     * v1.3: More patches from Bjarni R. Einarsson and Francois Petitjean:
       Support for no compression (--nocomp), script is no longer mandatory,
       automatic launch in an xterm, optional verbose output, and -target
       archive option to indicate where to extract the files.
     * v1.4: Many patches from Francois Petitjean: improved UNIX compatibility,
       automatic integrity checking, support of LSM files to get info on the
       package at run time..
     * v1.5.x: A lot of bugfixes, and many other patches, including automatic
       verification through the usage of checksums. Version 1.5.5 was the
       stable release for a long time, even though the Web page didn't get
       updated ;-). Makeself was also officially made a part of the [13]Loki
       Setup installer, and its source is being maintained as part of this
     * v2.0: Complete internal rewrite of Makeself. The command-line parsing
       was vastly improved, the overall maintenance of the package was greatly
       improved by separating the stub from makeself.sh. Also Makeself was
       ported and tested to a variety of Unix platforms.
     * v2.0.1: First public release of the new 2.0 branch. Prior versions are
       officially obsoleted. This release introduced the '--copy' argument that
       was introduced in response to a need for the [14]UT2K3 Linux installer.
     * v2.1.0:  Big  change  : Makeself can now support multiple embedded
       tarballs, each stored separately with their own checksums. An existing
       archive can be updated with the --append flag. Checksums are also better
       managed, and the --nochown option for archives appeared.
     * v2.1.1: Fixes related to the Unix compression (compress command). Some
       Linux distributions made the insane choice to make it unavailable, even
       though gzip is capable of uncompressing these files, plus some more
       bugfixes in the extraction and checksum code.
     * v2.1.2:  Some  bug fixes. Use head -n to avoid problems with POSIX
     * v2.1.3: Bug fixes with the command line when spawning terminals. Added
       --tar,  --noexec  for archives. Added --nomd5 and --nocrc to avoid
       creating checksums in archives. The embedded script is now run through
       "eval". The --info output now includes the command used to create the
       archive. A man page was contributed by Bartosz Fenski.
     * v2.1.4:  Fixed  --info output. Generate random directory name when
       extracting files to . to avoid problems. Better handling of errors with
       wrong permissions for the directory containing the files. Avoid some
       race conditions, Unset the $CDPATH variable to avoid problems if it is
       set. Better handling of dot files in the archive directory.
     * v2.1.5: Made the md5sum detection consistent with the header code. Check
       for the presence of the archive directory. Added --encrypt for symmetric
       encryption through gpg (Eric Windisch). Added support for the digest
       command on Solaris 10 for MD5 checksums. Check for available disk space
       before extracting to the target directory (Andreas Schweitzer). Allow
       extraction  to run asynchronously (patch by Peter Hatch). Use file
       descriptors internally to avoid error messages (patch by Kay Tiong


     * Check out the [15]"Loki setup" installer, used to install many Linux
       games and other applications, and of which I am the co-author. Since the
       demise of Loki, I am now the official maintainer of the project, and it
       is now being hosted on [16]icculus.org, as well as a bunch of other
       ex-Loki projects (and a lot of other good stuff!).
     * Bjarni R. Einarsson also wrote the setup.sh installer script, inspired
       by Makeself. [17]Check it out !


   This script was written by [18]Stéphane Peter (megastep at megastep.org) I
   welcome any enhancements and suggestions.

   Contributions were included from John C. Quillan, Bjarni R. Einarsson,
   Francois Petitjean, and Ryan C. Gordon, thanks to them! If you think I
   forgot your name, don't hesitate to contact me.

   icculus.org also has a [19]Bugzilla server available that allows bug reports
   to be submitted for Loki setup, and since Makeself is a part of Loki setup,
   you can submit bug reports from there!

    [20]Stéphane Peter

   Last modified: Fri Jan 4 15:51:05 PST 2008


   1. http://mowser.com/web/megastep.org/makeself/
   2. http://www.megastep.org/makeself/makeself.run
   3. mailto:megastep@REMOVEME.megastep.org
   4. http://www.idsoftware.com/
   5. http://www.lokigames.com/products/myth2/updates.php3
   6. http://www.nvidia.com/
   7. http://earth.google.com/
   8. http://www.megastep.org/makeself/makeself.run
   9. http://www.megastep.org/makeself/makeself.run
  10. http://www.gnu.org/copyleft/gpl.html
  11. http://www.megastep.org/makeself/makeself-2.1.4.run
  12. http://svn.icculus.org/loki_setup/
  13. http://www.icculus.org/loki_setup/
  14. http://www.unrealtournament2003.com/
  15. http://www.icculus.org/loki_setup/
  16. http://www.icculus.org/
  17. http://www.mmedia.is/~bre/programs/setup.sh/
  18. mailto:megastep@@megastep.org
  19. https://bugzilla.icculus.org/
  20. mailto:megastep@@megastep.org