notbugAs an Amazon Associate I earn from qualifying purchases.
Want a good read? Try FreeBSD Mastery: Jails (IT Mastery Book 15)
Want a good monitor light? See my photosAll times are UTC
This referral link gives you 10% off a account and gives me a discount on my Fastmail account.

Get notified when packages are built

A new feature has been added. FreshPorts already tracks package built by the FreeBSD project. This information is displayed on each port page. You can now get an email when FreshPorts notices a new package is available for something on one of your watch lists. However, you must opt into that. Click on Report Subscriptions on the right, and New Package Notification box, and click on Update.

Finally, under Watch Lists, click on ABI Package Subscriptions to select your ABI (e.g. FreeBSD:14:amd64) & package set (latest/quarterly) combination for a given watch list. This is what FreshPorts will look for.


This page contains the FAQ for FreshPorts. Hopefully the questions are arranged from general to specific. The more you know, the further down you must read to find something you didn't already know.

What is this website about?
This website will help you keep up with the latest releases of your favorite software. When a new version of the software is available, FreshPorts will send you an email telling you about the change.
How do I use this?

Your primary FreshPorts tool is your watch list. This is the collection of ports which you have selected for FreshPorts to keep track of. You will be emailed when a change is found for one of your watched ports.

You can have more than one watch list. Most people would have one watch list for each machine they administer. I suggest giving the watch list the same name as the machine. Email notifications will contain headers with the list name. You can use that for any filtering you may want to do (e.g. procmail).

Some definitions

You should be familiar with the Ports section of The FreeBSD Handbook. Pay careful attention to the difference between a port and a package.

Definitions for the hopelessly lazy

What is a port?

If you install the port, the source will be downloaded, patched if necessary, compiled and installed. You will have a chance to set any optional configuration items particular to that port. If the port is dependent upon another port, that port will also be installed. After installing, ports are identical to packages.

It is because of these compile time options that I prefer ports over packages.

What is a package?

A package is a compiled port. It is a binary. When you install the package, you will download a binary and it will be installed.

Packages often lag behind ports. That is usually because it takes time to compile the packages, etc. If you want the latest version, and the package is not available, then you should install the port.

Not all ports can have packages, often because of license restrictions that prevent binary distribution.

How do I modify my watch list?
There are three easy ways to modify your watch list:
  1. Wherever you see a port, you can click on the Add (Click to add this to your default watch list[s]) / Remove (Click to remove this from your default watch list[s]) link as necessary (i.e. one-click watch list maintenance).
  2. The 'watch list categories' link provides you with a list of categories. Select the category, and then the ports within that category.
  3. Use the 'upload' link to upload your pkg_info data into your watch list staging area and then into your watch list.

One-click watch list maintenance operates only upon your default watch lists. You can set one or more watch lists as being default.

How do I empty my watch list?
Via Watch List Maintenance. Select the watch lists you wish to empty, and follow the instructions provided.
How do I delete my account?
Visit and click on the Delete my account link. It's just below update account.
What is a port?
A port is a simple easy way to install an application. A port is a collection of files. These files contain the location of the source file, any patches which must be applied, instructions for building the application, and the installation procedure. Removing an installed port is also easy. For full details on how to use ports, please refer to the official port documents in the FreeBSD Handbook.
Where do ports come from?
Ports are created by other FreeBSD volunteers, just like you and just like the creators of FreshPorts. The FreshPorts team does not create ports; we just tell you about the latest changes. The FreeBSD Ports team creates, maintains, and upgrades the ports.
Who do I talk to about a port?
The official mailing list is More information all FreeBSD mailing lists can be obtained from FreeBSD Mailing Lists.
How do I get these ports?
For full information on how to obtain the ports which appear on this website, please see FreeBSD Ports. The easiest way to get a port is via git. An abbreviated example is:
git clone /usr/ports
How is the website updated?
The source code for the entire FreeBSD operating system and the Ports tree are stored in the official FreeBSD repository. The FreshPorts nodes then use git to detect changes and load the new commits into its database.

In the past, FreshPorts would parse the emails sent out for each commmit and then load the information into a database. In theory, it's fairly straight forward. In practice, there's much more to it than first meets the eye. The website was updated as soon as the message arrived.

