Portsとは、FreeBSD、NetBSD、OpenBSDといったBSD系
オペレーティングシステムにおいて、
ソフトウェアの
インストールや
バイナリパッケージの作成を効率化するために利用される、Makefileと
パッチの集合体です。Portsは、
ソフトウェアのコンパイルから
インストールまでを自動化し、利用可能なハードウェアリソースに合わせて最適化された
ソフトウェア環境を構築することを可能にします。通常、Portsはパッケージ管理システムの基礎として機能し、パッケージの追加、削除、更新などの管理を支援します。
BSD系OS以外にも、
LinuxディストリビューションであるGentooの
Portage、
Arch [[Linux]]のArch Build System (ABS)、CRUXのPorts、Void
LinuxのTemplatesなど、同様のコンセプトを持つシステムが存在します。
Portsの利点と欠点
Portsの主な利点として、利用可能なハードウェアリソースに応じた
ソフトウェアインストールの柔軟な調整と最適化が挙げられます。例えば、64ビット環境で最適化されていない
32ビット版
バイナリを使用している場合でも、Portsを利用することで64ビット版の
ソフトウェアを容易にコンパイルし
インストールすることが可能です。これにより、システム管理者は特定の環境に合わせて
ソフトウェアをカスタマイズし、最適なパフォーマンスを得ることができます。
一方で、Portsの欠点として、パッケージのコンパイルに時間がかかることが挙げられます。特に、Portsコレクション全体を
インストールする場合、システムの性能によっては数日を要することもあります。
FreeBSD Ports
FreeBSD Portsは、1994年8月21日にジョーダン・ハバード氏によってFreeBSD CVS
リポジトリにコミットされた、port make macrosが起源です。ハバード氏が作成したパッケージ
インストールスイートであるMakefileは、その1年前の1993年8月26日にコミットされました。初期のPortsフレームワークは、ハバード氏とSatoshi Asami氏によって保守されていましたが、後にPorts Management Teamが結成され、管理を引き継ぎました。
NetBSDのpkgsrc
NetBSDのpkgsrcは、移植性を重視して設計されたPortsコレクションです。NetBSDだけでなく、他のBSD派生OS、SmartOS/illumos、macOS、MINIX 3、
Linuxなど、多くの
オペレーティングシステムで利用できるのが特徴です。pkgsrcは、1997年8月に既存のFreeBSD Portsシステムを基に作成されました。四半期ごとのリリーススケジュールで提供されており、2018年10月時点では22,000を超えるパッケージが含まれています。DragonFly BSDは、当初pkgsrcを公式パッケージ管理システムとして採用していましたが、後に独自のdportsを開発しました。しかし、その後pkgsrcへと完全に移行しました。DragonFly BSDのPorts開発はGitを通じて行われています。
OpenBSD Ports
OpenBSD Portsシステムは、FreeBSD Portsとは異なり、最初にPortsを
インストールしてパッケージを作成し、その後パッケージを
インストールするという手順を踏みます。このため、パッケージの作成に使用するソースとなることを目的としています。Portsは、Makefile、説明や
インストールメッセージが記載された
テキストファイル、OpenBSDで動作するプログラムを調整するための
パッチ、そしてパッケージに含まれるファイルをリスト化したパッキングリストで構成されています。Portsツリーは、標準的なMakefileのセットを使用していますが、その機能の大部分は
ソースコードのツリーと共有されています。これらの共有基盤には、Ports開発者にとって有用な機能が多数含まれており、Portsの作成が比較的容易になるというメリットがあります。
2007年10月、OpenBSDの開発者であるNikolay Sturm氏は、-stable Portsツリーはリソース不足のためメンテナンスされていないと発表しました。これにより、セキュリティアップデートのためには-current Ports/base treeを使用することが推奨されました。2009年には、Robert Nagy氏とJasper Lievisse Adriaanse氏の監督の下で、-stable Portsツリーの復活が決定しました。
OpenBSD Ports関連ウェブサイト
OpenBSD Portsとパッケージに関する非公式ウェブサイトがいくつか存在します。
OpenPorts.se: 2006年にports.openbsd.nuとして発表された、Portsツリー構造とアップデートを独自に解析するカスタムウェブサイトです。Portsの変更を追跡する機能がありますが、複雑なMakefileロジックをサポートしていないため、Portsツリー構造と公式ツールに関する深い知識を必要とするパッケージの約15%は省略されています。
ports.su: 2013年2月に公開された、公式sqlportsデータベースを基にしたウェブサイトです。amd64プラットフォームで利用可能なすべてのパッケージとフレーバーの完全なコレクションを提供しています。公式ツールに基づいているため、仮想カテゴリも利用可能であり、ライブラリ、ビルド、ランタイムの依存関係に関する情報も確認できます。このウェブサイトの
ソースコードはports-readmes portに依存しており、
GitHubで入手できます。
関連項目
Android Runtime - インストール時に事前コンパイルを行います。
MacPorts
Portage - Gentoo Linuxで利用されるPortsシステムに影響を受けたシステムです。
外部リンク
OpenBSD Porter's Handbook
OpenBSD ports
The OpenBSD ports manpage
FreeBSD Ports
pkgsrc: The NetBSD Packages Collection
*
The ideas behind Compile