release - install files and directories, making permissions reasonable
release [--OPTIONS] source[s] destination
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.
These are simply passed as options to chmod. Default is '-R ug=rwx,o=rx'.
set group ownership to GROUP
set ownership (superuser only)
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.
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.
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.
print source names as they are copied
suppress error messages [most useful in cron job in combination with -m or -l]
print debugging information. If --noact, then do not actually do anything, just show what would have been done.
someone to send mail to when things go wrong.
append to a log file (Default file: /tmp/release-destination.log)
cp(1) chmod(1) install(1)
Gregory A. Marton http://csail.mit.edu/~gremio/