What does unknown mean for a revision number?
It means the data has been converted from an earlier version of the FreshPorts database that did not record this information.
Yes, thank you, you can. No need to ask us. Just go ahead and do it. We prefer the name FreshPorts (one word, mixed case). The following HTML is a good place to start:
<a href="">FreshPorts</A>

Here is a banner which you are free to use to link to this site:

FreshPorts -- The Place For Ports

Here is the HTML for that graphic.
<img src="images/freshports-banner.gif" alt="FreshPorts -- The Place For Ports" title="FreshPorts -- The Place For Ports" width="468" height="60">

Please save this graphic on your website.

What do these symbols mean?
There are a few symbols you will see in this website.

Homepage Homepage: a link to the Project Page / home page for this port. A port can have more than one homepage While I personally think the documentation does not specifically allow for this, I think it arose when WWW was moved from pkg-descr to Makefile.

pkg-fallout Fallout: a link to search the freebsd-pkg-fallout archives. If the resulting fallout list is empty: the port may have been skipped due to fallout of a related port.

View this port on Repology. Repology: a link to search the Repology packaging hub for this port.

Find issues related to this port Find Bugs: a link to search for open Problem Reports (issues/bugs) for this port.

Report an issue related to this port New Bug: a link to open a new Problem Reports (issue/bug) for this port.

new! New: This port has been recently added. A port is marked as new for 10 days.

Forbidden Forbidden: The port is marked as forbidden. If you view the port details, you will see why. Most often, it is because of a security exploit. Packages for a forbidden port are not built by the package cluster. Therefore, pkg install will not work.

Broken Broken: The port is marked as broken. Perhaps it won't compile. Maybe it doesn't work under FreeBSD right now. If you view the port details, you will see the reason why. Packages for a broken port are not built by the package cluster. Therefore, pkg install will not work.

Deprecated Deprecated: The port is marked as deprecated. Perhaps it has exceeded its lifetime or is obselete.

Expiration Date Expiration Date: The port has an expiration date. A port may be removed from the tree after this date. Often added in conjunction with Deprecated.

Expired Expired: The port has passed the expiration date. A port may be removed from the tree after this date. Often added in conjunction with Deprecated.

Ignore Ignore: The port is marked as ignore. It probably does not build. Packages for an ignored port are not built by the package cluster. Therefore, pkg install will not work.

files touched by this commit Files: If you click on this graphic, you will be taken to the list of files touched by the commit in question.

Refresh Refresh: The system is in the process of refreshing that port by inspecting the ports tree. You should rarely see this.

If you do see one, chances are that the port contains an error that prevents make(1) from running. For example:

"Makefile", line 271: 1 open conditional
make: fatal errors encountered -- cannot continue

In such circumstances, the port committer is notified (if they have opted in to the FreshPorts Sanity Check Report) and they should fix the problem as soon as possible. Once you see a more recent commit without a refresh icon, then the problem has been fixed. The refresh icons will go away after FreshPorts has dealt with the old commits. This may take a few hours.

Deleted Deleted: This port has been removed from the ports tree.

Original commit These icons for for older commits. At one time, FreshPorts parsed emails. This icon will appear alongside commits before the repo moved from subversion to git. They appear along side the commit message in the comit history. This link will take you to the original message in the FreeBSD mailing list archives. Note that it can take a few minutes for the message to appear in the archives. This link will not appear for commit messages before 3 March 2002 (which is the date FreshPorts started to store the message-id).

Commit details FreshPorts commit message: This will take you to the FreshPorts commit message and allow you to see all other ports which were affected by this commit. This link will not appear for commit messages before 3 March 2002 (which is the date FreshPorts started to store the message-id).

NOTE: This link has been made redundant by recent advances in the Files link. See next icon.

Click to remove this from your default watch list[s] Item is on one of your default watch lists: This port is on one of your default watch lists. Click this icon to remove the port from your default watch lists. This icon appears only if you are logged in.

Click to add this to your default watch list[s] Add item to your default watch lists: This port is not on any of your default watch lists. Click this icon to add the port to your default watch lists. This icon appears only if you are logged in.

