Name

release - install files and directories, making permissions reasonable


Synopsys

release [--OPTIONS] source[s] destination


Description

The unix install program (man 1 install) copies files to a destination and simultaneously adjusts their permissions and ownership. This does about the same.

When a source is a directory and a directory with the same name exists in the destination directory, then the old destination with the same name is removed before copying, to avoid the new going inside the old. When the source is a directory and destination basename is the same as the source basename, then the destination directory is replaced.

Unlike unix install, this does not do backups, does not differentiate between plain file and directory sources, automatically creates destination directories, mails a maintainer with problems, and can keep a log.


Options

--chmod=CHMOD OPTS

These are simply passed as options to chmod. Default is '-R ug=rwx,o=rx'.

--group=GROUP

set group ownership to GROUP

--owner=USER

set ownership (superuser only)

--warning [msg-file]

read a warning message ("do not touch the installed version, the source is actually here") from msg-file and attach it to each text-file argument after the first blank line.

If the first line in the header file is:

  comment-chars:

then the following lines until the next double newline will be treated specially. They will be read in pairs. If the first line (usually shebang) of an installed text file matches the first line of any pair of lines, then the second line (comment string) will be prepended to every other line in the file. If no first lines match, then nothing will be prepended to the lines. In either case, these pairs of lines will not be part of the attached message.

A file might begin with

  comment-chars: 
  perl -w 
  #
  \\bscheme\\b
  ;
  
  Header message here.

If there is no filename argument, a standard warning is included.

--unknown-comment-string

The default comment string for unrecognized files is none (""), but for strange files like Makefiles, if you don't want to rely on putting a special string in the first line of each one, you can use this to set the default to '#' or any other string. This *only* affects files whose first line is not otherwise recognized.

--replace

Generally, release removes the destination before copying the new one. This is a good idea when multiple owners are installing, and the new installer would not have permission to chmod the old owner's file. It's also a good idea when the items in question are directories, or else the new one would end up inside the old one.

The replace option supresses that remove, causing cp to replace the existing installed item (or in the case of directories to do the wrong thing).

This might be useful if you have write permission on the file, but not on the directory. Though currently that should fail outright.

--verbose

print source names as they are copied

--quiet

suppress error messages [most useful in cron job in combination with -m or -l]

--debug --noact

print debugging information. If --noact, then do not actually do anything, just show what would have been done.

--maintainer=EMAIL@ADDRESS

someone to send mail to when things go wrong.

--log [file]

append to a log file (Default file: /tmp/release-destination.log)


See Also

cp(1)   chmod(1)    install(1)


Author

Gregory A. Marton http://csail.mit.edu/~gremio/


Download

This program is distributed under the GNU General Public License: http://www.gnu.org/copyleft/gpl.html
The source: http://csail.mit.edu/~gremio/code/release.pl