udpkg is a much-trimmed down version of the Debian package manager. The goal is to implement a small subset of dpkg's functionality sufficient to bootstrap a newly installed system. Assumptions: * udpkg needs to provide support for the following operation modes of dpkg: -i: install package(s) -r: remove package(s) --unpack: unpack packages --configure: configure packages * Full dependency checking is not supported. In particular, udpkg does not support: - Pre-depends - Versioned depends - Alternate depends (udpkg forces the first one to be used) - Versioned provides (not currently in policy) - Conflicts and replaces Simple dependencies on either a real package or a virtual package is supported. * udpkg must be able to recognize and update the status file based on packages being installed or removed * dependency checking can be turned off completely at compile time to save space * udpkg depends on the availability of external tools; in particular, ar, tar, zcat and the existence of /bin/sh. (TODO: optionally link in busybox versions of these routines instead of running them from the shell)