Encoding Errors (not all of the commit message was ASCII) Encoding Errors (not all of the commit message was ASCII): Some of the commit message may be altered because of character conversion problems. We display only UTF-8 and remove the offending characters. These errors may occur in the log message or elsewhere in the commit email.

on this many watch lists Watch List Count (WLC): This is the number of watch lists which are watching this port. This might give you an idea of the popularity of the port.

git Git Repository: This link will take you to the Git Repository entry for this version of the file.

Subversion SVN Repository: This link will take you to the Subversion Repository entry for this version of the file.

CVS log CVS Repository: Deprecated, and historical. Probably does not appear much any more. This link will take you to the CVS Repository entry for this version of the file. This is for much older commits.

This port version is marked as vulnerable. VuXML vulnerability. Click icon for details.

An older version of this port was marked as vulnerable. A past VuXML vulnerability. Click icon for details. NOTE: A feature of security/vuxml is it names the packages which a given vuln affects. If the port changes its package name, past vulnerabilities won't show up in FreshPorts. That's because FreshPorts does not store historical package names.

Restricted This port has some restrictions on it.

NO CDROM This port has some restrictions with respect to being included on a CD-ROM.

Is Interactive This port will require interaction during installation.

Search Dependency Search: Action depends on context. Click on this icon to search for ports depending on the current port, ports maintained by the current maintainer, or other commits by the current comitter.

View revision Revision details. Click on the Files icon in the commit history and you'll see what files in this port were touched by this commit. Click on the Revision details to view the revision of the file associated this commit.

Annotate / Blame Annotate: If you click on this graphic, you will be taken to a view of the file in question, with a listing of the commits that last changed each line.

View diff Diff. Click on the Files icon in the commit history and you'll see what files in this port were touched by this commit. Click on the Diff icon to view the diff between this revision of the file and the previous revision.

Sanity Test Failure Sanity Test Failures. The maintainers and committers are good. But sometimes a mistake slips through. This records the mistake to make it easier for others to correct it if it goes unnoticed. If you see this icon next to a commit, it failed a Sanity Test.

Commit Flagged Flagged Commit. This commit is on your list of flagged commits. Why would you flag a commit? Perhaps you want to review that commit. Perhaps you want to MFC it later. Click on this icon to remove the commit from your flag list.

Commit Not Flagged Click on this icon to add the commit to your flagged list.

Ascending OrderDescending Order Ascending / Descending: These icons appear on particular tables and allow changing the order rows are sorted by.

Why don't my old bookmarks work?

Many things changed between FP1 and FP2. The most major change was in the underlying database schema. Not only did we move from mySQL to PostgreSQL, we made major changes to the tables and the way in which the ports are stored in the database. As a result of these changes, many internal IDs and values are no longer valid. Therefore, URLs such as /port-description.php3?port=1234 no longer work.

If it is any consolation, the new URLs are transparent and permanent. They are of the form <category>/<port>.

Do you have any news feeds?

Yes. Read all about it!

Can the main page load any faster? is the main page of this website. It contains a lot of information. You can trim this information by using parameters.

Try this URL:

  • num - number of ports to show (regardless of commits so the last commit may not list fully). The valid values are 10..100.
  • days - number of summary days (in the right hand column) to display. The valid values are 0..9.
  • dailysummary - similar to days, but displays a summary of the days instead of a link to a page of commits for that day.
Here are a few examples:
Description URL
The last ten ports
Same as above, but show only two days of previous commits
Same as above, but show summaries instead of a link to another page

NOTE: Effective 13 November 2003, these parameters are no longer available.

How can I view the commits for a particular day?

Yes, you can. displays all the commits for today (relative to the current server time).

You can also pass a parameter and view the commits for a given day. For example, will show all the commits for 19 November 2002

The date should be of the format YYYY/MM/DD but I'm sure different formats will work. If the code has trouble figuring out what date you mean, it will guess and let you know it adjusted the date.

Why can't I add a port to my watch list?

You have clicked on the Click to add this to your default watch list[s] icon and it doesn't change to a Click to remove this from your default watch list[s]. Yes, I've had that happen too. What you need to do is check your watch list settings. You have probably selected "default watch list[s]" when you don't have any default watch list[s] set. To mark a watch list as a default, select it in the list, then click on the Set Default button.

