スケルトンのもっとも重要な要素は Makefile です. Makefile は ports を どのようにコンパイルし, インストールをおこなうかを指示する いろいろな命令を含んでいます. 以下に ElectricFence の Makefile を示します:-
# New ports collection makefile for: Electric Fence # Version required: 2.0.5 # Date created: 13 November 1997 # Whom: jraynard # # $Id: ports.sgml,v 1.18 1998/11/22 15:05:41 motoyuki Exp $ # DISTNAME= ElectricFence-2.0.5 CATEGORIES= devel MASTER_SITES= ${MASTER_SITE_SUNSITE} MASTER_SITE_SUBDIR= devel/lang/c MAINTAINER= jraynard@freebsd.org MAN3= libefence.3 do-install: ${INSTALL_DATA} ${WRKSRC}/libefence.a ${PREFIX}/lib ${INSTALL_MAN} ${WRKSRC}/libefence.3 ${PREFIX}/man/man3 .include <bsd.port.mk>
"#" で始まる行は, 人間のためのコメント行です. (ほとんどの Unix のスクリプトと同じですね.)
`DISTNAME" は tarball の名前から拡張子を取ったものです.
`CATEGORIES" はこのプログラムの種類を示します. この場合, 開発者向けのユーティリティということになります. 完全なリストはこのハンドブックの カテゴリ をみてください.
`MASTER_SITES" はマスタ FTP サイトの URL です. もしローカルシステムに tarball がない場合には, ここから取得します. これは信頼できると考えられているサイトで, 通常はそのプログラムを インターネット上で公式に配布しているサイトです. (そのソフトウェアがインターネット上で「公式に」配布されているとしたら)
`MAINTAINER" は, 例えば新しいバージョンのプログラムが出た場合に, 必要であればスケルトンの更新をおこなう保守担当者の電子メールアドレスです.
次の数行はとりあえず飛ばします.
.include <bsd.port.mk>この行は, この ports に必要なその他の命令やコマンドは `bsd.port.mk" に 入っているということを示しています. これらはすべての ports で共通のものなので, それぞれの Makefile に書いておく必要はありません. そのため単一の標準ファイルに まとめられているのです.
ここでは Makefile がどう働くかを詳細に調査するのが目的ではありませんので, ``MAN3'' で始まる行は, インストールの後に ElectricFence のマニュアルを 圧縮するために使用される, と言っておくだけで充分でしょう. これにより, 貴重なディスクスペースが保護されているわけです. オリジナルの port では ``install'' ターゲットが用意されていないので, ``do-install'' からの 3 行が この ports によって生成されたファイルを 正しい場所に置くために使用されます.