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.

conary repositoryrPath Linuxrecipeconary repository
cvsGentoo LinuxebuildGentoo Portage
gitALT Linuxspec
svnMandriva Linuxspec
ftpDebian Linuxdeb, orig.tar.gz and diff.gz

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.

yumFedorayum uses http to fetch repodata to resolve dependencies and search for updates
conaryrPath Linuxuses a http xml rpc to contact a conary repository
rsyncGentoo.ebuild files are synchronized to remote repositories
apt-rpmALT Linuxapt-rpm uses http, ftp or rsync to fetch metadata (in RPM-specific format)
urpmiMandriva Linuxurpmi uses http, ftp or rsync to fetch metadata
aptDebian Linuxapt 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.

mockFedoraInitialize buildroot
rmakerPath LinuxInitialize buildroot
emergeGentooSystem root is used
hasherALT LinuxInitialize buildroot
iurtMandriva LinuxInitialize buildroot
pbuilderDebian LinuxA 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?

rpmRed Hat, SuSE%patch macro’s
cvcrPath Linuxr.addPatch() and package policies
ebuildGentooepatch eclass
rpmALT Linux%patch macro’s, patches are generated by “gear” from git branches
rpmMandriva Linux%patch macro’s
debDebian Linuxdiff.gz is applied to orig.tar.gz

Fetch sources

How are the sources to build the packaged fetched?

ebuildGentoo LinuxSources are automatically fetched using SRC_URI
cvcrPath LinuxSources are fetched during cooking recipies (r.addSource)
gearALT LinuxSources are stored in git repositories
repsysMandriva LinuxTarballs are stored in svn

Compile and configure sources

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

rpmRed Hat, SuSE, ALT Linux, Mandriva%setup shell script
cvcrPath Linuxpython r.setup() and Conary API
ebuildGentoo Linuxshell script src_compile()

System configuration

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

rpmRed Hat, SuSE, ALT Linux, MandrivaConfig files can be tagged, rpmold rpmnew files are created for conflicts
conaryrPath LinuxConfig files can be patched using tag handlers, files can be removed from version control
emergeGentoo LinuxCertain 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?

rpmRed Hat, SuSE, ALT Linux, MandrivaVerifyintegrity check timestamp/checksum, rpm -V
rpmRed Hat, SuSE, ALT Linux, MandrivaManage dependenciesstored in rpm database
rpmRed Hat, SuSE, ALT Linux, MandrivaVersion controlstored in rpm database
conaryrPath LinuxVerifyintegrity check timestamp/checksum, conary verify
conaryrPath LinuxManage dependenciesstored in conarydb
conaryrPath LinuxVersion controlstored in conarydb, compared to conary repository
emergeGentoo LinuxVerifyintegrity check timestamp/checksum, equery verify (?)
emergeGentoo LinuxManage dependenciesstored in edb, local portage copy
emergeGentoo LinuxVersion controlstored in edb, local portage copy
Scroll to Top