Package Management
Package management is an essential part of any Linux distribution.
Every piece of software included by Slackware, along with many
third-party tools are distributed as source code that can be compiled,
but compiling all those thousands of different applications and
libraries is tedious and time consuming. That's why many people prefer
to install pre-compiled software packages. In fact, when you installed
Slackware, the setup program primarily
worked by running package management tools on a list of packages. Here
we'll look at the various tools used for handling Slackware packages.
pkgtool
The simplest way to perform package maintenance tasks is to invoke
pkgtool(8), a menu-driven interface to some of
the other tools. pkgtool allows you to
install or remove packages as well as view the contents of those
packages and the list of currently installed packages in a
user-friendly ncurses interface.
pkgtool is a convenient and easy way to
perform the most basic tasks, but for more advanced work more flexible
tools are needed.
Installing, Removing, and Upgrading Packages
While pkgtool scores points for convenience,
installpkg(8) is much more capable of
handling odd tasks, such as quickly installing a single package,
installing an entire disk set of packages, or scripting an install.
installpkg takes a list of packages to
install, and simply installs them without asking any questions. Like
all Slackware package management tools, it assumes that you know what
you're doing and doesn't pretend to be smarter than you. In its
simplest form, installpkg simply takes a
list of packages to install, and does exactly what you would expect.
darkstar:~# installpkg blackbox-0.70.1-i486-2.txz
Verifying package blackbox-0.70.1-i486-2.txz.
Installing package blackbox-0.70.1-i486-2.txz:
PACKAGE DESCRIPTION:
# blackbox (Blackbox window manager)
#
# Blackbox is that fast, light window manager you have been looking for
# without all those annoying library dependencies.
#
# Also included in this package is the bbkeys utility for controlling
# keyboard shortcut commands from within Blackbox.
#
# The Blackbox home page is http://blackboxwm.sourceforge.net
#
Package blackbox-0.70.1-i486-2.txz installed.
You can of course install multiple packages at a time, and in fact use
shell wild cards. The following installs all of the "N" series
packages from a mounted CD-ROM.
darkstar:~# installpkg /mnt/cdrom/slackware/n/*.txz
Removing a package is every bit as easy as installing one. As you might
expect, the command to do this is
removepkg(8). Simply tell it which packages
to remove, and removepkg will check the
contents of the package database and remove all the files and
directories for that package with one caveat. If that file is included
in multiple installed packages, it will be skipped and if a directory
has new files in it, the directory will be left in place. Because of
this, removing packages takes a good while longer than installing them.
darkstar:~# removepkg blackbox-0.70.1-i486-2.txz
Finally, upgrading is just as easy with (you guessed it),
upgradepkg(8) which first installs a new
package, then removes whatever files and directories are left-over from
the old package. One important thing to remember is that
upgradepkg doesn't check to see if the
previously installed package has a higher version number than the "new"
package, so it can also be used to downgrade to older versions.
darkstar:~# upgradepkg blackbox-0.70.1-i486-2.txz
+==============================================================================
| Upgrading blackbox-0.65.0-x86_64-4 package using
./blackbox-0.70.1-i486-2.txz
+==============================================================================
Pre-installing package blackbox-0.70.1-i486-2...
Removing package
/var/log/packages/blackbox-0.65.0-x86_64-4-upgraded-2010-02-23,16:50:51...
--> Deleting symlink /usr/share/blackbox/nls/POSIX
--> Deleting symlink /usr/share/blackbox/nls/US_ASCII
--> Deleting symlink /usr/share/blackbox/nls/de
--> Deleting symlink /usr/share/blackbox/nls/en
--> Deleting symlink /usr/share/blackbox/nls/en_GB
...
Package blackbox-0.65.0-x86_64-4 upgraded with new package
./blackbox-0.70.1-i486-2.txz.
All of these tools have useful arguments. For example, the
--root to installpkg will install
packages into an arbitrary directory. The --dry-run argument
will instruct upgradepkg to simply tell you
what it would attempt without actually making any changes to the
system. For complete details, you should (as always) refer to the man
pages.
Package Compression Formats
We won't go in depth into the details of package formats, but a few
words should be given here. In the past, all Slackware packages were
compressed with the gzip(1) compression
utility, which was a good compromise between compression speed and
size. Recently, new compression schemes have been added and the
package management tools have been upgraded to handle these. Today,
official Slackware packages are compressed with the
xz utility and end with .txz extensions.
Older packages (and many third party packages) still use the .tgz
extension.
slackpkg
The slackpkg is an automated tool for
management of Slackware Linux Packages. It was in /extra for
the release of slackware-12.1, and since the release of
slackware-12.2 it is included in the ap/ series of a base
installation.
For more information see the man pages for
slackpkg(8) and slackpkg.conf(5).
Homepage: http://www.slackpkg.org/