gtkradiant/setup/linux/makeself
TTimo 12b372f89c ok
git-svn-id: svn://svn.icculus.org/gtkradiant/GtkRadiant@1 8a3a26a2-13c4-0310-b231-cf6edde360e5
2006-02-10 22:01:20 +00:00
..
COPYING ok 2006-02-10 22:01:20 +00:00
README ok 2006-02-10 22:01:20 +00:00
TODO ok 2006-02-10 22:01:20 +00:00
makeself-header.sh ok 2006-02-10 22:01:20 +00:00
makeself.lsm ok 2006-02-10 22:01:20 +00:00
makeself.sh ok 2006-02-10 22:01:20 +00:00
update-readme ok 2006-02-10 22:01:20 +00:00

README

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

               makeself - Make self-extractible archives on Unix

   [1]makeself.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 (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
   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.
          + --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.

   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.2).

   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.

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<53>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<53>phane Peter

   Last modified: Fri Jul 4 18:32:11 PDT 2003

R<>f<E9>rences

   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.2.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