stork logo
Using Stork

The Stork Client

The Stork client is used to install packages onto your nodes. There are two different ways to install packages:
  • Manually using the stork client command-line tool
  • Automatically using pacman

There are a number of command line options that may be specified to control the behavior of stork. These options may also be specified in the stork configuration file (/usr/local/stork/etc/stork.conf by default). Stork will also check your TPFile to confirm that the package is a trusted package from the package's true creator.

Stork client, while effective by itself, is also used in unison with Pacman. Pacman is used to organize nodes and packages, and essentially just runs the Stork client for installation of each individual node that you tell it to manage. Pacman will call the Stork client when a package is updated in the repository, thereby updating the package on your nodes.

Stork Client Command-line Tool

The stork client tool can be used to manually install, remove, and upgrade packages. It does this through a command-line interface. You must be logged in as root to use the stork client tool.

Installing Packages:

To install a package on a node, use the command (from root):
$ stork mypackage

Removing Packages:

To remove a package from a node, use the option:
$ stork --remove mypackage

Upgrading Packages:

To upgrade a package from a node, use the option:
$ stork --upgrade mypackage

Specifying version numbers and tags:

Optionally, you may also specify version and tag numbers when installing and upgrading packages. For example:

To install a specific version number of a package:
$ stork --upgrade mypackage=1.0.3-11

You may also use >, <, >=, <= relational operators:
$ stork --upgrade mypackage
<=1.0-3-11

To install a package with a specific tag, use the '#' syntax:
$ stork --upgrade mypackage#mytag

Stork Client Options

The following are the options that can be used with the stork client, organized by type.

Help, Verbosity, and Miscellaneous

-h, --help
Display a short summary of available options and exit
--version
Display stork version number and exit
--log
Record package actions in the system log
--width=CHARS
Set the width of the terminal in characters (default: 80)
-Q, --veryquiet
Be very quiet (shorter messages)
-q, --quiet
Be quiet
-v, --verbose
Be verbose (default)
-V, --veryverbose
Be very verbose (useful for debugging)
--ultraverbose
Be extremely verbose (might be useful for debugging)

Error Reporting

Stork includes a built-in error logging and reporting feature. Errors in the Stork python scripts will be caught and a comprehensive error report generated and stored in a file in /tmp for future reference. The error report will be automatically emailed to the Stork developers to aid in diagnosing future problems.

--debug
Disable the error reporting mechanism. Stork will not catch exceptions and will neither generate nor send error reports.
--disableerrorreporting
Disables sending of error reports to the Stork team. Reports are still generated and saved to files, but they will not be mailed to the Stork developers.

Commands

All of the following options are mutually exclusive and effect what operation stork will carry out. If no command is given, then stork will automatically default to package installation.

(default)
Install the packages listed on the command line. The version that the package will be upgraded to will generally be the first matching line that is found in your trusted packages file. The install command will fail if any version of a package is already installed.
-R, --remove
Remove the packages listed on the command line.
--upgrade
Upgrade the packages listed on the command line. Upgrade is similar to install, with the exception that upgrade does not fail when packages are installed. The specific actions of an upgrade depend on the type of package installed. For an RPM package, stork will install the new version and then remove the old version (mimicking the behavior of RPM). For tar packages, stork will remove the old version of the package before installing the new version.
--whatrequires
List all installed packages that require the dependencies listed on the command line.
--list
List installed packages. If package names are listed on the command line, then stork will query those package names. If no names are listed, then stork will list all packages installed.
--tpdump
Dump trusted packages data, including your trusted packages file and all trusted packages file reference by it. The dumped output will be sorted to indicate the order in which packages will be prioritized when searching for a package to install.

Modifiers to Package Installation, Remove, Upgrade

-s, --simulate
Simulate the action instead of performing it. Packages will not be downloaded, installed, upgraded, or removed.
--force
Force removal and/or upgrade of packages that have outstanding dependencies. Normally stork will refuse to remove or upgrade a package, if removal or upgrade would break other packages that depend upon it. Specifying --force will cause stork to ignore those dependencies and remove/upgrade the packages anyway.
-a, --abort
If dependency resolution fails to resolve the dependencies of a package, then abort without continuing to try other packages.
-A DEPTH, --abortdepth=DEPTH
Used with the --abort option, this option specifies the depth in dependency resolution for which the --abort option will take place. The default is 0. This option has no significance if --abort is not used.
--disabletrustedpackagesdata
Does not check the trustedpackages file before installing a package. WARNING: Using this option will allow packages that are untrusted or rejected to be installed. It also disables the tag feature and when multiple versions of a package exist, causes the version to be chosen arbitrarily.
--noupgradedeps
Does not automatically upgrade dependencies when upgrading or installing packages.
--requiretags=TAGS
Specifies a list of tags that must be present in a package and its dependencies. Packages without the tags will be ignored.
--tagprefrules
Specifies a list of tag preference rules that will be used to sort available packages. A rule is of the form "tag1<tag2". Multiple rules may be specified with commas ("tag1<tag2, tag3<tag4").

