Ports

Ports collections （又称 ports trees 或直接简称 ports）是一系列由BSD系列操作系统（比如 FreeBSD，NetBSD，和 OpenBSD）提供的一些 makefile 和 patch (Unix)，以作为一种简单的安装以及创建二进制包的方法。它们通常基于软件包管理系统，并带有 ports  创建以及附加工具以对软件包删除、增添或进行其他操作。除了BSD，一些Linux发行版有类似的软件。包括 Gentoo的 Portage，Archlinux 的 Arch编译系统(ABS) ， 的以及 Void Linux 的 Ports。

Ports 的主要优点是使用现有的硬件资源对软件安装的微调与优化。

另一方面，它的主要缺点是需要额外花时间在包的编译上。举个例子，安装一份全部通过 ports 编译的 FreeBSD 需要几天，当然，这取决与你的硬件。编译GNOME等大型软件也需要花费大量时间。

NetBSD 的 pkgsrc
NetBSD 的 pkgsrc ports collection 与众不同，它致力于保证和便携性，以及对除 NetBSD 外的 BSD 系统的通用性，包括其他BSD，Linux和其他类Unix系统。在 1997年8月，pkgsrc 被基于已经存在的 FreeBSD ports 系统被创建。它遵循每季度发布，而在2006年7月包含了超过6000个包。 在DragonFly BSD 的1.4版本，他们宣称会采纳 pkgsrc 作为他们的官方包管理系统。但后来DragonFly BSD又很快地创建了他们自己的 ports，称为 dports，在3,4版本发行并在3.6版本完全更换，dports 是通过git运转的。

OpenBSD 的 ports
相反，FreeBSD Ports 是它最初的基础，OpenBSD 的ports系统的目的是作为来源，以创建最终包：安装 ports 时首先创建一个包，然后进行安装。Ports 包含 Makefile ，带有说明信息的 文本文件，让这个程序在 OpenBSD 运行的补丁以及一个列出本包中的文件的包列表。这个 ports 使用一系列标准的 Makefile，其中一些和源代码树共享，这些共享的基础部分常常包括用于给 ports 开发者的公共的功能，以保证 ports 可以十分简洁。

在2007年10月下旬, OpenBSD 开发者 Nikolay Sturm 宣布稳定版本的 ports 应被看作无人维护的，因为缺乏资源。这强烈地驱使用户运行current版本的  ports/base tree 以保持安全更新。在2009年，stable 版本的 ports tree 在 Robert Nagy 和 Jasper Lievisse Adriaanse 的管理下复用。

此处有两个非官方的网页，上有一 OpenBSD 的 ports 和包列表：
 OpenPorts.se（原网站是 ports.openbsd.nu， 于 2006年）是是一个自定义编写的网站，进行 ports tree 的结构和更新的解析，并具有跟踪变化特定 port 的功能。有一个缺点，就是不支持一些更丰富的 Makefile 逻辑，因此失去了15%的包，因为这些包需要更复杂的 ports tree 结构和官方工具。
 ports.su，在2013年2月发布，基于 sqlports  数据库；[7] 因此，它具有所有可用于AMD64平台的包和习惯。 因为基于官方工具， "虚拟的" （无主）类都是可用的，并包含关于库的讯息，编译 run-time 依赖。 该网站的源码基于 ports-readmes port,并已经在 GitHub 上可用。

参考

参见
Arch编译系统
FreeBSD Ports
Portage
MacPorts

外链
 OpenBSD 的 Porter 手册
 OpenBSD ports
 The OpenBSD ports manpage
 FreeBSD Ports
 pkgsrc: NetBSD 包收集
 编译之后的想法

BSD
自由软件包管理系统