Freebsd – the difference between FreeBSD ports and pkgsrc

freebsdpackage-managementpkgsrc

I understand that pkgsrc can be run on most Unices, including macOS, Linux, and Cygwin. What is the difference between FreeBSD ports and pkgsrc? Is it because pkgsrc wants to be inclusive of all Unices?

Best Answer

pkgsrc, the NetBSD package collection, aims, just like the NetBSD project itself, to be portable:

Like NetBSD, pkgsrc is designed with portability in mind and consists of highly portable code. This allows the greatest speed of development when porting to a new platform. This portability also ensures that pkgsrc is consistent across all platforms.

(ref: The pkgsrc documentation).

I other words, pkgsrc provides the possibility to build software for not only NetBSD, but for a range of Unix operating systems. The FreeBSD ports and packages, and the OpenBSD equivalent for that matter, aims at providing third-party software for that particular operating system, only. So the aim is a bit different.

As usual, the FreeBSD project is concerned with supporting as many FreeBSD users as possible (and therefore has the largest 3rd-party software collection), while OpenBSD is driven by developers for developers ("you say you want this, but I don't see a patch from you").

The three BSDs' ports systems have many things in common due to being intimately related, but nowadays, due to diverging development, they are definitely not drop-in replacements of each other. The tools are different, the structure of what constitutes a port/package is different and even some of the terminology is different (a NetBSD "port" is not the same as a FreeBSD "port").

Coming from OpenBSD and therefore familiar with that system's port system (building things in port subdirectories using make etc.), I have successfully used pkgsrc on various Linux systems where I haven't had root access, as well as on my personal macOS machine.

The strength of pkgsrc is that it offers its users the possibility of having a homogenous working environment across heterogeneous Unix platforms.

However, I see no point in running it on OpenBSD, even though it's definitely possible, as the OpenBSD ports collection has all the software that I need. A FreeBSD user may feel the same about running pkgsrc on FreeBSD.

Related Question