FAQ |
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:
- Wherever you see a port, you can click on the Add
() /
Remove ()
link as necessary (i.e. one-click watch list maintenance).
- The 'watch list categories' link provides you with a list
of categories. Select the category, and then the ports within
that category.
- 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 https://www.freshports.org/customize.php 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 [email protected].
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 https://git.FreeBSD.org/ports.git /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.
|
Can I link to your site? |
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="https://www.freshports.org/">FreshPorts</A>
Here is a banner which you are free to use to link to this site:
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: 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.
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.
Repology: a link to search the Repology packaging hub for this port.
Find Bugs: a link to search for open Problem Reports (issues/bugs) for this port.
New Bug: a link to open a new Problem Reports (issue/bug) for this port.
New: This port has been recently added. A port is marked as new for 10 days.
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: 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: The port is marked as deprecated. Perhaps it has exceeded
its lifetime or is obselete.
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: 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: 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: If you click on this graphic, you will be taken to the list of files
touched by the commit in question.
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:
$ make -V PORTVERSION
"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: This port has been removed from the ports tree.
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).
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.
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.
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): 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.
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 Repository: This link will take you to the Git Repository entry
for this version of the file.
SVN Repository: This link will take you to the Subversion Repository entry
for this version of the file.
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.
VuXML vulnerability. Click icon for details.
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.
This port has some restrictions on it.
This port has some restrictions with respect to being included on a CD-ROM.
This port will require interaction during installation.
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.
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: 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.
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 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.
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.
Click on this icon to add the commit to your flagged list.
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? |
https://www.FreshPorts.org/ is the main page of
this website. It contains a lot of information. You can trim this information by using parameters.
Try this URL: https://www.FreshPorts.org/index.php?num=30&days=0
-
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:
NOTE: Effective 13 November 2003, these parameters are no longer available.
|
How can I view the commits for a particular day? |
Yes, you can. https://www.FreshPorts.org/date.php
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,
https://www.FreshPorts.org/date.php?date=2002/11/19
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 icon and
it doesn't change to a . 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 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 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:
--- bsd.port.mk 10 Jun 2004 07:30:19 -0000 1.491
+++ bsd.port.mk 22 Jun 2004 13:48:33 -0000
@@ -913,6 +913,16 @@
MASTERDIR?= ${.CURDIR}
+# 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}
+IS_SLAVE_PORT?= yes
+MASTERPORT?= ${MASTERDIR:C/[^\/]+\/\.\.\///:C/[^\/]+\/\.\.\///:C/^.*\/([^\/]+\/[^\/]+)$/\\1/}
+.else
+IS_SLAVE_PORT?= no
+MASTERPORT?=
+.endif
+
# If they exist, include Makefile.inc, 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:
Field | Origin |
Port Name | PORTNAME |
Package Name | PKGNAME |
Latest Link | PKGNAME |
Maintainer | MAINTAINER |
Short Description | COMMENT |
Long Description | pkg-descr1 |
Depends Build | BUILD_DEPENDS |
Depends Lib | LIB_DEPENDS |
Depends Run | RUN_DEPENDS |
Message ID | The message id in the original commit email |
ONLY_FOR_ARCHS | output from `make -V ONLY_FOR_ARCHS` |
NOT_FOR_ARCHS | output 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
bacula
$
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:
- FreshPorts takes the port you are looking at
- It finds all the watch lists that this port appears on
- It finds the top 5 most popular ports on those lists
- 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
- GNATS
- 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/acme.sh:
security/acme.sh/#history
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 packages for the quarterly branch on the latest CURRENT
of FreeBSD. Packages are not build for that ABI/package set combination. You may see CURRENT/quarterly listed on some pages.
That is easier to do than to keep track of which branch is CURRENT.
To get new package notifications, follow these steps:
- Click on Report Subscriptions, under Watch Lists in the right hand column
- Check the New Package Notification box
- click on Update
- Again under Watch Lists, this time, click on ABI Package Subscriptions to
select the ABI for which you want to receive notifications
- On this page, select one or more items from each of the first three boxes:
- watch lists (first box)
- ABI (second box)
- one or both of quaterly and latest (third/ box)
and click on Add
When the next updates arrive, you'll get an email.
|
Why is this particular ABI not listed on the website?? |
FreshPorts covers the ABIs published by the project at https://pkg.freebsd.org/index.html.
In general, the project does not build quarterly branches for whatever branch is now CURRENT.
At the time of writing (2024-08-24), the code to extract those ABIs and the current ABI list was:
[15:25 dvl-ingress01 dvl ~/scripts] % cat ./current-list-of-valid-abi.sh
#!/bin/sh
fetch -qo - https://pkg.freebsd.org/index.html | \
grep FreeBSD: | sed -e 's@.*\(FreeBSD:[^ <]*\).*@\1@' | sort
[15:25 dvl-ingress01 dvl ~/scripts] % sh ./current-list-of-valid-abi.sh
FreeBSD:13:aarch64
FreeBSD:13:amd64
FreeBSD:13:armv6
FreeBSD:13:armv7
FreeBSD:13:i386
FreeBSD:13:powerpc
FreeBSD:13:powerpc64
FreeBSD:13:powerpc64le
FreeBSD:14:aarch64
FreeBSD:14:amd64
FreeBSD:14:armv6
FreeBSD:14:armv7
FreeBSD:14:i386
FreeBSD:14:powerpc
FreeBSD:14:powerpc64
FreeBSD:14:powerpc64le
FreeBSD:15:aarch64
FreeBSD:15:amd64
FreeBSD:15:armv7
FreeBSD:15:powerpc
FreeBSD:15:powerpc64
FreeBSD:15:powerpc64le
|