Readme for the Zounds package

Author: Julien T. Letessier
Date: 2002-11-23
Revision: 1.2
Version: 0.1.0

1   Introduction

Zounds is a front-end to the low-level package management programs present in Zoularis (pkg_add and friends).

It knows about the packages available from various repositories, and provides simple ways to manage your software. Initially it is set up to fetch package information from our SourceForge repository.

If you've installed Zounds as a Zoularis package, all you have to do is to type zounds from a command line, and you're up!

If you've installed Zounds from the source tarball, you'll have to set the environment variable ZOUNDS_HOME to the extracted directory, and add $ZOUNDS_HOME/bin to your PATH.

2   Using Zounds

The current Zounds distribution can be used in two different fashions:

  • either directly from the command line, by typing the commands zounds followed by several options;
  • either by simply typing zounds; you'll enter the "Zounds shell", a command-line interface to the Zounds engine.

Zounds' usage model is probably unusual for those used to other equivalent tools, like Debian's apt. We like to think it's more flexible. In a few words, instead of issuing "install package" commands, you'll specify several desires, like "upgrade package" or "remove package", and possibly review the results before performing the actual package operations.

Zounds naturaly remembers about your desires across program calls or shell sessions (using a cache).

Of course, you can fall back to the more "usual" behavior, if you wish so: for instance, the command:

zounds -i bison -r teTeX -p

specifies that you want to install bison, remove teTeX, and perform the operation.

From Zounds point of view, packages wear "tags". Some tags specify the insallation status of a package (not installed, installed, obsolete); some detail the desire you specified about them.

This brings to how Zounds handles package dependencies. When you install a package that has many dependencies (e.g. Gnome), you want it to install the dependencies as well--Zounds does this, of course, but it remembers they were automagically installed (with different tags: installed and auto_installed).

This way, when you decide to remove KDE, Zounds will also remove the dependent packages you don't need anymore, except if some other package requires them.

3   Prerequisites

  • For Zounds (end-user):

    • Python 2.2 or later
    • the Optik Python library
    • digest package (hash sum calculator)
  • For repository maintenance:

    • digest package
    • a full gzip distribution
    • GNU sed and GNU grep packages
    • pkg_info, included in base Zoularis.
    • rsync package (only for pkg_sync)

    The top of might have to be edited if you didn't install these packages through Zoularis.

    For pkg_sync, you'll additionally need rsync, lintpkgsrc from the pkglint package, and scp from OpenSSH.

4   End-User tools

Perform operations on the cache and on installed packages. Say zounds to start!
(deprecated) Perform a search in the cache. Type pkg_find -h for details.

5   Maintainer tools

Used to maintain the repository. Copy it to the repository top-level (i.e. aside the All directory); there, type gmake <target>.


  • all: build links and metadata files
  • check: check consistency, broken links...
  • clean: you guess!

Used to sync to/from the SourceForge repository. Type pkg_sync for help. Requires the pkglint package to be installed.

Example (typical) usage: first use:

pkg_sync -vvzn commit

to check what would be commited, then:

pkg_sync -zd commit

to perform the commit.

6   Internal tools

Note: these tools are only available from the zounds-devel package.

Python script, prints the modification time of its file argument. (Used in

Python script; doesn't use the Zounds engine, but does need the Zounds.Kernel.pkg module (the one specific to BSD packages). Generates the portion of the Files.list repository metadata file.

In other words, helper for

7   Developer tools

Note: these tools are only available from CVS.

Python script, uses the Zounds engine. Takes either a (versionned) package name or the string match, and dumps the corresponding cache element.
Removes all of the *.pyc precompiled Python files from a directory.
Highly volatile scripts for debugging purposes. While most are certainly broken by now, those concerning a limited number of packages could have a longer lifespan.