NOTE: The Click to remove this from your default watch list[s] will only appear beside a port that is one on of your default watch lists. If the port is on one of your non-default watch list, the Click to add this to your default watch list[s] icon will appear instead. If you do not see what you expect, try setting the default watch lists in your watch list settings.

Why doesn't this port appear on my watch list?

Please refer to the above question.

What are Port Moves?

Some ports (for example net/gift) will have a section titled "Port Moves". FreshPorts obtains information about ports from the commits to the repository.

With subversion, there could be a manual change to the repository, not creating a commit email. Such moves were often referred to as a repo-copy, and might have moved a port from one category to another. Such a change was done to ensure the port history is retained.

With git, repo-copies do not occur; the changes are accomplished via commits.

Such moves/commits are documented in /usr/ports/MOVED. FreshPorts parses this file and records these changes in its database.

This new feature was added on 31 December 2003.

What is /usr/ports/UPDATING?

/usr/ports/UPDATING is similar to /usr/src/UPDATING, but for ports, not for the source tree.

FreshPorts parses this file and attempts to relate the entries to any ports it can find. Such relations are not always possible. We do the best we can. The net/openldap22-client port is a good example of what to expect.

What are Master/Slave ports?

Some ports are so similar to another port that it makes sense to maintain just one port and specify the differences in the other port. This is slightly similar to the way /etc/defaults/rc.conf is related to /etc/rc.conf.

A good example is www/mod_php4. You can see that the master port for that is lang/php4. Conversely, lang/php4 lists several slave ports.

The ability to add this feature is because of this patch:

