스켈러튼의 가장 중요한 요소는 Makefile입니다. 이것은 포트가 어떻게 컴파일되고 설치되어야 하는지를 지정하는 여러가지 문장을 포함합니다. 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.31 1998/10/04 01:14:38 jkh 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>
"#" 표시로 시작하는 행은 사람인 독자에게 유익한 주석문입니다(대부분의 유닉스 스크립트 파일에서 그렇듯이).
`DISTNAME" 은 tarball의 이름을 정하지만, 확장자가 없습니다.
`CATEGORIES" 는 이것이 어떤 종류의 프로그램인지를 가르쳐 줍니다. 이 경우에는 개발자를 위한 유틸리티입니다. 카테고리섹션을 보시면 완전한 목록을 볼 수 있습니다.
`MASTER_SITES" 는 마스터 FTP사이트의 URL(s)입니다. 이것은 지역 시스템에 tarball이 없는 경우 소스를 받기 위해 사용합니다. 이것은 평판이 좋은 것으로 생각되는 사이트이며, 보통 프로그램이 공식적으로 배포되는(소프트웨어가 "공식적으로" 인터넷에서 배포되는 한) 곳입니다
`MAINTAINER" 는 프로그램의 새 버전이 나오는 경우에 스켈레튼을 갱신할 책임이 있는 사람의 전자우편 주소입니다.
그 다음 몇 줄은 잠깐 뛰어넘으면, 다음 행
.include <bsd.port.mk>
은 이 포트에서 필요한 명령과 문장이 `bsd.port.mk"이라는 표준 파일에 있다는 것을 말해줍니다. 이것은 모든 포트에 대해 같으며, 제각각 복제해서 사용할 필요가 없으므로 하나의 표준 파일에 정의합니다.
지금은 아마도 Makefiles가 어떻게 동작하는지에 대한 자세한 설명을 할 자리가 아닙니다. ``MAN3''는 귀중한 디스크 공간을 아끼도록 도와주기 위해 ElectricFence 매뉴얼 패이지가 설치 후 압축되는 것을 확인하는 문장이라는 것 정도로만 합시다. 원본 포트는 ``install'' 타겟을 지원하지 않으므로, ``do-install''부터의 세 줄은 이 포트에서 만들어진 파일들이 올바른 위치에 놓이도록 확실히 해 줍니다.