| ## Installing Ports
## Dan Langille <>
FreeBSD has many programs, also known as applications, and are often
referred to as ports. Ports are an easy and simple way to install new
software. The port knows what other libraries it needs and it goes and
gets them. If it can't find them at one site, it will search other sites.
I've found ports to be extremely reliable and easy to use. You can also
use a package, but my success rate with packages is very low when compare
to parts. But for more information in packages, see section "6.1. So,
where are all the user applications?" of the FreeBSD Handbook. Another
important point is that packages are not available for all ports.
So where are all these ports?
On your machine, you'll find the ports installed at /usr/ports. They are
divided into various categories such as graphics, net, security, www,
mail, editors, etc. You should be able to find what you want, when you
want it. You can also view the list of ports maintained
. At the time of writing,
there were 2041 ports.
The ports are also maintained on the various FTP servers around the world.
You'll find the ports at ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/. This
is the main site. But you should also be aware that there are many
servers and that the mirror sites will probably be faster for you. I
recommend you have a look at
site close to you.
Installing a single port
Ports are updated all the time. The easiest way to get the latest port is
to grab it from the Internet. For that, you should follow the instructions
at "4.3.2. Compiling ports from the Internet" in the FreeBSD Handbook.
Here's an example from the that section:
# cd /usr/ports
# mkdir databases
# cd databases
# ftp ftp.freebsd.org
[log in as `ftp' and give your email address when asked for a
password. Remember to use binary (also known as image) mode!]
> cd /pub/FreeBSD/ports/ports/databases
> get gnats.tar [tars up the gnats skeleton for us]
# tar xf gnats.tar [extract the gnats skeleton]
# cd gnats
# make install [build and install gnats]
Getting all the ports
In the previous section, you saw that in order to install a port, you
first had to connect to the FTP server, then get the tar file, then
extract it, etc. Well, I have a great time saver for you. It consists of
doing the repetitive bits first and only once and it only requires a small
bit of disk space.
First, I must explain that this step does not install all of the ports.
Rather, it sets up the files which will enable you to just issue the
"make" command. Here's how I did this:
When you select ports above, make sure you press the space bar. Then go
down and press Exit. Then select the Installation Media. I selected
CD-ROM. Note that you may have to go to the Options screen and set the
I waited for about 30 minutes while the files were transferred to my hard
drive. If you select FTP, you will probably have to wait bit long. But
either way, it will make your life easier in the long run.
CVSup is a mechanism for maintaining the FreeBSD source code tree. But
you can use it to keep a list of the current ports. Here's how to install
CVSup and get it running.
I have decided to follow the -stable branch. And as the -stable
instructions say, the first thing I did was subscribe to the
freebsd-stable and cvs-all mailing lists. Then I installed followed the
instructions for CVSup. Ironically, this involves installing a port
first. But I'll show you what I did.
There are three options for CVSup. I chose the statically linked
executables. This avoids the need for the Modula-3 libraries, which are
rather large and compiling them is a lengthy process.
As I already had all the ports installed (as described in the previous
section), here's what I did to install CVSup.
[root@ns:/usr/ports/net/cvsup-bin] # cd /usr/ports/net/cvsup-bin/
[root@ns:/usr/ports/net/cvsup-bin] # make
>> cvsup-bin-15.4.2.tar.gz doesn't seem to exist on this system.
>> Attempting to fetch from ftp://ftp.freebsd.org/pub/FreeBSD/CVSup/
fetch: ftp.freebsd.org: Not logged in
>> Attempting to fetch from ftp://ftp.cs.tu-berlin.de/pub/FreeBSD/CVSup/
Receiving cvsup-bin-15.4.2.tar.gz (1099198 bytes): 100%
1099198 bytes transfered in 28.0 seconds (38.40 Kbytes/s)
===> Extracting for cvsup-bin-15.4.2
>> Checksum OK for cvsup-bin-15.4.2.tar.gz.
===> Patching for cvsup-bin-15.4.2
===> Configuring for cvsup-bin-15.4.2
cd /usr/ports/net/cvsup-bin/work/cvsup-bin-15.4.2; gunzip cvsup.1.gz
[root@ns:/usr/ports/net/cvsup-bin] # make install
===> Installing for cvsup-bin-15.4.2
install -c -o bin -g bin -m 555 cvsup /usr/local/bin;
install -c -o bin -g bin -m 444 cvsup.1 /usr/local/man/man1
===> Generating temporary packing list
===> Compressing manual pages for cvsup-bin-15.4.2
===> Registering installation for cvsup-bin-15.4.2
You will need a sup file to start with. And you'll find several examples
in /usr/share/examples/cvsup/. We'll be using ports-supfile as found in
that directory. I copied that file to /usr/home and modified it to suit my
I changed my cvsup host to the one closest to me:
I changed the base directory where the status files will be maintained.
Don't forget to create this directory.
I'm behind a firewall, so I used the following command to start my update
(you need to do this as root).
cvsup -P m ports-supfile
The -P ensure you get passive mode, which allows cvsup to work behind a
If you want to know how to run a test of the above, without changing any
files, you can do this instead:
cvsup -P m ports-supfile /var/tmp/dest
For this, you don't have to be root. You just need read access to
/usr/src. The files will be placed in /var/tmp/dest.
Hope this gets you on your way,
Return to Issue #2