---	10 Jun 2004 07:30:19 -0000	1.491
+++	22 Jun 2004 13:48:33 -0000
@@ -913,6 +913,16 @@
+# Try to determine if we are a slave port.  These variables are used by
+# FreshPorts and portsmon, but not yet by the ports framework itself.
+.if ${MASTERDIR} != ${.CURDIR}
+MASTERPORT?=	${MASTERDIR:C/[^\/]+\/\.\.\///:C/[^\/]+\/\.\.\///:C/^.*\/([^\/]+\/[^\/]+)$/\\1/}
 # If they exist, include, then architecture/operating
 # system specific Makefiles, then local Makefile.local.

The FreeBSD tree has no defined method for handling master/slave ports. It is because of this that FreshPorts never attempted to refresh slave ports when a master port was updated. Now that we have a mostly-reliable method, all slave ports are refreshed when the master port is updated.

This method works for all but 40 ports which are involved in a master/slave relationship. It is hoped that those 40 are fixed soon. It is also hoped that the above patch is comitted to the tree.

What is this "to add the package" stuff?

Included within the port description is the instruction for adding the package. This information can be important when the package name does not match the port name. A good example is x11/XFree86-4-clients. The command to add this package is:

pkg install XFree86-clients

This normally isn't a problem, but for the 1900 or so ports which are different, this information is very useful.

If the pkg install information does not appear, you'll be told why there is no package. This is controlled by the NO_PACKAGE variable in the port's Makefile.

Broken, ignored, and forbidden ports are not built by the package cluster. Therefore, there is no package for pkg install to use.

Why does the search page use GET and not POST?

If you visit the search page, and you run a search, you'll find that the URL becomes very long. For example, this really long link.

Long URLs occur like that because the search form uses a GET. A long URL would not occur if it was using a POST. The long URLs are useful because they allow you to bookmark your favorite search. That is why a GET is used instead of a POST.

It also makes it easier to validate the HTML if you can provide a URL that exercises all the options that require testing.

What are all those fields I can search on?

For those familiar with the FreeBSD ports structure, the following fields indicate their origin:

Package NamePKGNAME
Latest LinkPKGNAME
Short DescriptionCOMMENT
Long Descriptionpkg-descr1
Message IDThe message id in the original commit email
ONLY_FOR_ARCHSoutput from `make -V ONLY_FOR_ARCHS`
NOT_FOR_ARCHSoutput from `make -V NOT_FOR_ARCHS`
For all of the above origins, you can obtain the value using make. For example:
$ cd /usr/ports/sysutils/bacula/
$ make -V PORTNAME
1 This value is obtained from a file in the port directory. For example /usr/ports/sysutils/bacula/pkg-descr.
Where did this "People watching this port, also watch" feature come from?

Like many FreshPorts features, this idea came from someone else. Florent Thoumie mentioned something about extending the ports system to include recommendations from maintainers/committers. Such a feature would allow a committer/maintainer to suggest, for example, that if you install Firefox, that you also install linuxflashplugin.

It was from this concept that I came up with "People watching this port...". This information is obtained by:

  1. FreshPorts takes the port you are looking at
  2. It finds all the watch lists that this port appears on
  3. It finds the top 5 most popular ports on those lists
  4. FreshPorts shows you the results

All of this takes about 55ms.

What do you mean, the master port has been updated?

For some slave ports, you may see a message like this, just above the Commit History:

NOTE: This slave port may no longer be vulnerable to issues shown below because the master port has been updated.

Slave ports can be updated with a commit against the master port. A commit against the master port will affect any slave ports. If a VuXML vulnerability has been recorded against a slave port, any fix would be applied to the master port. However, the commit to the master port would not appear under the slave port, thereby giving a false impression that the slave port was still vulnerable.

The above notice serves as a reminder that the slave port may no longer be vulnerable.

How does FreshPorts determine the master sites?

Each port displays the master sites from which its distfiles can be downloaded. This information is obtained from "make master-sites-all". However, this is not the only list of master sites that a port knows about. Edwin Groothuis explains it in this email.

In short, FreshPorts displays the list of master sites that should contain all the distfiles. That is why we use that value, and not one of the other options.

Why don't you obscure email addresses?

FreshPorts used to obscure email addresses, but we don't any more. We realised that every email address on FreshPorts is already somewhere else first. For example:

  • www/ports pages
  • portsmon
  • fenner's output
  • cvsweb (now deprecated)
  • subversion (still online, but replaced by git)
  • git

In short, it doesn't make sense to obscure that which is freely available elsewhere.

Similarly, we do not entertain requests to remove information from our website. We only report upon what exists elsewhere.

Why does the PORTVERSION at the top of page differ from that of the first commit?

This question refers to a port page.

This situation usually occurs with MASTER/SLAVE ports. The Master port is updated with a new REVISION. No commit is done against the Slave port. FreshPorts knows to refresh the Slave port when its Master port is updated. This refresh updates the PORTVERSION at the top of the page. This update reflects the REVISION you would get if you were to install the Slave port now that the Master has been upgraded.

What HTML anchors exist?

Anchors in port pages include:

  • description
  • man
  • add
  • flavors
  • distinfo
  • packages
  • masterport
  • slaveports
  • pkg-plist
  • dependencies
  • requiredbuild
  • requiredtest
  • requiredrun
  • requiredlib
  • requiredfetch
  • requiredpatch
  • requiredextract
  • requiredby
  • RequiredByBuild
  • RequiredByExtract
  • RequiredByFetch
  • RequiredByLibraries
  • RequiredByPatch
  • RequiredByRun
  • requiredfor
  • conflicts
  • config
  • options
  • uses
  • sites
  • message
  • updating
  • history

Anchors make it easier to link to sections within pages.

For example, this link – note the #history at its tail – takes you to the commit history for security/


Browser extensions such as Display #Anchors and Anchors Reveal can help to visualise anchors that would otherwise be invisible.

Enjoy. We can add more anchors upon request.

Can I get alerts for new packages?

Yes, yes, you can.

Not only can FreshPorts email you when one of your watched ports is updated, it can also email you when the package is ready to install

FreshPorts polls the available FreeBSD repo builds on an hourly basis. It uses that information to display the packages available under various ABI (e.g. FreeBSD:14:amd64). NOTE: we do not display package for the quarterly branch on the latest CURRENT of FreeBSD. No pacakges are build for that ABI/package set combination.

To get new package notifications, follow these steps:

  1. Click on Report Subscriptions, under Watch Lists in the right hand column
  2. Check the New Package Notification box
  3. click on Update
  4. Again under Watch Lists, this time, click on ABI Package Subscriptions to select the ABI for which you want to receive notifications
  5. On this page, select one or more items from each of the first three boxes:
    1. watch lists (first box)
    2. ABI (second box)
    3. one or both of quaterly and latest (third/ box)
    and click on Add

When the next updates arrive, you'll get an email.