PORTEASY(8)

NAME
porteasy - fetch and build ports

SYNOPSIS
porteasy [-abCceFfhIikLlsuVvw] [-D date] [-d dir] [-p dir] [-r dir] [-t tag] [port ...]

DESCRIPTION
porteasy maintains an updated ports tree, and fetches and builds ports automatically, keeping track of dependencies.

The following options are available:

-a  Use the FreeBSD project's anoncvs server as CVS root directory.

-b  Build the selected ports.

-C  Don't clean port directories after building.

-c  Clean the selected ports.

-D date
    Specify a date to use for cvs(1) operations.

-d dir
    Specify the package database directory (normally /var/db/pkg).

-e  Deselect ports that are already installed.

-F  Force installation and registration, even if the port is already installed.

-f  Fetch the selected ports.

-h  Show a summary of options and parameters.

-I  Select installed ports.

-i  Describe the selected ports.

-k  Build packages for the selected ports.

-L  List the packing lists for the selected ports.

-l  List the selected ports.

-p dir
    Specify the ports directory (normally /usr/ports).

-r dir
    Specify the CVS root directory.

-s  List installed ports and their status.

-t tag
    Specify a tag to use for cvs(1) operations.

-u  Update all necessary files using cvs(1).

-V  Show the porteasy version number and exit.

-v  Verbose mode: show more information about what is being done.

-w  Show the URL of the port's web site if there is one listed in the port description.

  Port names
The port names listed on the command line may be either unqualified or fully qualified. A fully qualified port name is the path to the port directory relative to the root of the ports tree (i.e. the port's category and name separated by a slash). An unqualified port name is the name of the package built by the intended port, or part of that name.

Unqualified names need to be looked up in the ports index, which is usually slightly out of date, so fully qualified names should be used whenever possible.

  Sequence of operation
This section describes the operations performed by porteasy and the order in which they are performed.

Update index
    If the -u option was specified and some unqualified port names were listed on the command line, the index file is updated using cvs(1).

Select ports
    The selection list is initialized with the ports listed on the command line (and, if the -I option was specified, all installed ports) marked as explicit dependencies. Any unqualified names are looked up in the index, using simple heuristics to identify incompletely named ports. If a certain match is not found, porteasy prints a list of possible matches and exits.

    All direct and indirect dependencies of the ports listed on the command line are also selected and marked as dependencies.

Update ports tree and discover dependencies
    If the -u option was specified, the port directories for all selected ports are updated using cvs(1). Each selected port's Makefile is scanned to discover dependencies, which are in turn selected and marked as implicit dependencies. This process is repeated until no new dependencies are found.

Deselect installed ports

    If the -e option was specified, porteasy checks to see if any of the selected ports are already installed; those that are are deselected. This process is not very accurate, as it will not detect if an older or alternate version of a selected port is installed.

List selected ports
    If the -l option was specified, the fully qualified name and package name of all selected ports are listed. Explicitly selected ports are indicated with a star.

List installed ports
    If the -s option was specified, all installed ports are listed with their status ('<' for ports that are older than the version in the tree, '>' for those that are newer, '?' for those that could not be identified).

Show packing lists
    If the option was specified, the packing lists for all explicitly selected ports are shown.

Describe selected ports
    If the -i option was specified, porteasy prints a description of each port that was specified on the command line.

Show the URLs of the selected ports' web sites
    If the -w option was specified, porteasy prints the URL of the web site of each port that was specified on the command line, if a URL is listed in that port's description.

Clean the tree
    If the -c option was specified, porteasy runs the ‘clean’ target on every selected port. If no ports were selected, porteasy runs the ‘clean’ target on every known port that is present in the tree.

Fetch ports
    If at least one of the -b, -f or -k options was specified, porteasy runs the ‘fetch’ target on every selected port.

Build, install, package, clean ports
    If one or both of the -f or -k options were specified, porteasy runs the ‘install’ or ‘package’ target, followed by the ‘clean’ target (unless the -C option was specified), on every explicitly selected port. porteasy lets the ports system handle dependencies on its own, since the reported dependencies are sometimes too inclusive.

IMPLEMENTATION NOTES
There may be a significant difference between what ports are selected (and listed if the -l option is specified) and what ports are actually installed and/or have packages built for them, since implicitly selected ports that are already installed, or somehow pass the dependency check (e.g. because an alternate, equivalent port has been installed) will be passed over by the ports system, as indeed they should.

porteasy tries to minimize the number of times cvs(1) is invoked, since the overhead involved in connecting to a remote server is usually quite high (and the user might have to type a password every time), but prefers correctness to performance. The maximum number of invocations is (2 + NC + NP), where NC and NP are the number of distinct categories and ports (including master directories and dependencies).

ENVIRONMENT

PORTEASY_OPTIONS
    Specifies a set of default options for porteasy. These options can be overridden by command line parameters.

FILES
porteasy maintains and operates on a ports tree, normally /usr/ports. Some information is gathered from the package database, normally located in /var/db/pkg.

AUTHORS
porteasy was written by Dag-Erling Smørgrav <des@FreeBSD.org>. Several people contributed their comments and suggestions, most notably Eivind Eklund <eivind@FreeBSD.org>.