Permalink
Browse files

Documentation updates for 2.0.1 release

  • Loading branch information...
1 parent 36e35d5 commit 526586ce0f5c1ab74ef06bd37ed99d873158278f @megastep committed Jan 19, 2003
Showing with 228 additions and 129 deletions.
  1. +228 −125 README
  2. +0 −4 TODO
View
353 README
@@ -1,145 +1,248 @@
+
+(This was produced from the HTML at http://www.megastep.org/makeself)
+
makeself - Make self-extractible archives on Unix
-makeself.gz.sh is a small shell script that generates a self-extractible
-tar.gz archive from a directory. The resulting file appears as a shell
-script, and can be launched as is. The archive will then uncompress itself
-to a temporary directory and an optional arbitrary command will be executed
+makeself.sh <makeself.run> is a small shell script that generates a
+self-extractible 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.
+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 gzipped (or bzip2'd
-as of 1.2) TAR archive, with a small shell script stub at the beginning
-(about 20 lines). 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.sh. I
-recommend using the "sh" prefix for such archives not to confuse the users,
-since they it's actually shell scripts (with quite a lot of binary data
-attached to it though!).
+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 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.
+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.0, 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
Examples of publicly available archives made using makeself are :
- * SciTech Display Doctor for Linux beta
- * The Myth II patches for the Linux version of the game by Loki
- * The final Quake III Arena demo for Linux, published by Loki
- * The Makeself distribution itself ;-)
+ * Game patches and installers for Id Software
+ <http://www.idsoftware.com/> games like Quake 3 for Linux or
+ Return To Castle Wolfenstien ;
+ * All game patches released by Loki Software
+ <http://www.lokigames.com/products/myth2/updates.php3> for the
+ Linux version of popular games ;
+ * The Makeself <makeself.run> distribution itself ;-)
+ * and countless others...
+
-Usage
+ 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 :
- o --version : Prints the version number on stdout, then exits
- immediately
- o --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.sh' for the
- archive, so that potential users know that they'll need bzip2 to
- extract it.
- o --nocomp : Do not use any compression for the archive, which will
- then be an uncompressed TAR.
- o --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).
- o --nox11 : Generate a script that will not try to open a xterm and
- run the script within it.
- o --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.
+|makeself.sh [args] archive_dir file_name label startup_script
+[script_args]|
+
+ * /args/ are optional options for Makeself. The available ones are :
+ o *--version* : Prints the version number on stdout, then
+ exits immediately
+ o *--gzip* : Use gzip for compression (is the default on
+ platforms on which gzip is commonly available, like Linux)
+ o *--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.
+ o *--compress* : Use the UNIX "compress" command to compress
+ the data. This should be the default on all platforms that
+ don't have gzip available.
+ o *--nocomp* : Do not use any compression for the archive,
+ which will then be an uncompressed TAR.
+ o *--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).
+ o *--current* : Files will be extracted to the current
+ directory, instead of in a subdirectory. This option implies
+ *--notemp* above.
+ o *--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.
+ o *--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.
+ o *--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.
+ o *--nox11* : Disable the automatic spawning of a new terminal
+ in X11.
+ o *--nowait* : When executed from a new X11 terminal, disable
+ the user prompt at the end of the script execution.
+ o *--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 :
+*/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
+|makeself.sh /home/joe/mysoft mysoft.sh "Joe's Nice Software Package"
+./setup |
-Here is also how I created the makeself.gz.sh archive which contains the
+Here is also how I created the makeself.run archive which contains the
Makeself distribution :
-makeself.sh --notemp makeself makeself.gz.sh "Makeself version 1.5.1" echo
-"Makeself has extracted itself"
-
-Archives generated with Makeself can be passed the -keep command line
-argument, which will 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 ;-). Starting from version 1.3, the archives
-accept two more options: -verbose will prompt the user before executing the
-embedded command, and -target dir allows to extract the archive in an
-arbitrary place.
-
-License
-
-Makeself is covered by the 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 distribution here (version 1.5.2).
-
-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: Major bugfixes (1.4 was not working at all!). Optionally disable
- the automatic spawning of xterms with the --nox11 option.
- * v1.5.1: More bugfixes, added the archive options -check and -list
- (Francois Petitjean).
- * v1.5.2: Cosmetic changes for more verbose output to better handle big
- archives (Quake III demo).
-
-Links
-
- * Check out the "Loki setup" installer, used to install Loki games, and
- which I am the co-author.
- * Bjarni R. Einarsson also wrote the setup.sh installer script, inspired
- by Makeself. Check it out !
-
-Contact
-
-This script was written by St�phane Peter (megastep@megastep.org). I
-welcome any enhancements and suggestions.
-
-Contributions were included from John C. Quillan, Bjarni R. Einarsson and
-Francois Petitjean, thanks to them!
-
- ------------------------------------------------------------------------
-St�phane Peter
-Last modified: Wed Dec 8 18:24:12 PST 1999
+|makeself.sh --notemp makeself makeself.run "Makeself by Stephane Peter"
+echo "Makeself has extracted itself" |
+
+Archives generated with Makeself 2.0 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.
+
+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 GNU General Public License
+<http://www.gnu.org/copyleft/gpl.html> (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 here <makeself.run> (version 2.0.1).
+
+The latest development version can be grabbed from the Loki Setup CVS
+module, at cvs.icculus.org <http://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 Loki Setup installer
+ <http://www.icculus.org/loki_setup/>, 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 UT2K3 <http://www.unrealtournament2003.com/> Linux installer.
+
+
+ Links
+
+ * Check out the "Loki setup" <http://www.icculus.org/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 icculus.org <http://www.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. Check it out !
+<http://www.mmedia.is/~bre/programs/setup.sh/>
+
+
+ Contact
+
+This script was written by St�phane Peter
+<mailto:megastep@@megastep.org> (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 Bugzilla server <https://bugzilla.icculus.org/>
+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!
+
+------------------------------------------------------------------------
+St�phane Peter <mailto:megastep@@megastep.org>
+
+Last modified: Sun Jan 19 03:18:18 PST 2003
View
4 TODO
@@ -1,10 +1,6 @@
What needs to be done next :
-- Correctly parse options so that they can be given in any order
- Generic compression code (thru a user-defined command)
-- Find a way to differentiate between the arguments used by the
- shell stub and those passed to the embedded command (using -- as
- a separator ?)
- Collect names of directories potentially containing md5 program. GUESS_MD5_PATH
St�phane Peter <megastep@megastep.org>

0 comments on commit 526586c

Please sign in to comment.