[FreeBSD Logo] [Apple Logo]
FreeBSD and MacPorts


General

Project Home
C/Unix Programmer's Guide
FreeBSD and MacPorts
Which FreeBSD is best?
VEX Robotics under Unix
Creating Port-friendly Projects

Port Descriptions

APE
Legoctl/Roboctl
NBC/NXC
IFI Reloaded QT
IFI PIC Tools

Management Scripts

update_jb_ports
update_jb_ports.md5

Links

FreeBSD Ports Project
MacPorts Project

Frameworks and source

FreeBSD port frameworks
MacPorts frameworks
Source code
This is my personal collection of ports for FreeBSD and MacPorts. It includes some applications I developed myself, ports of other Unix programs of personal interest, and ports for fMRI research that I created during my years at the Medical College of Wisconsin.

Why FreeBSD and Mac?

Although a staunch Unix-agnostic, I became somewhat focused on these two platforms while working as a systems manager in fMRI research from 1999 to 2008. After years of experimenting with various Unix-like systems, I found these two platforms to be the most useful and easiest to manage.

FreeBSD is an amazing work horse for the CPU and memory intensive fMRI analyses, and it's network speed and stability are indispensable for the massive amounts of image data crossing the network on a daily basis. It's truly a "set and forget" operating system. Once a FreeBSD system is set up and configured the way you want it, it will run for years with very few problems and very little maintenance. Just as importantly, the ports system makes software management simple and scalable, as well as making the applications installed via ports as efficient and stable as possible.

OS X is also very stable and powerful, but more importantly, it runs many of the commercial applications used for research publishing.

Although FreeBSD and OS X are my primary platforms, I'm not out to force anyone else to use them. I do my best to write portable code, and gratefully welcome patches for other POSIX platforms. I believe that users should have freedom to choose their operating system and hardware based on an objective analysis of its merits (stability, performance, security, price, etc), rather than be forced to use a particular OS in order to run their applications.

I also periodically test most of my own code on Linux and Solaris in order to enhance and verify portability. If I had unlimited time, I would port to many other POSIX platforms, but since I have to budget, I think it's better to invest in depth rather than breadth (i.e. use my time to develop more code and let others port it to their favorite platforms.) In the end, this will result in more useful code and more benefit to the open source community.

Using the Ports

For full instructions on installing, uninstalling, or upgrading software using the ports systems, please see the FreeBSD ports or MacPorts WEB sites.

Ports and the corresponding binary packages can be managed from the command line (the fastest method for those who know their way around Unix), by using a menu driven interface such as FreeBSD's sysinstall, or a GUI (graphical user interface) such as the DesktopBSD Package Manager, or Porticus for MacPorts. The DesktopBSD package manager is a standard component of DesktopBSD, but can also be installed on FreeBSD and its other derivatives using the sysutils/desktopbsd-tools port.
DesktopBSD Package Manager [DesktopBSD Porticus [Porticus

A "committed" port is one that has been accepted into the official ports collection. Port frameworks that are already committed need not be downloaded from this site. If you have a recent enough ports snapshot, they will already be in your ports tree and ready to install. If your ports tree is old, you can either update your whole tree (see the ports system documentation), or download the individual framework from the ports collection.

Port frameworks not yet committed to the FreeBSD or MacPorts projects (i.e. those still under development) can be easily added to or updated within your tree using the update_jb_ports script, which works on both FreeBSD and Mac.

The update_jb_ports script is itself normally installed by a port in the jb_ports collection. Of course, if you have never run the script before, you won't have jb_ports, so for the first run, you'll have to fetch the script manually.

  1. See if you have the update_jb_ports port already. If you do, uninstall/deinstall it, and install the latest.
  2. If you don't have the port:
    1. Fetch the distribution archive from here.
    2. tar zxvf update_jb_ports-(version).tar.gz
    3. cd update_jb_ports-(version)
    4. ./update_jb_ports
    5. Now install the update_jb_ports port, so that the scripts and man pages will all be properly installed.
Run update_jb_ports whenever you want to get the latest jb_ports frameworks.

It's a good idea to upgrade (or uninstall/deinstall and reinstall) the update_jb_ports port so that you'll always have the latest scripts.

On FreeBSD, use:

cd /usr/jb_ports/ports-mgmt/update_jb_ports
make deinstall distclean reinstall

On Mac, use:

port uninstall update_jb_ports
port clean --all update_jb_ports
port install update_jb_ports

A Few of the Programs

Program FreeBSD Port status MacPorts Status
Another Programmer's Editor (APE) Beta Beta
Legoctl/Roboctl Committed Committed
NBC/NXC Committed Waiting for commitment of FPC port
Libbacon Stable Stable
IFI Reloaded QT Alpha Alpha
IFI PIC Tools Alpha Alpha

Qemu-tap

Qemu-tap is a setup script for enabling bridged networking in QEMU guests through FreeBSD's tap(4) network pseudo-devices. This is not a port, and probably never will be, but the code is posted in the source code directory for convenience. The script adds necessary options to configuration files including /boot/loader.conf, /etc/devfs.rules, and /etc/sysctl.conf. It also installs /etc/qemu-ifup for bringing up the tap devices when qemu is started.