This page displays the features of different package systems

Meta data storage

Where is the version, package name information and description stored and versioned? Where is this information centrally stored in order to enable a installed distribution to check if all latest packages are installed and which packages are available.

System Distribution Format Description
cvs Fedora spec http://cvs.fedoraproject.org/viewvc/rpms/
conary repository rPath Linux recipe conary repository
cvs Gentoo Linux ebuild Gentoo Portage
git ALT Linux spec http://git.altlinux.org/people/
svn Mandriva Linux spec http://svn.mandriva.com/svn/packages/
ftp Debian Linux deb, orig.tar.gz and diff.gz ftp://ftp.debian.org/debian/

Distribution to users

How are compiled/generated files distributed to the root filesystem of a user, favoring a internet connection. After compiling the sources to binary executables and user data this need to be send to users using some sort of a system.

System Distribution Description
yum Fedora yum uses http to fetch repodata to resolve dependencies and search for updates
conary rPath Linux uses a http xml rpc to contact a conary repository
rsync Gentoo .ebuild files are synchronized to remote repositories
apt-rpm ALT Linux apt-rpm uses http, ftp or rsync to fetch metadata (in RPM-specific format)
urpmi Mandriva Linux urpmi uses http, ftp or rsync to fetch metadata
apt Debian Linux apt uses http or ftp to fetch metadata

Initialize build environment

When building a package how are the required libraries and utilities (i.e. compiler) installed? Most systems create a build root environment and use chroot. This feature also ensures or checks if all dependencies are fulfilled.

System Distribution Description
mock Fedora Initialize buildroot
rmake rPath Linux Initialize buildroot
emerge Gentoo System root is used
hasher ALT Linux Initialize buildroot
iurt Mandriva Linux Initialize buildroot
pbuilder Debian Linux A clean room (chroot) build environment to verify the build dependencies

Patch sources

Where are the sources patched to fix bugs or add i.e. a distro flavor? Most distributions have a chain of patches which are applied before compiling the sources. These patches need to be applied in a certain order, where/how is this stored?

System Distribution Description
rpm Red Hat, SuSE %patch macro's
cvc rPath Linux r.addPatch() and package policies
ebuild Gentoo epatch eclass
rpm ALT Linux %patch macro's, patches are generated by "gear" from git branches
rpm Mandriva Linux %patch macro's
deb Debian Linux diff.gz is applied to orig.tar.gz

Fetch sources

How are the sources to build the packaged fetched?

System Distribution Description
koji Fedora (?)
ebuild Gentoo Linux Sources are automatically fetched using SRC_URI
cvc rPath Linux Sources are fetched during cooking recipies (r.addSource)
gear ALT Linux Sources are stored in git repositories
repsys Mandriva Linux Tarballs are stored in svn

Compile and configure sources

How are the sources configured to disable or enable certain features?

System Distribution Description
rpm Red Hat, SuSE, ALT Linux, Mandriva %setup shell script
cvc rPath Linux python r.setup() and Conary API
ebuild Gentoo Linux shell script src_compile()

System configuration

How is the configuration (in /etc) updated / installed?

System Distribution Description
rpm Red Hat, SuSE, ALT Linux, Mandriva Config files can be tagged, rpmold rpmnew files are created for conflicts
conary rPath Linux Config files can be patched using tag handlers, files can be removed from version control
emerge Gentoo Linux Certain directories (/etc) are protected by config protect (?) conflicts can be manually resolved using etc-update

System state management

How can the state of the system be checked?

System Distribution Type Description
rpm Red Hat, SuSE, ALT Linux, Mandriva Verify integrity check timestamp/checksum, rpm -V
rpm Red Hat, SuSE, ALT Linux, Mandriva Manage dependencies stored in rpm database
rpm Red Hat, SuSE, ALT Linux, Mandriva Version control stored in rpm database
conary rPath Linux Verify integrity check timestamp/checksum, conary verify
conary rPath Linux Manage dependencies stored in conarydb
conary rPath Linux Version control stored in conarydb, compared to conary repository
emerge Gentoo Linux Verify integrity check timestamp/checksum, equery verify (?)
emerge Gentoo Linux Manage dependencies stored in edb, local portage copy
emerge Gentoo Linux Version control stored in edb, local portage copy