Features -------- binary installs package metadata package integrity gpg signatures sha256 sums sha3 sums package contents integrity sha256 sums of installed files sha3 sums sha1 sums lists of directory contents package database editing e.g. marking a file as a configuration file repackaging creating a package from the current state of an installed package package a tarball create a package from a tarball package from stdin like cpio package a directory like tar build from shell scripts rebuild a package write ahead log for package filesystem operations it should always be possible for the package system to figure out if it was interrupted install, uninstall, upgrade, and downgrade hooks dependency tracking network fetching of packages and package databases reference counting of dynamic libs simple packaging constructs use shell scripts where possible use shell functions as hooks and callbacks package is just a tarball can contain more than one package xz compressed version? package-name/version/files/{usr/bin/foo, etc} package-name/version/info/hooks - shell script of functions package-name/version/info/pkginfo - shell readable package-name/version/info/manifest? derivable from tarball package-name/version/info/dynamiclibs, or greppable from manifest? /var/lib/zpac: packages/installed//files/sha1/ab/ab/hash -> file librefs// (or file?) sha1/ab/ab/ -> file fileowner/sha1/ab/ab/hash/packagename - can be more than one need to mark a package as held for no automatic upgrade configure to run a command after an any package work