Slackware Package Management


Slackware's package management system utilizes .tgz files as its standard package format. These packages, despite the extension, are not standard tar.gz archives. Although they can be unzipped and untarred like a normal archive, they are (usually) binary-only packages intended to be installed through Slackware's provided package management tools.

Slackware's package management system is often cited as a weakness of the Slackware distribution compared to other distributions such as Red Hat and Debian. Slackware's package system is fairly robust and useful, however it does lack certain features such as the ability to check for dependencies. Other package managers add numerous bells and whistles such as the ability to download all needed dependencies from a central location and install everything in the proper order. While these bells and whistles can be useful or help save time, they are really nothing more than nice extras. The downside to all of the extra features is the added complexity which makes the learning curve steeper and may just confuse most users.

The Slackware package management system achieves a happy medium between lack of features and feature bloat. The software is intuitive and easy enough to use for nearly all users to become proficient during their first session. In addition, the package management tools' user interface matches that of the installation program. Anyone who installs their own Slackware system will already be familar with the user interface through their interactions with the install routine.

Comparisons with Commercial UNIX Package Management Systems

Several commercial UNIX variants continue to utilize package management systems very similar to what is offered with Slackware. Sun Solaris is an excellent example of the features available with tarball packages without the extreme complexity of such Linux package management formats such as RPM.

Most Solaris packages are distributed in a gzipped tar archive, although there is an option to make a package into a 'stream' which is basically similar to a tar archive in that it is a single file composing a stream of data which may normally comprise multiple files.

Each package contains several text files and scripts which are not part of the actual software to be installed. The pkginfo file describes the name, version, author, and architecture of the package, among other information. The pkgmap file contains a list of each file in the package, its install location, ownership, permissions, and checksums. This ensures that a corrupt package is not accidentally installed. A depend file describes software dependencies, including incompatible packages and reverse dependencies (another package relies upon the current one to operate).

Solaris packages also include very robust options for running scripts, including during the pre-installation phase (preinstall), post-installation phase (postinstall), pre-removal phase (preremove), and post-removal phase (postremove). This allows nearly any kind of necessary manipulation of the package or the operating system upon installation or removal.

Package information, in the form of the pkginfo and pkgmap files are stored in the /var/sadm/pkg directory. Commands such as pkginfo (find out information on an installed package) and pkgchk (compare checksums on installed files vs. what was originally installed) utilize the contents of this directory hierarchy as a kind of package database to report against.

Finally, Solaris provides a suite of commands to create, install, remove, and report on packages. These include pkgadd, pkgrm, pkgchk, pkgmk, and pkginfo.

Future Development

A small group of independent Slackware users has started development on a project to build a more advanced Slackware package management system. The project, known as Slaktool, aims to build a library of functions which can be utilized by more advanced or third-party package management tools while retaining the classic .tgz format and backwards-compatability. Current features of Slaktool include:

Future development plans include adding the following features: