summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephane Peter <megastep@megastep.org>2005-06-02 22:35:17 +0000
committerStephane Peter <megastep@megastep.org>2005-06-02 22:35:17 +0000
commite42640ec9bbfb459578ab06ac75cfba5036034af (patch)
tree0256a8d5030918d6b2eb3add99812885aa32b07f
parent963b277f6f503b55a13ca4377c1c201774aa9afb (diff)
downloadmakeself-e42640ec9bbfb459578ab06ac75cfba5036034af.tar.gz
2.1.4 release
-rw-r--r--README417
-rwxr-xr-xmakeself.sh5
2 files changed, 205 insertions, 217 deletions
diff --git a/README b/README
index 30e2c12..e7a8c65 100644
--- a/README
+++ b/README
@@ -4,38 +4,36 @@ 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
+ [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.
+ 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 :
+ 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)
@@ -46,244 +44,233 @@ The following was generated from http://www.megastep.org/makeself/
* FreeBSD
* UnicOS / Cray
- If you successfully run Makeself and/or archives created with it on
- another system, then [2]let me know!
+ 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 ;
+ * 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) :
+ 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. :
+ 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]
+ 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
+ + --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).
+ + --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
+ 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
+ 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.
+ * 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.
+ * --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.
+ * --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.
+ 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.
+ 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).
+ Get the latest official distribution [9]here (version 2.1.4).
- The latest development version can be grabbed from the Loki Setup CVS
+ 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
+ * 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.
+ * 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.
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 !
+ * 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.
+ 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!
+ 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
+ [18]Stéphane Peter
- Last modified: Sun May 2 00:08:49 PDT 2004
+ Last modified: Thu Jun 2 15:32:28 PDT 2005
References
@@ -295,7 +282,7 @@ References
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
+ 9. http://www.megastep.org/makeself/makeself-2.1.4.run
10. http://cvs.icculus.org/
11. http://www.icculus.org/loki_setup/
12. http://www.unrealtournament2003.com/
@@ -304,4 +291,4 @@ References
15. http://www.mmedia.is/~bre/programs/setup.sh/
16. mailto:megastep@@megastep.org
17. https://bugzilla.icculus.org/
- 18. mailto:megastep@@megastep.org
+ 18. mailto:megastep@megastep.org
diff --git a/makeself.sh b/makeself.sh
index 9fde99f..d88d647 100755
--- a/makeself.sh
+++ b/makeself.sh
@@ -3,7 +3,7 @@
# Makeself version 2.1.x
# by Stephane Peter <megastep@megastep.org>
#
-# $Id: makeself.sh,v 1.54 2005-01-12 19:21:47 megastep Exp $
+# $Id: makeself.sh,v 1.55 2005-06-02 22:35:17 megastep Exp $
#
# Utility to create self-extracting tar.gz archives.
# The resulting archive is a file holding the tar.gz archive with
@@ -56,8 +56,9 @@
# Better handling of errors with wrong permissions for the directory containing the files. (Jason Trent)
# Avoid some race conditions (Ludwig Nussel)
# Unset the $CDPATH variable to avoid problems if it is set. (Debian)
+# Better handling of dot files in the archive directory.
#
-# (C) 1998-2004 by Stéphane Peter <megastep@megastep.org>
+# (C) 1998-2005 by Stéphane Peter <megastep@megastep.org>
#
# This software is released under the terms of the GNU GPL version 2 and above
# Please read the license at http://www.gnu.org/copyleft/gpl.html