Ports(もしくはPortsツリーやPortsコレクションとも)は、FreeBSD、NetBSD、OpenBSDなどBSDベースのオペレーティングシステムにおいて、ソフトウェアのインストールやバイナリパッケージ作成を単純化する手段として提供される、Makefileとpatchのセットのことである。Portsでパッケージ生成を処理してから追加のツールでパッケージの削除や更新などを管理するので、通常はPortsがパッケージ管理システムの土台となる。BSD以外にもLinuxディストリビューションが類似の機能を実装しており、GentooのPortage、ArchのArch Build System (ABS)、CRUXのPortsやVoid LinuxのTemplatesなどがそれに当たる。
Portsによるインストール方法の主な利点は、利用可能なハードウェアリソースに応じたソフトウェアインストールの調整と最適化を細かく行えることである。例えば、64ビットバイナリがすぐに利用できないため代わりに最適化されていない32ビットバージョンバイナリを利用している64ビットシステムにおいても、システム管理者は一部ソフトウェアの64ビットインストールを容易に作成できる。
その一方で、主な欠点はパッケージのコンパイルに余計な時間がかかることである。例えば、PortsコレクションによるFreeBSDの完全インストールには、システムのパフォーマンスにもよるが数日かかるだろう。
1994年8月21日、ジョーダン・ハバードは作成したport make macrosをFreeBSD CVSリポジトリにコミットした[1]。ハバードが作成したパッケージインストールスイートであるMakefileは1年前(1993年8月26日)にコミットされた[2]。中核となるPortsフレームワークは、最初の数年間ハバードとSatoshi Asamiにより保守されていたが、後にこの作業を扱うPorts Management Teamが結成された。
NetBSDのpkgsrc Portsコレクションは移植可能であることを重視されており、NetBSD以外のBSD派生、SmartOS/illumos、macOS[3]、MINIX 3、Linux[4]、またはそれ以外のUnix系など、NetBSDだけではなく多数のオペレーティングシステムで利用可能であるという点を特徴とする。pkgsrcは1997年8月に既存のFreeBSD Portsシステムをベースに作成された。pkgsrcは四半期毎のリリーススケジュールに沿っており、2018年10月時点で22,000を超えるパッケージが含まれている。DragonFly BSDは1.4リリースで、公式パッケージ管理システムにpkgsrcを採用することをアナウンスした[5]。DragonFly BSDはリリース3.4では自前のdportsと呼ばれる固有のPorts実装をビルトする[6]が、3.6でpkgsrcへ完全に切り替えた。DragonFly BSDのPorts開発はGitを通じて行われている[7]。
OpenBSD Portsシステムは元々のベースであるFreeBSD Portsとは異なり、最初にPortsをインストールしてパッケージを作成してからそのパッケージをインストールするため、最終的な製品であるパッケージの作成に使用されるソースとなることが目的とされている。PortsはMakefile、説明やインストールメッセージが書かれたテキストファイル、OpenBSDで動作するプログラムを調整するために必要なパッチ、そしてパッケージに含まれるファイルを一覧にしたパッキングリストによって構成されている。Portsのツリーは標準的なMakefileのセットを使用するが、Makefileの中にはその機能の大部分を提供するソースコードのツリーと共有されるものもある。これらのツリーが共有された基盤にはPorts開発者にとって有用な機能が多く含まれているため、Ports作成が簡単に行える場合が多いことを意味している。
2007年10月にOpenBSDの開発者であるNikolay Sturmは、-stable Portsツリーはリソース不足のため保守されていないとみなすべきだとアナウンスした。これにより、ユーザーはセキュリティ更新プログラムに対応するために-current Ports/base treeの適用を事実上強制される。2009年にRobert NagyとJasper Lievisse Adriaanseによる監督の下で、-stable Portsツリーの復活が決定した[8] 。
OpenBSD Portsとパッケージの非公式なWebサイトには、以下のものがある: