Next Previous Contents

3. Introduction to Software Distribution

3.1 What is a package?

A package is a standard unit of software. Packages enable the software distributor to easily provide a complete set of files needed for functional operation or compilation of a piece of software. A package file format is a specification which defines the layout and content of a package file. A number of package file formats exist from which a software distributor may select, though many are proprietary and do not have publicly-available specifications. Operating system end-users often select an operating system distribution in part on the basis of merit of the packaging format the distributor employs. Packages provide software in a manner which is conducive to easy installation, removal and upgrade; they exist not only to ease the burden of the software distributor, but also the end-user.

3.2 What components define a package file format?

All known package file formats consist of two basic components: a mechanism for storing files within a package and a mechanism for storing special package information used by the operating system. Even the most simplistic of package formats contain some form of the two components.

File storage is most frequently performed with a combination of archiver and compressor, though only an archiver is required. File archivers, such as 'tar', enable the safe storage and extraction of multiple files (file-related information, such as ownership and permissions), in a single archive file. Compression tools, such as gzip or bzip2, are frequently employed with an archiver to reduce the amount of space required for the storage of an archive file.

All package formats provide to identify the software enclosed within the package. Most package formats also provide a means to specify dependencies, other packages required for proper operation. Additionally, advanced package formats often provide some form of cryptographic signature or checksum for the package, to enhance security.

3.3 What is a package management system?

Package management systems provide a means to perform semi-automated or fully automated software installation, removal, and upgrades. Tracking of installed packages is usually performed through the use of some form of database. Mature, well-developed package management systems typically offer both console-based and GUI-based tools for package handling.

Next Previous Contents