|
|
| |
STOWES(1) |
stowES |
STOWES(1) |
stowES - the stow Enhancement Script
stowES command[,command[,...]] [options] [expressions]
This manual page documents the stow Enhancement Script, short stowES.
stowES is a perl script which tries to ease the use of the
stow packaging program and software which can be compiled and installed with
autoconf.
stowES should run on all platforms where stow is running what means that
these platform should know perl and supply soft links (have I missed
something?).
stowES supplies the following commands which may be abbreviated to
uniqueness (some of them have shorter aliases as well).
- list,ls [regexp]
- List all packages in StowDir (usually /usr/local). The package names are
prefixed with a char of the following meaning:
I ... package is installed
s ... package can be checked in without any conflict
- ... package cannot be checked in because there
is a conflict with an already installed
package, the file in parentheses is the first
conflicting found
You may give regexps to only show specific packages, if no
arguments are given all packages are shown.
- checkstow,cs [regexp]
- Does the same as the list command but also checks for broken packages and
lists the size of each package scanned in blocks (normally 1KB). This is
significantly slower than list. There is an additional prefixed
char:
X ... package is broken, i.e. package was not fully
checked in (some files missing) or something other
is weird, in the following parentheses all
conflicting/missing files/directories are shown
(relative to the target dir).
Otherwise check will behave in the same way as the
list command.
- checktarget,ct [regexp]
- Checks if the targetdir only contains links and dirs. Displays the files
and the wrong links it found.
- install dir(s)|file(s)
- Calls command "untar" if the argument is a file. Then calls
"make", "makeinst" and "checkin" with the
appropriate arguments.
- untar file(s)
- Unpacks a {tar,tar.gz,tar.bz2,tgz}-source-archiv to the
"dumpdir" directory.
- confhelp,chlp dir(s)|file(s)
- Call 'configure --help' from a directory or
{tar,tar.gz,tar.bz2,tgz}-source-archiv.
- make,mk dir(s)
- The directory specified as a argument should contain a
"configure"-script which is called with the arguments
"--prefix=TargetDir" and the arguments you gave on the command
line. After this "make" and "make check" are called
(of course with the optional paramaters you gave). "make check"
is only called if the root-Makefile of the package contains a rule
"check".
- makeinst,mkin dir(s)
- This command checks for a file "config.status" which should be
left by the call of "configure". Then
"make install prefix=StowDir/packagename" is
called to install the package in the appropriate place. After the make run
the "config.status" file is copied to
"$stowdir/package/.config/package" and a file with basic
information on the creator, date and host machine is also stored there.
Furthermore the commands "depends", "strip" and
"checksums" are called for the package. Note that stripping is
switched off per default. When the "--removesource" option was
given, the source code is removed.
If something during this procedure failed the possibly
installed package will be removed since it may be broken (the package
will not be delete if the `--force' option was given!).
The following commands take regular expressions or the option
-a as arguments.
- checksums
- This command creates the checksums for the packages.
- chkchksums
- This command verifies the checksums given in the package with the ones
calculated for each file.
- depends
- This command calculates some basic dependency information. It only checks
binaries and libraries via ldd(1) for needed libraries.
- checkin,ci
- Calls "stow" for the package if the package is not
checked in.
- checkout,co
- Calls "stow -D" for the package if the packges is checked
in.
- strip
- Strips all files in the package. The checksums will be recalculated by
calling the command `checksums'. Note that stripping is switched off per
default.
- remove,rm
- Removes a package. The use of the -a-option is switched off
here.
- package
- Creates an archive of the specified package and stores it in the
DumpDir. The filename of the created package(s) can be influenced
the the `--packagesuffix' option.
- contents
- Lists the contents of packages. The first column displays the type of item
(d:file, l:link, p:pipe, s:socket, b:block special file, c:character
special file). The second column shows the name of file/dir. If the item
happens to be a file, the size of it is shown in the third column (in
Bytes).
- contsearch
- Searches all files in the packages for a specified pattern. Useful to
check if a path containing "stow" was compiled into the
binaries/libraries. Specify a search pattern (regular expression) with the
`--contentpattern' option.
- checklibs
- Check if all libs for package are available. If stowES thinks there's
something wrong that may be so but must not be so. Some programs hide
special libs in special directories which are not know when testing with
ldd(1). Futhermore all files with the execution bit set are
checked. This normally includes libraries which are installed this
way.
- showconfig
- Show the configuration of the specified packages. These are the arguments
given to the configuration script when the program is installed and are
saved in the config.status file.
Misc commands:
- rebuild
- Rebuilds the whole stow-archive. Deletes everything except the stowdir
from the targetdir and checks in again all packages which were previously
checked in. Only package marked with a "I" in the list mode will
be checked in again (i.e. broken packages will not be checked in
again).
- rename regexp newname
- Renames a package. This includes the information in .config/package as
well.
- exchange oldpackregexp newpackregexp
- Exchange two package with one call. oldpack is checked out and newpack is
checked in immediately. oldpackregexp and newpackregexp are regular
expressions which have to match exactly one package.
- instpack file(s)
- Installs and checks in a package created by the
"package"-command. If you don't want to check in the package
immediately use the option `--nocheckin'.
- shell
- Starts a sub shell (taken from the environment variable
$SHELL). This is useful when something during a
`stowES' run fails and you want it to correct by hand. So you have the
same environment set as when `stowES' would do the job (environment
variables etc.).
- help,hlp
- Print a help screen.
- config,cnf,cfg
- Print the actual configuration of all interesting variables.
- version
- Print a version information.
And remember: The commands (the options as well) may be
abbreviated to uniqueness!
Commands which take the same parameters may be combined with a
comma. E.g. to to check the target and the stow dir one may use:
stowES cs,ct
The following options are available (do "perldoc Getopt::Long" for a
precise explanation on how to syntactically specify options). Some options
have two options (--bar and --nobar). You may use these to override a set
option in a configure file or environment variable.
- -s, --stowdir dir
- Default: /usr/local/stow
Stow dir. This directory contains all the packages.
- -t, --targetdir dir
- Default: /usr/local
Target directory. This directory is the target directory for
all the packages installed in the stow directory. The links will be
created from the stow directory to this target directory.
See later in this document on a further explanation of
the use of the stow and target dir.
- --stowname name
- Default: stow
Name of the stow directory.
- -p, --packagename name
- Default: none
Alternate package name. When installing a package you may
specify an alternative name for the package. This only works if you only
give one package on the command line.
- -a, --allpackages
- Default: unset.
Proceed all packages found in
$StowDir. This is the same as giving the regular
expression "." but will not work for the `remove' command.
- -v, --verbose [level]
- Default: 0
Verbose mode. You may give the option -v to urge stowES
to print out more messages. Theoretically it is possible to give the
-v option a value (greater zero) to increase the verbosity level
but this isn't used in stowES currently.
- q, --quiet, --noquiet
- Default: noquiet
Quiet mode. Do not produce any output except error messages.
Use noquiet to switch the quiet mode off.
- -k, --continue, --nocontinue
- Default: nocontinue
Continue after error if possible. When processing multiple
files/dirs (e.g. in `install'-mode) stowES will not stop processing, it
will go on with the next argument on the command line.
- -f, --force
- Default: noforce
Force certain operation although there may be unusual
conditions. E.g. install a package even if it already exists. StowES
will not complain that there's already a package with the same name.
Useful for packages which could not be installed successfully in the
first try.
- -d, --dumpdir dir
- Default: /tmp
Directory to store all the stuff. Sources are unpacked to this
directory. Packages created by the `package'-command are also stored
there.
- -m, --ambiguous, --multiple, --noambiguous, --nomultiple
- Default: noambiguous
Regexps may match more than one package. Normally one regular
expression on the command line may only match one package in the stow
directory. This options allows the regular expression to match to more
than one package. This option is only valid to some commands, mostly
these changing data somewhere (currently these are: checksums, depends,
checkin, checkout, strip, remove).
- -n, --dryrun, --nodryrun
- Default: nodryrun
Only show what to do. Affects only commands which change data
on the disk. This options does not mean that stowES wont cause any disk
access, it may check if packages are checked in or not.
- -j, --paralleljobs [number]
- Default: 1
Pass a -j option to make which causes make to do builds
in parallel. For convinience the optional number behind the option
differs from the meaning it has for make! When giving a number greater
or equal to one that number will be given as is to the -j option
of make causing it to start as many sub-processes in parallel. If no
number or zero is given, stowES tries to figure out how many processors
are installed on the machine it is currently running on and uses this
number for make. So if you've got a quad-box you'll automatically get
four parallel sub-processes. Of course stowES needs to know how to find
out how many processors are installed. It has support for some platforms
but not for that many. If your platform is not supported you can use the
-j option with an appropriate number or send the author of stowES
(me ;) a patch (see getCPUNumber sub routine in the script) or at least
a detailed description how to find out that number. If stowES cannot
find out the number it will default to one.
- -c, --configfile file
- Default: none
Specify a configfile (may be used multiple times).
- -o, --outputfile file
- Default: STDOUT
Output file. With this option it is possible to redirect the
output to something else than STDOUT.
- -l, --logfile
- Default: /dev/null
Log file, prints short messages what stowES is doing
currently. Great for use with `--rotatinginstall'.
- --subdir name
- Default: none
This option can be primarily used with the make and makeinst
commands.
With this option it is possible to install a package into a
sub directory inside your targetdir, e.g. you have some beta software
you want to install into your stowdir but you do not want it to mess up
with your stable packages.
stowES make foo-cvs-latest --subdir beta
will install this package into
$TargetDir/beta but will check it in in your
normal stow dir.
- --contentpattern pattern
- Default: \Wstow\W
Search pattern for the search in packages with command
`contsearch'.
- --contentsearchfile file
- Default: /dev/null
Filelist of matches The given file will contain all files
which matched the `contentpattern'.
- --configdirname dirname
- Default: .config
Name of the directory where configuration data is stored
inside each package (or target dir). It is sane to start this name with
a ".".
- --dependencyfilename file
- Default: dependencies
Filename for dependencies in the configuration directory.
- --checksumfilename file
- Default: md5sums
Filename for checksums in the configuration directory.
- --creatorinfofilename file
- Default: creatorinfo
Filename for creatorinfo in the configuration directory.
- --packagesuffix string
- Default: none.
Additional name for packages (e.g. architecture) when in
command `package'.
- --removesource, --noremovesource
- Default: noremovesource
Remove unpacked source after built. This is especially useful
when using `--rotatingintall' with lots of packages (else you would need
lots of disk space). Only applies for commands `makeinst' and
`install'.
- --makecheck, --nomakecheck
- Default: makecheck
Will switch on or on the call of "make check".
- --configure, --noconfigure
- Default: configure
Will switch the call of "configure" on or off. It's
usefull to switch configure off when a "make"-call failed and
you have to repeat the `make' or `install' comamnd.
- --make, --nomake
- Default: make
Will switch the call of "make" on or off. It's
useful to switch make off when a "configure"-call did not fail
but produced an undesired result and you want to try to find the right
setting.
- --use-saved-options, --nouse-saved-options
- Default: --nouse-saved-options
This option is used in the make and makeinst
commands and tries to reuse a configuration from an already installed
package. The algorithm seems to work for the most common versioning
schemes of packages but may fail on more obscure ones. It should not
happen that another package is taken, normally it should fail in a way
that simply no configuration could be found. If you have any better
ideas for the algorithm (see in function
GetSavedOptionsFromOlderPackage) I'd love to receive patches :).
Furthermore, if output isn't surpressed, stowES will wait three seconds
before continuing so that you have a chance to check if the right
options were taken.
- --depends, --nodepends
- Default: depends
Do (or do not) create the the dependencies when installing a
package.
- --checkin, --nocheckin
- Default: checkin
You may switch off the check in of a package when in command
`makeinst' or `install'.
- --chkchksums, --nochkchksums
- Default: chkchksums
Switch on or off the check of checksums.
- --checksums, --nochecksums
- Default: checksums
Switch on or off the creation of checksum when doing command
`makeinst' or `install'.
- --strip, --nostrip
- Default: nostrip
Switch on or off the call of the "strip"-program to
strip a package.
- --prog key=program
- Default: key==program (see `stowES config | grep ^%Progs`)
Specify alternate programs. With this option you may specify
alternative programs to be used by stowES. The Program-param may contain
additional arguments (e.g. --prog foo='bla arg1 arg2'). For keys see
%Progs in the config screen.
- --prm-conf regexp=param | param =item --prm-make
regexp=param | param
- Default: none
Specify extra parameters for the call of `configure' and
`make'. The parameter is used when the regexp matches the package
currently proceeded. When giving no regexp the parameters will be used
for every call of `configure' or `make'.
If you only specify a parameter which contains a '=' (e.g.
CC=gcc) you have to proceed a '=' to avoid splitting up the parameter
itself.
Examples:
Using one paramter:
stowES ... --prm-conf --disable-static
Using more than one:
stowES ... --prm-conf '--enable-foo --enable-bar'
Using a parameter with '=':
stowES ... --prm-make==CC=gcc
or
stowES ... --prm-make =CC=gcc
Use two (or more) params for one package with '='
in the options:
stowES ... --prm-conf emacs="--with-dialogs=xy --dynamic=no"
Use them for all packages:
stowES ... --prm-conf ="--with-dialogs=xy --dynamic=no"
- -r, --rotatinginstall, --norotatinginstall
- Default: norotatinginstall
Loop over the packages to install as long as possible. When
specifying this option the packages given on the command line will be
tried to install again and again until they can be compiled. If the
remaining packages all fail within one run stowES will give up.
This options only applies to the `install' command. That
effictively means that you do not need to pay attention on the order of
the packages given on the command line when installing packages.
As you may imagine, this method will not work in all cases,
there are several problems involved (e.g. failing configures etc., maybe
more later here on). But it is good for trying out a new bunch of
software with the least possible waste of your energy :-). If it fails
you can go the old way of installing things...
See "examples" for more.
As already mentioned the options can be abbreviated to
uniqueness.
There are three way to specify options for stowES:
o config file
o environment variable
o command line
First the environment variable and the command line are checked
for the `load config file'-option. Then the options in the config file are
processed at first, then the options in the environment variable and at last
the options on the command line. Config files are processed in the order
they are given and config files given in the environment variable are
processed before the config files given on the command line.
-c-options given in a config file are not used (so, no recursion is
possible here).
The last options set is valid (overwriting the previously set
ones).
You can specify an environment variable `STOWES' and store options in it in the
same way you would do on the command line. These options are processed after
the config-file was read and before the options on the command line. That
means that options on the command line will override options given in the
variable `STOWES' and in the config file.
If you only use the "stowdir"-option, the target directory will be the
parent directory of the stow directory. On the other hand, if you only specify
the target directory, the stow directory will be
"targetdir/stowname".
StowDir and TargetDir options can only be used in pairs, i.e. a
TargetDir or StowDir option will override both values from a lower level
(e.g. a `-t'-option on the command line will override a given
`-s'-option set in a config or in the environment variable).
Why? It happened to me that I had something like "-t
/tmp/f" in my config file and specified something like "-s
." on the command line (forgetting what was in the config file)
while working on some other packages. Since these option do not overwrite
themselves ugly target- and stowdirs are used...
You may store any option you would write on the command line in a config file.
These options are pushed before the arguments you gave on the command line, so
you can overwrite options given in a config file. Standard configs may be
placed in "/usr/local/etc/stowESrc" and/or "~/.stowESrc".
The system wide configuration file is read first.
By default, commands which take regexps as params are only executed if they
match exactly one package (this counts per regexp). This should help to avoid
messing up your packages ("stowES remove glib" would remove more
than just glib, at least on my system...). If you want to supply a command to
more packages you may use the `m'-option.
Currently locale information are only used to get the thousands seperator for
figures. Nevertheless your locale environment should be properly set up.
The paramters may be abbreviated to uniqueness (see docs for GetOpt::Long.pm).
The same applies for commands.
stowES return with 0 if operation was successful and with 1 otherwise.
Suppose you would like to install gnome... lots of work?
Consider this:
> cd /plenty/space; mkdir gnome; cd gnome
> ncftpget ftp://ftp.gnome.org/pub/GNOME/stable/latest/sources/*
> stowES install -r --removesource -t /some/space *
Now have a cup of coffee or tea or make something else, this will
take some time to finish. When your prompt reappears you should have gnome
installed from source (with all the default options for each package
taken).
Now a bit smaller:
> stowES install store/src/autoconf/autoconf-2.14.tar.gz
will unpack, compile and install autoconf in /usr/local.
If you have only autoconf installed a call of chkchksums may give
this output.
> stowES chkchksums -a
Checking checksums for package autoconf-2.14...ok.
Use this if you want to get rid of autoconf.
> stowES remove autoconf
Here you see that I have three packages matching
"window" installed. Two of them a checked in and can be used. The
WindowMaker-0.61.1 package is currently not checked in, it conflicts with
some other package, so it can't even be checked in if wanted.
> S ls window
Listing packages in /usr/local/stow matching [ window ] (3 matches):
- WindowMaker-0.61.1 (GNUstep/Apps/WPrefs.app/WPrefs)
I WindowMaker-0.62.1
I WindowMaker-extra-0.1
Adam Lackorzynski <adam@lackorzynski.de>
Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc. |