123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308 |
- The following was generated from http://www.megastep.org/makeself/
- -----------------------
- makeself - Make self-extractable archives on Unix
- [1]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 [2]let me know!
- Examples of publicly available archives made using makeself are :
- * Game patches and installers for [3]Id Software games like Quake 3
- for Linux or Return To Castle Wolfenstien ;
- * All game patches released by [4]Loki Software for the Linux
- version of popular games ;
- * The [5]nVidia drivers for Linux
- * The [6]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
- Usage
- 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
- immediately
- + --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 available.
- + --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 line.
- + --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 else.
- + --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 archived
- * 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 [7]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 command.
- * --info : Print out general information about the archive (does not
- extract).
- * --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.
- License
- Makeself is covered by the [8]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.
- Download
- Get the latest official distribution [9]here (version 2.1.3).
- The latest development version can be grabbed from the Loki Setup CVS
- module, at [10]cvs.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 [11]Loki Setup installer, and its source is being
- maintained as part of this package.
- * 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
- [12]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
- conformance.
- * v2.1.3: Bug fixes with the command line when spawning terminals.
- Added --tar, --noexec for archives. Added --nomd5 and --nomd5 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.
- Links
- * Check out the [13]"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
- [14]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. [15]Check it out !
- Contact
- This script was written by [16]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 [17]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!
- _________________________________________________________________
- [18]Stéphane Peter
- Last modified: Sun May 2 00:08:49 PDT 2004
- References
- 1. http://www.megastep.org/makeself/makeself.run
- 2. mailto:megastep@REMOVEME.megastep.org
- 3. http://www.idsoftware.com/
- 4. http://www.lokigames.com/products/myth2/updates.php3
- 5. http://www.nvidia.com/
- 6. http://www.megastep.org/makeself/makeself.run
- 7. http://www.megastep.org/makeself/makeself.run
- 8. http://www.gnu.org/copyleft/gpl.html
- 9. http://www.megastep.org/makeself/makeself-2.1.3.run
- 10. http://cvs.icculus.org/
- 11. http://www.icculus.org/loki_setup/
- 12. http://www.unrealtournament2003.com/
- 13. http://www.icculus.org/loki_setup/
- 14. http://www.icculus.org/
- 15. http://www.mmedia.is/~bre/programs/setup.sh/
- 16. mailto:megastep@@megastep.org
- 17. https://bugzilla.icculus.org/
- 18. mailto:megastep@@megastep.org
|