Eli System Administration Guide
Each cache directory contains
a derivation graph built from some set of packages,
plus all of the artifacts created when providing products defined by that
derivation graph.
A user may want to have more than one cache for several reasons:
-
A cache used on a completed project can be deleted without losing artifacts
associated with ongoing projects.
-
A user may collaborate with different people on different projects, each
having its own cache.
-
Different derivation graphs may be appropriate for different projects.
In order to work with more than one cache, the user must be able to refer
to each by a unique name; in order to have caches with different
derivation graphs, the user must be able to control the set of packages
from which a cache is built.
When the eli command
is executed, it specifies the name of a cache directory as follows:
-
If the
eli command has the parameter -c `dir' ,
then the name of the cache directory is `dir'/$ODINVIEW .
`dir' must be an absolute path name.
-
If the
eli command does not have the -c parameter,
then the name of the cache directory is $ODIN/$ODINVIEW .
The value of the environment variable
$ODIN must be an absolute path name.
-
If the environment variable
ODIN is not set,
Then the name of the cache directory
is $HOME/.ODIN/$ODINVIEW .
-
If the environment variable
ODINVIEW is not set, then the result of the command
uname -n is used if it is not empty
(uname -n normally returns the name of the machine executing the
command).
-
If the command
uname -n returns an empty string,
then the string local is used.
If the specified cache directory does not exist, a new cache is built
and represented by a new directory with the specified name.
The environment variable
ODINVIEW is commonly used in a classroom
or laboratory having a number of identical computers that share a
common file system.
Since the computers share a common file system, every execution
of the eli command will have the same value of ODINVIEW .
As noted above, if ODINVIEW is not set then the default cache name
will incorporate the name of the particular computer on which it was created.
Therefore a user will have a different cache for each machine on which they
have run the command eli without a -c parameter.
This can be avoided if the user's startup script defines ODINVIEW as
a constant value.
A different situation arises with a number of clusters of machines of
different architectures, all sharing a common file system.
Each cache is tied to a specific architecture, so there must be a distinct
default cache name for each cluster if the eli command is to be used
without a -c parameter.
The user's startup script should therefore define
ODINVIEW as the result of a command such as arch ,
which returns a string unique to the architecture of the machine running
the command,
rather than a constant value.
The set of packages from which a cache is built is determined either
at the time that an eli command with the -R parameter is
executed on that cache,
or
at the time a non-existent cache is specified.
In either case, the packages making up the set are drawn from four sources,
in order:
-
Parameters of the
eli command, each consisting of -p followed
by the absolute path name of a directory.
An eli command may have an arbitrary number of such parameters, and
they are considered in order from left to right.
-
The colon-separated list of absolute path names in the
ODINPATH environment variable.
-
The standard Eli packages.
-
The standard Odin packages.
Each of the directories may represent a single package or a collection of
packages with a
`PKGLST' file
(see Package Management).
The order in which the directories are considered is important, because
only the first package with a given name is entered into the set from which
the cache is built.
Thus it is possible to override standard Eli and Odin packages by providing
replacements whose names are the same as the names of the packages to be
replaced
(see Maintaining distributed packages).
If an eli command specifying an existing cache is executed without
the -R parameter, then any -p parameters are ignored.
The set of packages available is the set specified when that cache was
originally created, or when it was last specified by an eli command
with the -R parameter.
Odin can be invoked directly with the odin command, although there is
no need to do so except to create a cache without using any of the
standard Eli packages.
Unless the -R parameter is given, the behavior of the odin
and eli commands are identical when they specify an existing cache.
If the specified cache does not exist, or if the -R parameter is
given, then the sets of packages created by the two commands are different.
When an odin command is executed in either of those cases, the
packages making up the set are drawn from two sources, in order:
-
The colon-separated list of absolute path names in the
ODINPATH environment variable.
-
The standard Odin packages.
This differs from the behavior of the eli command
(see Packages in the cache).
The odin command does not accept -p parameters and
does not consider the standard Eli packages.
The effect of -p parameters is obtained by building an appropriate
colon-separated list and making it the value of the environment variable
ODINPATH before executing the odin command.
|