Guide for FreeBSD Ports Collection

Home / Guide for FreeBSD Ports Collection

Guide for FreeBSD Ports Collection

December 5, 2015 | Article | 7 Comments

Compared to another Operating System such as Linux and Windows; FreeBSD has different and unique package management schemes. The Ports Collection, can be found under /usr/ports, contains the Makefiles for a vast amount of software available to configure and compile.

Unlike package management such as apt, yum, yast, and other package management for linux which download the compiled-binary file, ports collection let you download the source code, configure in your way, and compile it. You just configure some aspects before compilation begin and Ports will do the rest for you. You don’t need to worry about dependency, the Ports will take it for you.

In this article we will discuss about how to use Ports Collection: install, find, and remove.

Getting the ports collection

If you did not choose to install the ports collection during the FreeBSD installation then you will need to get it through CVSup. Do install CVSup with pkg_add command (as you don’t have Ports Collection yet) by

pkg_add -r cvsup-without-gui

Make sure you have empty /usr/ports if you run CVSup for first time. And then run CVSup for downloading the ports as described at previous articles.

Another alternative would be using portsnap. Do installation of portsnap by

pkg_add -r portsnap

Now, download / fetch the compressed snapshot to /var/db.

portsnap fetch

If you are running portsnap for first time, then extract the snapshot info to /usr/ports.

portsnap extract

If you have already populate /usr/ports then you need only update it.

portsnap update

If you don’t have enough time to manually download ports collection (or other reason which make you can’t download) and have FreeBSD installer CD, you can use the CD to install ports. Make sure you have the correct version before you proceed. Insert the CD and then enter the following commands:

mount /cdrom
cd /cdrom/`uname -r`/ports

Finding a Port

FreeBSD provides so many software and classified it to some categories such as net, www, database, security, etc. With so many ports it can be hard to find the one we are looking for. The easiest way to find a port is to use the ports directory on the FreeBSD website.

To search locally on our machine we can use the locate command if you know a word in the name of the package

locate <package> | grep distinfo

The “grep distinfo” filters out other files in the port directory so each port that comes up is only shown once.

Another method to find a package:

cd /usr/ports
make search name=postfix

That command will return a list of all ports that have “postfix” i the name, including some other useful infos. If you need to dig deeper, use “key” instead of “name”

cd /usr/ports
make search key=spam

This searches all COMMENT fields of the ports “pkg-description” files and returns the same info as with the “name” search. Make sure to use quotes if you want make more specific searches:

cd /usr/ports
make search key="spam filter"

Files in the port directories


– This is the main file that tells where the files for the port are located and the options to build with. If you wish to install the port with certain options it is a good idea to look through this file and see what is available.


– Gives the version number of the package


– This is displayed after the port is installed giving information on how to finish setting it up, or security warnings. If you get the port installed and can’t figure out how to start it, or where the config files are you should look back at the message.


– A list of files in the package.

Installing a port

To install a port change to its directory and do a “make install”. For example, if we were to install the database server mysql 5.5 it would look like this

cd /usr/ports/database/mysql55-server
make install

To delete the tar file that was downloaded to install mysql once the install was complete simply append the command “distclean” after install like this

cd /usr/ports/database/mysql55-server
make install distclean

To clean out compiled files from the make use “make clean” in the port’s directory

make clean

If you wished to uninstall mysql you could do so with the following

cd /usr/ports/database/mysql55-server
make deinstall

Many ports give a menu during the install asking you to choose certain options. If you wish to skip these menus “all” may be appended after “make install” to install the port more forcefully

make install all

Thus you are going to install default configuration for that ports.

Removing a saved configuration

Ports that give a menu with installation options after starting the make save your choices and this saved config needs to be manually removed if you want to rebuild the port later and want different options. To delete a saved config go to port’s directory and run

make rmconfig

Viewing installed packages and removing them

A list of all installed packages on the machine can be viewed with “pkg_info”


Deleting a package can be done with “pkg_delete” listed by pkg_info above.

pkg_delete -f <package name>

The -f flag forces the package to be deinstalled even if other packages depend on it.

Cleaning up the ports

FreeBSD saves all files downloaded to install the ports to /usr/ports/distfiles. This is useful when you want to do reinstallation as you don’t need to waste your bandwidth and FreeBSD will pick the appropriate package from /usr/ports/distfiles. But if you don’t have much free space, you can clean the distfiles by simply delete it contents.

rm -r /usr/ports/distfiles/*

The above command will removes all of these files, but not the files created during the build. To get rid of these you must run

portsclean -CD

The -CD flags will remove all files in the work directories within the ports tree and any unreferenced distfiles.

Upgrading a port

A port can be upgraded with the port /usr/ports/ports-mgmt/portupgrade

portupgrade <package name>

About Author

about author


A man who is obsessed to low level technology.

  1. Install and Configure Apache Web Server and PHP5 in FreeBSD - Xathrya.ID

    […] In this article we will discuss about how to install and configure Apache and PHP5 for FreeBSD. For this, I use FreeBSD 8.3 amd64, but you can have any FreeBSD version and platform as you please. The Apache WebServer we use would be 2.2 as provided on FreeBSD ports collection. […]

  2. Installing Nagios for Monitoring on FreeBSD 8.3 - Xathrya.ID

    […] Installing Nagios is as easy as installing any FreeBSD ports. […]

  3. Install and Configure a NTP Server on FreeBSD - Xathrya.ID

    […] Installation of NTP is as easy as install other ports. […]

  4. Setting DHCP Server on FreeBSD - Xathrya.ID

    […] ISC DHCP Server is as easy as other ports installation. The version we use will be ISC DHCP Server version 4.2. Now do […]

  5. Installing CUPS as Printing Server for FreeBSD - Xathrya.ID

    […] Updated ports collection. […]

  6. Installing BIND as DNS Server on FreeBSD 8.3 - Xathrya.ID

    […] sure you have become super user by using su. Installing BIND is as easy as other ports […]

  7. FreeBSD Basics - Xathrya.ID

    […] ports collection is a directory of makefiles for a large number of common programs. You can install application from […]

Leave a Reply

Your email address will not be published. Required fields are marked *

Social Share Buttons and Icons powered by Ultimatelysocial