4.4 Using the Packages System

Contributed by Chern Lee.

4.4.1 Installing a Package

You can use the pkg_add(1) utility to install a FreeBSD software package from a local file or from a server on the network.

Example 4-1. Downloading a Package and then Installing It Locally

    # ftp -a ftp2.freebsd.org
    Connected to ftp2.freebsd.org.
    220 ftp2.freebsd.org FTP server (Version 6.00LS) ready.
    331 Guest login ok, send your email address as password.
    230-     This machine is in Vienna, VA, USA, hosted by Verio.
    230-         Questions? E-mail freebsd@vienna.verio.net.
    230 Guest login ok, access restrictions apply.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> cd /pub/FreeBSD/ports/packages/sysutils/
    250 CWD command successful.
    ftp> get lsof-4.56.4.tgz
    local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
    200 PORT command successful.
    150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
    100% |**************************************************| 92375       00:00 ETA
    226 Transfer complete.
    92375 bytes received in 5.60 seconds (16.11 KB/s)
    ftp> exit
    # pkg_add lsof-4.56.4.tgz

If you do not have a source of local packages (such as a FreeBSD CDROM set) then it will probably be easier to use the -r option to pkg_add(1). This will cause the utility to automatically determine the correct object format and release and then to fetch and install the package from an FTP site.

    # pkg_add -r lsof-4.56.4

The example above would download the correct package and add it without any further user intervention.

Package files are distributed in .tgz format. You can find them at ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/, or on the FreeBSD CDROM distribution. Every CD on the FreeBSD 4-CD set (and PowerPak, etc) contains packages in the /packages directory. The layout of the packages is similar to that of the /usr/ports tree. Each category has its own directory, and every package can be found within the All directory.

The directory structure of the package system is identical to that of the ports; they work with each other to form the entire package/port system.

4.4.2 Deleting a Package

To remove a previously installed software package, use the pkg_delete(1) utility.

    # pkg_delete xchat-1.7.1

4.4.3 Managing Packages

pkg_info(1) is a utility that lists and describes the various packages installed.

    # pkg_info
    cvsup-16.1          A general network file distribution system optimized for CV
    docbook-1.2         Meta-port for the different versions of the DocBook DTD

pkg_version(1) is a utility that summarizes the versions of all installed packages. It compares the package version to the current version found in the ports tree.

    # pkg_version
    cvsup                       =
    docbook                     =

The symbols in the second column indicate the relative age of the installed version and the version available in the local ports tree.

Symbol Meaning
= The version of the installed package matches that of the one found in the local ports tree.
< The installed version is older then the one available in the ports tree.
> The installed version is newer than the one found in the local ports tree. (local ports tree is probably out of date)
? The installed package cannot be found in the ports index.
* There are multiple versions of the package.

4.4.4 Miscellaneous

All package information is stored within the /var/db/pkg directory. The installed file list and descriptions of each package can be found within files in this directory.

This, and other documents, can be downloaded from ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

For questions about FreeBSD, read the documentation before contacting <questions@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.