File Transfer Options

Stork transfers files using a variety of mechanisms. These mechanisms generally include the nest, bittorrent, coblitz, coral, http, and ftp. If a transfer method fails, then stork will failover to the next available transfer mechanism. The following options control the transfer mechanisms.

--transfermethod=PROGRAM
Uses this method to transfer files (default ftp, http)
--transfertempdir=PATH
Uses this path to temporarily save transfered files (default is /tmp/stork_trans_tmp)
--bittorrenttrackerhost=TRACKERHOST
Uses this host name of the tracker server.
--bittorrenttrackerport=TRACKERPORT
Uses this number to specify as the tracker port number for torrents.
--bittorrentuploadrate=UPLOADRATE
Uses this number to specify as the tracker port number for torrents.
--bittorrentseedlookuptimeout=SEEDLOOKUPTIMEOUT
The number of seconds bittorrent should timeout after not finding a seed.
--transuser=USER
Uses this user to transfer files (the default is up to the transfer program)
--nesthostname=HOSTNAME
Uses this host to transfer files. The default is localhost.
--nestport=PORT
Uses this port to transfer files. The default is 648.

Repository Options

These options control the stork package managers (the interface to rpm, tar, etc) and Stork's interaction with the repository.

--packagemanagers=PACKAGEMANAGERS
Uses these programs to manage packages (default rpm, tar)
--tarpackinfo=PATH
Uses this path to store tar package info (default is /usr/local/stork/tar_packinfo)
--localpackageinfo=PACKAGEDIR
Uses this location of local package information (default /usr/local/stork/var/packageinfo). Stork creates a directory structure under this local dirctory to hold various bits of information, including package info, trusted packages files, and pacman fils.
--repositorypackagedir=MASK
Specifies a mask that is used to match available packageinfo files on the repository. The default of *_packages_* will allow all packageinfo to be used. A comma-separated list may be used for multiple masks, or the option may be repeated multiple times.
--repositorypackageinfo=DIR
Uses this repository name and location of information about packages. A comma-separated list (or multiple switches) may be used to download repository information from multiple repositories. In case duplicate trusted packages and/or pacman files exist on multiple repositories, ties will be broken in favor of the file with the newest timestamp.
--noupdatepackageinfo
Does not attempt to download updated package databases from the repositories.
--insecure
Does not use https for transferring configuration files from the repository using curl. This switch only affects the downloading of public keys and configuration files, and not the downloading of packages or metadata.

TPFiles, Config Files, Keys

-C FILE, --configfile=FILE
Use a different config file (/usr/local/stork/etc/stork.conf is the default)
--noupdateonstart
Do not try to download latest custom configuration files and keys from repository upon start of stork.py
--xmlsignaturedtd=FILENAME
Dump trusted packages data
--trustedpackagesdtd=FILENAME
Sets the trustedpackages DTD file
--noupdatetrustedpackages
Does not attempt to update the trustedpackages files
--ignoremissingtpfiles
Ignores missing trusted packages files.
--certificate=STRING
Uses a different certificate for downloading conf files from repository. the default is /usr/local/stork/var/certificates/nr06.certificate
--repositorypath=STRING
Uses a different repository to download configuration files from. the default is https://nr06.cs.arizona.edu /user-upload/
--keytype=KEYTYPE
Use this technique to sign files (default is rsa)
--keygen=GENTYPE
Use this option to use openssl to generate your public/private keypair (default is genrsa)
--hashtype=HASHTYPE
Use this algorithm to generate hashes (default is -sha1)
-u USERNAME, --username=USERNAME
Use this username for configuration files
--publickeyfile=file
Use this public key file to determine which configuration files to use. Recommended: /usr/local/stork/var/keys/[username].publickey
--lockdir=dir
Use the specified mutex lock directory (default /var/lock)
 
 
Home Top
powered by planetlab University of Arizona, Computer Science logo