|
ActiveTcl User Guide |
|
[ Main Table Of Contents | Table Of Contents | Keyword Index ]
teacup(n) 1.0 tpm "TEA Package Management"
teacup - TEApot Repository Client
TABLE OF
CONTENTS
SYNOPSIS
DESCRIPTION
OVERVIEW
Commands
General inquiries
and getting new revisions
Management of
installation repositories
Management of archives
Configuration management
Package management
Common options
Searching for packages
and other things
BUGS,
IDEAS, FEEDBACK
SEE ALSO
KEYWORDS
COPYRIGHT
This document is reference documentation for the TEApot client
application. It assumes that the reader has read at least the TEApot
Introduction, the TEApot Glossary of Terms, and possibly
the TEApot Meta Data
Specification.
This tool is used to manage a user's personal TEApot
installation. It will also be used by administrators to manage
centralized installations, if so desired.
As such it sits squarely between two distinct sets of TEApot
repositories, namely:
- On the one side are the installation repositories, which
are the repositories packages are installed into. One of these
repositories will be the default destination for doing package
installations.
An installation repository is one source of packages for Tcl
installations, like ActiveTcl, which allow one to invoke 'package
require' to load a package from the repository. For ActiveTcl, the
necessary code is already part of the tclsh's "init.tcl". For other installations, the relevant code
can installed by using teacup's setup
method. See also the TEApot
FAQ for more information.
Please see the section Management of
installation repositories for the teacup commands relevant to their direct
management, and the option --at in section Common options when having to deal with
installation repositories other than the default.
- On the other side we have the archives,
which are repositories to search when the TEApot client is asked to
perform an installation. Please see the section Management of archives for the teacup commands
relevant to their management.
Archives can be either local or network
repositories. For local repositories both opaque and transparent repositories are
acceptable.
Note however that while the above makes it possible to add an
installation repository to the set of archives known to teacup this makes sense
only when packages for an installation A should be drawn from a
different installation B. It makes no sense whatsoever to put an
installation repository A into the set of archives when A is also
the destination for packages to install.
The behaviour of the application can be configured in various
ways for the environment it is in, with the settings persisting
across invocations. The commands for doing so, and where this
configuration is stored, are explained in the section Configuration management.
- teacup help
- Information about the available commands and their syntax is
printed to the standard output.
- teacup version
- Prints the version number of the application to the standard
output.
- teacup who
- Prints the complete teapot meta data of the application to the
standard output.
- teacup update-self
?-v?
- The command locates the newest revision of the application in
the known set of archives, retrieves it, and overwrites itself with
it. The application saves itself with the extension .bak before
doing the update, to allow an easy restoration in case something
goes wrong.
For the unexplained option see section Options.
Installation (repositories) are the repositories packages are
installed into. One of these repositories will be the default
destination for doing package installations.
- teacup setup shell
- While ActiveTcl's tcl shell comes already prepared with all the
code necessary to be able to look for and use installation
repositories, most Tcl shells, especially self-built ones, do not.
This command takes the path to a valid Tcl shell
and then adds the appropriate code, enabling it to look for and use
installation repositories as well.
- teacup create ?dir?
- This command creates a local installation
repository at the directory dir. If no directory
is specified then a platform-specific standard location is
used:
- Unix
- "~/.teapot/repository"
- Windows
- "$USERPROFILE/Teapot/repository".
- OS X
- "~/Library/Application
Support/ActiveState/Teapot/repository"
(Note the space between "Application" and "Support").
- teacup delete dir
- This command deletes the local installation
repository at the directory dir. It takes care
to break the connections to all shells using the repository before
deleting it from the filesystem.
- teacup link make dir shell
- Create a connection between the installation repository at dir and the tcl shell. After
this command is executed, the shell will search
the installation repository at dir when a
package is required, and the repository records the shell's location and platform information. The latter
means that teacup will accept only packages compatible with the
shell's platform before attempting to install a package, and it
will ask the shell for the list of all packages it can use when
checking if a package is already installed.
- teacup link cut (dir|shell) (dir|shell) ...
- Removes the connection between the installation repository at
dir and the tcl shell. From
then on the shell will not search the
repository when a package is required, and teacup will not check the shell
anymore when installing a package.
Note that it is allowed to specify an arbitrary number of shells and repository dirs, in
arbitrary order. The command will disconnect all possible
pairs.
- teacup link info dir|shell
- Prints either the list of shells the repository at dir is connected to, or the list of repositories the shell is using.
- teacup default ?dir?
- This command sets or queries which installation is the default installation repository.
When called with the dir specified all future
calls will use the installation at that location by
default.
The command always prints the data of the default
installation to stdout. In this way an invocation without dir simply queries the current settings.
The archives are the repositories the
packages to install are searched in and drawn from. For
their management we have three commands, to list the current set,
and add/remove repositories to/from the set.
- teacup archive
list
- This command prints a list of all the archives known to the
client to stdout.
- teacup archive add
url
- This command adds the archive at location url to the set of archives to query when searching for
packages.
The url can be a path in the local filesystem, a file://-url in the local filesystem, or a http://-url referring to a network repository provided by a
teapot server
running on some host.
- teacup archive
remove url
- This command removes the archive at location url from the set of archives to query when searching for
packages.
The url can be a path in the local filesystem, a file://-url in the local filesystem, or a http://-url referring to a network repository provided by a
teapot server
running on some host.
The behaviour of the application can be configured in various
ways for the environment it is in, with the settings persisting
across invocations. The commands for doing so, and where this
configuration is stored, are explained here.
The related commands to manage the default
installation and the set of archives are
not explained here, but in the sections Management of
installation repositories and Management of archives respectively.
They use however the same underlying mechanisms as the
configuration command to persist their settings.
The configurable settings are
- Whether to cache the indices of remote archives or not, and
where.
- The timeout to use when accessing network repositories.
- If or what http-proxy to use when accessing network
repositories.
On Unix the configuration is stored in a platform specific
directory, whereas on Windows the registry is used. The internal
structure of either directory or registry tree are not part of the
public API and therefore not documented.
- Unix
- "~/.teapot/config"
- Windows
- HKEY_CURRENT_USER\Software\ActiveState\TEAPOT
- OS X
- "~/Library/Application
Support/ActiveState/Teapot/config"
(Note the space between "Application" and "Support").
The commands to access the configuration are
- teacup cache on ?dir?
- This command enables the caching of the index databases from
remote archives on the local system. This happens by default under
the directory "~/.teapot/indexcache", but this
can be overridden by explicitly specifying a directory dir.
- teacup cache
off
- This command disables the caching of the index databases from
remote archives on the local system. Existing cached indices and
associated stati are not deleted, allowing their reuse if this
feature is activated again.
We do not recommend to deactivate the cache, as this will make
searches in network repositories slow (The query has to be passed
to the repository server for execution, the result has to be
transfered back, and the server can become a bottleneck due to
higher load).
- teacup cache
clear
- This command deletes all cached indices and associated stati
from the local filesystem. This command fails when caching is
disabled, as at that time it is not known where to look for the
index files.
To get a clear disabled state clear the cache first, then disable
it.
- teacup cache
status
- This command prints the status of local caching of remote meta
data. I.e. whether this is active or not, the path used for the
cached information, timestamps for the cached indices.
- teacup proxy ?host port?
- Query or set the host and port used for proxying. Note that
even if no proxying is set here the teacup will obey a proxying
configuration set in the environment and/or registry, per the
Tcllib package autoproxy.
- teacup timeout ?seconds?
- Query or set the number of seconds after which a remote
operation times out. A negative value (including zero) disables the
timeout, i.e. sets it to infinity.
- teacup install ?-v? ?--timeout sec? ?--http-proxy host:port? ?--dry-run? ?--force? ?--at dir? ?--with-recommends? (url | path | (name ??-exact? version? ?-is entity?))
- Get and install the entity name, either the
highest version, or at least version, or the
exact version, and all its required dependencies (recursive).
Recommended dependencies are not installed by default. The
destination is either the default installation
repository, or the installation repository specified
via the option --at.
Assumes by default that a package is installed, however this
can be overridden by explictly specifying the type of the entity with option -is.
Note: When installing a newer version of an already
installed entity it is required to specify not only the
name, but the version number as well. With only a name the command
will find the installed version of the entity in question and
therefore see no need to install anything at all.
For the options not explained below see section
Options.
- --force
- Ensures the installation of the package even if the declared
dependencies could not be met, i.e. if one or more required
packages are not found in the set of configured archives.
This option has no effect if teacup decided that there was no need to
install an entity, i.e. when the entity is already installed. It is
there to overcome missing dependencies, not to force the
installation of an already installed entity.
- --with-recommends
- Forces the handling of recommended dependencies as if they were
required dependencies, i.e. forces their installation.
If a path or url is
specified it is considered as a package to install directly,
without retrieving it from an archive. Note however that the
dependency resolution for the package in the specified file is
still done through the configured archives, and all the missing
dependent packages are retrieved from the archives and installed as
well.
- teacup remove ?--dry-run? ?--at dir? ?--is entity? name ?version?
- Removes all or specified versions of the entity name from the chosen installation.
For the options not explained below see section
Options.
- teacup describe ?-v? ?--timeout sec? ?--http-proxy host:port? ?--at-default? ?--at dir? ?--is entity? ?--all? name ?version?
- Prints the contents of the meta data keyword Description for package name, or name+version, as found in the
configured set of archives.
For the options not explained below see section Options.
- --all
- causes printing of all meta data for the package in
question.
- teacup list ?-v? ?--timeout sec? ?--http-proxy host:port? ?--at-default? ?--at dir? ?--is entity? ?--as csv|profile|table? ?--only uninstalled|newer|unknown|update? ?name ?version??
- Lists all occurences of the named package in
the configured set of archives. The output can
be restricted to a specific version of the
package, or forced to contain all packages (by specifying neither
name nor version).
If a name was specified, but nothing was found
the command does a case-insensitive substring search for candidate
names and then re-does the operation for all found candidates. This
fixes typos like 'bwidget' instead of 'BWidget', but also means
that 'zlib' will find 'zlibtcl', etc.
For the options not explained here see section Options.
Limiters
- --only unknown
- --only uninstalled
- If this option is specified the tool will remove all entities
from the output which are known to be installed in the installation
repository, and all which cannot be installed (wrong architecture,
and profiles), leaving only those entities in the output which can
be installed locally, but are not.
Note that the command will look not only at the
installation repository itself for installed packages, but also
query the tcl shells connected to that repository.
- --only update
- --only newer
- If this option is specified the tool will remove all entities
from the output which are not installed in the installation
repository, all which cannot be installed (wrong architecture, and
profiles), and all those whose version number is less or equal to
their installed version, leaving only those entities in the output
which are installed and for which a newer version is available in
the archives.
Note that the command will look not only at the
installation repository itself for installed packages, but also
query the tcl shells connected to that repository.
- teacup get ?-v? ?--timeout sec? ?--http-proxy host:port? ?--at-default? ?--at dir? ?--is entity? ?--output outdir? ?name ?version ?architecture???
- Retrieve the package files for all occurences of the named package in the configured set of archives. The retrieval can be restricted to a specific
version of the package, and even a specific architecture of that. It can also be forced to
retrieve all packages (by specifying neither name nor version nor architecture).
For the options not explained here see section Options.
The retrieved files are placed into the directory specified via
option --output, with file names constructed
from the package name, version, architecture, and type of archive.
If the option --output is not present the
application will default to the current directory.
The name of the package archive for an entity with type T, name N, version V, and architecture A is
where N' is derived from N by encoding the ":"-character
as %3a. This is necessary to avoid problems on
Windows, which does't allow ":" within
filenames. The extension EXT is either tm, or zip, depending on the
file format. This last information is currently not directly
available in the meta data.
Also note that the architecture A may
contain dashes (-) as well.
- teacup profiles ?-v? ?--timeout sec? ?--http-proxy host:port? ?--at-default? ?--at dir?
- Prints a list of all profile packages found in the
configured set of archives to stdout. This is a
shorthand for
| |
teapot search -has Profile
|
For the options not explained here see section Options.
- teacup search ?-v? ?--timeout sec? ?--http-proxy host:port? ?--at-default? ?--at dir? ?--as csv|profile|table? query...
- Print a lists of all entities found in the configured set of archives to stdout which match the conditions of
the query.
For the options not explained here see section Options.
The simplest possible query consists of a
single word, for example FOO. This will run a
case-insensitive substring search for the name
FOO.
A more complex query consists of a series of
options interspersed with regular words as arguments. The
fundamental queries are
- -is ENTITY
- The entity is of type ENTITY.
- -nis ENTITY
- The entity is not of type ENTITY.
- -has KEY
- The entity has key in its meta data.
- -nhas KEY
- The entity does not have the key in its meta data.
- -eq KEY VAL
- The entity's value for key is equal to VAL.
- -re KEY PAT
- The entity's value for key matches regexp pattern.
- -glob KEY PAT
- The entity's value for key matches glob pattern.
- -in KEY VAL
- The entity's value for key is list containing the value
- -ne KEY VAL
- -nre KEY PAT
- -nglob KEY PAT
- -ni KEY PAT
- negations of the four previous conditions
- -lt KEY VAL
- The entity's value for key is less than VAL.
- -gt KEY VAL
- The entity's value for key is greater than VAL.
- -le KEY VAL
- The entity's value for key is less than or equal to VAL.
- -ge KEY VAL
- The entity's value for key is greater than or equal to
VAL.
All these conditions imply that a matching entity also has the
specified key in their meta data.
Composite queries, also known as complex queries, can be put
together with the operators -a, -and, -o, and -or ("and", and "or"). The operators -a and -and are equivalent and
are binding tighter than the operator -o (and
its equivalent operator -or). This can be
changed by grouping expressions with round parentheses, i.e. "(",
and ")".
Note that parentheses are often special to the shell used
to invoke teacup, i.e. they may require quoting to
be passed unchanged to teacup.
All operators can be also used with and without their dash (-). The only exceptions are the short combinators
-a and -o. As example,
the two following queries are equivalent:
| |
teacup search -in subject hashing
teacup search in subject hashing
|
Similarly the simple case-insensitive substring search shown at
the beginning, i.e.
internally expands to a long form using Tcl's advanced regular
expressions:
| |
teacup search -re name '(?i)FOO'
|
- teacup keys ?-v? ?--timeout sec? ?--http-proxy host:port? ?--at-default? ?--at dir?
- Prints a list of all keywords found in the meta data of all
instances stored in the configured set of archives.
For the options not explained here see section Options.
- teacup log show ?-l|--last n? ?-s|--since timestamp? ?--at dir?
- Show the log of installed/removed packages of either the
default installation repository, or the repository pointed to by --at.
Normally the whole log is shown, but this can be restricted to
either the last n entries, or the entries made
after a given date and time (timestamp). The
restrictions cannot be combined. When specifying more than one the
last one will be used.
The log will be printed to the standard output in a simple tabular
format, with the oldest entries coming last. I.e. the newest
entries can be found at the top of the log.
The argument n has to be an integer number
greater than zero.
The argument timestamp may have one of the
following forms:
- INTEGER
- Unix epoch value.
- YYYY-MM-DD HH:MM:SS
- ISO DATE+TIME
- YYYY-MM-DD
- ISO DATE only, the time defaults to midnight.
- HH:MM:SS
- ISO TIME only, the date defaults to today.
An example of the output format is
| |
2007-03-02 14:16:12 1 remove package udp 1.0.8 linux-glibc2.2-ix86
2007-03-02 14:10:04 1 install package udp 1.0.8 linux-glibc2.2-ix86
2007-03-02 14:09:50 1 install package Diagrams 0.2 tcl
|
The columns are DATE, TIME, SERIAL, ACTION, ENTITY, NAME, VERSION,
ARCH; in this order.
- DATE, and TIME
- are the date & time when the log entry was made.
- SERIAL
- is a serial number which distinguishes entries should they
happen to be made in the same second. It is counted from 1 up, per
invocation of teacup.
- ACTION
- is either install, or remove.
- ENTITY
- is the type of the entity installed/removed, currently either
package or application.
- NAME, VERSION, and ARCH
- identify the entity more, by name, version and architecture,
also known as platform.
The lengths and positions of the columns SERIAL, ENTITY, NAME,
VERSION, and ARCH are dynamically determined from the entries
printed. The other columns all have fixed lengths, but may change
position.
- DATE
- 10 chars.
- TIME
- 8 chars.
- ACTION
- 7 chars.
- teacup log purge
?--keep-last n? ?--keep-since timestamp? ?--at dir?
- Purges the log of installed/removed packages of either the
default installation repository, or the repository pointed to by --at. Normally the whole log is purged, but this
can be restricted to all but the last n entries,
or all but the entries made after a given date and time (timestamp). I.e. either the last n
entries are kept in the log, or the entries made after the given
date and time are kept in the log. The restrictions cannot be
combined. When specifying more than one the last one will be
used.
The argument n has to be an integer number
greater than zero.
The argument timestamp may have the same forms
as described for log show above.
- --as profile|table|csv
- This option determines the format of the output for list and search commands. By
default a human readable table it can be
switched to be either a .tm profile package
listing all found instances as its dependencies, or a table of
comma-separated values (csv).
- --at dir
- This option causes the application to use the local installation at dir instead of
the default installation. I.e. it can be used instead of --at-default.
- --at-default
- This option causes the application to use the local default installation instead of the configured set
of archives.
- --dry-run
- This option is like make -n. It causes
the application to simulate the requested actions, but to not
change any state.
- --http-proxy host:port
- This option overrides all proxy settings from environment,
teacup configuration, etc. with a setting just for the current
command.
- --is entity
- This option causes the application to restrict itself to
entities of the specified type. If this option is not specified
actions influence all entities matching the name, version, etc.,
independent of their type.
- --timeout seconds
- This option forces the use of a specific timeout when
retrieving information from a remote repository. It overrides the
settings from the configuration, and the hardwired defaults. A
value <= 0 disables timeouts, allowing for infinite waiting.
- -v
- This option activates a more verbose mode where teacup provides
a bit more information about its internal activities.
The client application currently supports a number of predefined
searches, shown below, and free-form searches over the entire
stored meta data via the subcommand search.
As part of the list of predefined searches we also demonstrate how
they could be implemented in terms of search.
- list --is entity name version
- search -is entity -a -eq name
name -a -eq version version
search -eq entity entity -a -eq
name name -a -eq version version
Show all entities of type entity with the
specified exact name and exact version. For example:
| |
list --is application base-tcl 8.4
search -is application -a -eq Name base-tcl -a -eq Version 8.4
search -eq Entity application -a -eq Name base-tcl -a -eq Version 8.4
|
- list --is entity name
- search -is entity -a -eq Name
name
search -eq Entity entity -a -eq
Name name
Show all entities of type entity with the
specified exact name, regardless of version. For
example:
| |
list --is package zlibtcl
search -is package -a -eq Name zlibtcl
search -eq Entity package -a -eq Name zlibtcl
|
- list --is entity
- search -is entity
search -eq Entity entity
Show all entities of type entity, regardless of
name or version. For example:
| |
list --is package
search -is package
search -eq Entity package
|
- list name version
- search -eq Name name -a -eq
Version version
Show all entities with the specified exact name
and exact version, regardless of entity-type.
For example:
| |
list XOTcl 1.3.5
search -eq Name XOTcl -a -eq Version 1.3.5
|
- list name
- search -eq Name name
Show all entities with the specified exact name, regardless of version or entity-type. For example:
| |
list XOTcl
search -eq name XOTcl
|
- list
- Show all entities regardless of name, version or
entity-type.
- list --only uninstalled
- Show all entities which are known to the archives, are not
installed locally, and can be installed locally.
- list --only newer
- Show all entities which are installed locally and for which we
can find newer versions in the archives.
- profiles
- search -has Profile
Show all entities regardless of name, version or entity-type,
which are profiles.
The install command internally performs
searches as well, similar to the list searches above, however the
architecture is implicitly constrained to the architectures
acceptable to selected installation repository, and the highest
possible version is selected if no exact version was requested.
In contrast to install the method get will retrieve all possible versions, and
architectures.
This document, and the application it describes, will
undoubtedly contain bugs and other problems. Please report such at
the ActiveState
ActiveTcl Bug Tracker. The relevant component is
teapot. Please also report any ideas for enhancements you
may have for either application and/or documentation.
The version number of the teacup application with the problem in
question can be queried with the command version, as explained in section General inquiries
and getting new revisions.
teapot, teapot-admin, teapot-md, teapot-pkg
TEA, TEAPOT, client, package management, repository
Copyright © 2006-2007 ActiveState Software Inc.
|