Ports

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リポジトリにコミットした。ハバードが作成したパッケージインストールスイートであるMakefileは1年前（1993年8月26日）にコミットされた。中核となるPortsフレームワークは、最初の数年間ハバードとSatoshi Asamiにより保守されていたが、後にこの作業を扱うPorts Management Teamが結成された。 NetBSDのpkgsrc Portsコレクションは移植可能であることを重視されており、NetBSD以外のBSD派生、SmartOS（英語版）/illumos、macOS、MINIX 3（英語版）、Linux、またはそれ以外のUnix系など、NetBSDだけではなく多数のオペレーティングシステムで利用可能であるという点を特徴とする。pkgsrcは1997年8月に既存のFreeBSD Portsシステムをベースに作成された。pkgsrcは四半期毎のリリーススケジュールに沿っており、2018年10月時点で22,000を超えるパッケージが含まれている。DragonFly BSDは1.4リリースで、公式パッケージ管理システムにpkgsrcを採用することをアナウンスした。DragonFly BSDはリリース3.4では自前のdportsと呼ばれる固有のPorts実装をビルトするが、3.6でpkgsrcへ完全に切り替えた。DragonFly BSDのPorts開発はGitを通じて行われている。 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ツリーの復活が決定した 。 OpenBSD Portsとパッケージの非公式なWebサイトには、以下のものがある: OpenPorts.se - 2006年に元々ports.openbsd.nuとしてアナウンスされ、Portsのツリー構造と更新の独自解析を行うカスタム作成のWebサイトである。与えられたPortsの変更を追跡する機能があるが、より複雑なMakefileロジックをサポートしていないという欠点がある。このため、Portsツリー構造と公式ツール使用の複雑な知識を必要とするパッケージの約15%は省略されている。 ports.su - 2013年2月に公開され、公式のsqlportsデータベースをベースとしている。このため、amd64プラットフォームで利用可能な全てのパッケージとフレーバーの完全なコレクションを持つ。公式ツールをベースとしているため、"virtual"（根源的ではない）カテゴリはすぐに利用可能であり、ライブラリ、ビルド、およびランタイムの依存関係についての情報がある。Webサイトのソースはports-readmes portに強く依存しており、GitHubですぐ利用可能である。 Android Runtime - インストールで事前コンパイルを行う。 MacPorts Portage - Gentoo Linuxで使用される。Portsシステムにインスパイアされた。 ^ “CVS log for ports/Mk/bsd.port.mk”. FreeBSD project. 2017年11月29日閲覧。 ^ “CVS log for src/usr.sbin/pkg_install/Makefile”. FreeBSD project. 2013年4月14日時点のオリジナルよりアーカイブ。2019年9月12日閲覧。 ^ “Joyent Packages Documentation - Install On macOS”. Joyent. 2018年10月10日閲覧。 ^ “Joyent Packages Documentation - Install On Linux”. Joyent. 2018年10月10日閲覧。 ^ Dillon, Matthew. “PKGSRC will be officially supported as of the next release”. 2008年1月23日閲覧。 ^ “DragonFly 3.4 release planning”. 2017年11月29日閲覧。 ^ “GitHub - DragonFlyBSD/DPorts: The dedicated application build system for DragonFly BSD”. 2017年11月29日閲覧。 ^ Yodlowsky, William. “4.6-stable ports”. 2011年6月12日時点のオリジナルよりアーカイブ。2009年12月29日閲覧。 ^ “ports.openbsd.nu - frontend to ports”. OpenBSD Journal (2006年8月9日). 2017年11月29日閲覧。 ^ Espie, Marc (2013年6月7日). “Re: Why is there no pkg_find(1)?”. 2017年11月29日閲覧。 ^ “Introducing ports.su ? ports-readmes mirror and ports search”. OpenBSD Journal (2013年5月2日). 2017年11月29日閲覧。 OpenBSD Porter's Handbook OpenBSD ports The OpenBSD ports manpage FreeBSD Ports pkgsrc: The NetBSD Packages Collection The ideas behind Compile