// vim: set et sw=4 ts=8 ft=asciidoc tw=80:
port-selfupdate(1)
==================

NAME
----
port-selfupdate - Upgrade MacPorts itself and update the port definition files.

SYNOPSIS
--------
[cmdsynopsis]
*port* [*-qvdf*] *selfupdate* [--no-sync]

DESCRIPTION
-----------
*port selfupdate* checks for new releases of MacPorts and upgrades it when
necessary. *selfupdate* also updates the local port definitions (the so-called
ports tree) to the latest state so you have the latest versions of ports
available. This part of the operation corresponds to man:port-sync[1].

You should regularly run *selfupdate* to update your local port definitions.
Running *selfupdate* is required to get updated software with bug fixes and new
features.

OPTIONS
-------

*--no-sync*::
    Only check for updates - and install if available - for MacPorts itself. Do
    not update the ports tree.

include::global-flags.txt[]

*-q*::
    Suppress status output, be as silent as possible.

*-f*::
    Do not check whether the downloaded MacPorts version is newer than the
    currently installed one, but always rebuild and reinstall MacPorts.
    +
    You can use this to downgrade from a beta or development version to the
    latest release. Note that there is no guarantee that there have not been
    made incompatible and irreversible changes to MacPorts' internal data
    structures, making a downgrade impossible.

EXAMPLES
--------
When no new versions are available, *selfupdate* looks like this:

[subs="verbatim,attributes"]
----
$ sudo port selfupdate
---> Updating MacPorts base sources using rsync
MacPorts base version {manversion} installed,
MacPorts base version {manversion} downloaded.
---> Updating the ports tree
---> MacPorts base is already the latest version
----

If *selfupdate* detects that a newer version of MacPorts is available, it
attempts to update your copy to this version. In that case, the output will be
different:

[subs="verbatim,attributes"]
----
$ sudo port selfupdate
---> Updating MacPorts base sources using rsync
MacPorts base version 2.3.0 installed,
MacPorts base version {manversion} downloaded.
---> Updating the ports tree
---> MacPorts base is outdated, installing new version {manversion}
Installing new MacPorts release in /opt/local as root:admin; permissions 755
----

TROUBLESHOOTING
---------------
If *selfupdate* fails, it usually does so in one of two places: The network
connection, or the installation of the update.

Network Problems::
MacPorts uses the 'rsync' protocol to update its sources to the latest version.
This will fail if you are on a network that blocks TCP connections to the rsync
port 873. Talk to your network administrators and ask them to allow connections
to port 873 if this happens to you. Alternatively, you can just download a new
installer .pkg from macports.org and run that to upgrade your installation.
+
Network connection problems might also affect you if you are in a country with
US export restrictions. We suggest using one of our other
wiki:Mirrors#MacPortsSource[mirrors] outside of the US in these cases.

Compilation Problems::
When a problem occurs while building and installing the new MacPorts version,
you will see the message
+
----
Error installing new MacPorts base: command execution failed
----
+
To find out what went wrong, re-run *selfupdate* with the *-d* flag. This will
allow you to see all output generated by the build system. Look for the first
occurance of ``error''. If you cannot figure out what's wrong on your own, feel
free to ask on mailto:macports-users@lists.macports.org[the macports-users
mailing list] and attach the output generated by
+
----
$ sudo port -d selfupdate
----


SEE ALSO
--------
man:port[1], man:port-sync[1]

AUTHORS
-------
 (C) 2014 The MacPorts Project
 Clemens Lang <cal@macports.org>
