スケルトン (訳注: skeleton とは骸骨のことです) とは, 締め切りを守るため, 食事をするのを忘れるほど仕事にのめり込んだ ハッカーたちのなれの果ての ことでしょうか? FreeBSD の屋根裏に潜む, なにか気持ちの悪いものでしょうか? いいえ, ここでスケルトンの意味するところは, ports の魔術を実現するのに 必要とされるすべてのものを提供する最小の骨組みのことです.
スケルトンのもっとも重要な要素は 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$ # 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 によって生成されたファイルを 正しい場所に置くために使用されます.
ports のチェックサム算出には MD5 アルゴリズムを使用しているので, この チェックサム を含んでいる ファイルは md5 と呼ばれます. ちょっと混乱するかもしれませんが, このファイルは files という 名前のディレクトリに置かれています.
このディレクトリは, ports に必要だけれども, 他のどこにも属さない 雑多なファイルも含んでいます.
このディレクトリには, FreeBSD ですべてを正常に動作させるのに 必要な パッチ が含まれています.
このディレクトリには, 非常に役立つ三つのファイルが含まれています:-
COMMENT --- プログラムについての 1 行の説明.
DESCR --- より詳細な説明.
PLIST --- プログラムのインストール時に作成される, すべてのファイルのリスト.