인터넷에서 프로그램은 보통 Makefile과 소스 코드, 작동 설명서(불행히도 항상 유익한 - 설명서가 갖추어야 할 - 것은 아니지만), 설정 스크립트(아마도)로 이루어진 tarball로 배포됩니다.
표준 시나리오는 tarball을 FTP로 다운받아서 어딘가에 풀어놓고, 설명을 훑어본 다음, 필요한 만큼 고치고, 설정 스크립트를 실행하고, 소스에서 프로그램을 컴파일하고 설치해 주는 표준 'make'프로그램을 사용하는 것입니다.
FreeBSD 포트는 여전히 tarball 메카니즘을 사용하지만, 사용자가 직접 하기를 기대하기 보다는 스켈러튼을 사용하여 프로그램을 FreeBSD에서 동작하게 하는 방법에 대한 "지식"을 얻습니다. 또한 자신만의 맞춤 Makefile을 제공하여 거의 모든 포트를 같은 방법으로 만들 수 있습니다.
포트 스켈러튼을 보고(여러분의 FreeBSD 시스템 이나 FTP 사이트에서) 거기 숨어있을 무언가 대단한 방법을 기대한다면 그 안에 있는 한두가지의 재미없어 보이는 파일과 디렉토리에 실망할지도 모릅니다(조금 있다가 포트를 얻는 방법에 대해 이야기할 것입니다).
여러분이 외치는 소리를 듣습니다. ``이게 뭘 할 수 있다는 거야?'' ``소스코드도 없잖아!''
두려워하지 마세요, 여러분. 모든 것이 밝혀질 것입니다(아마). 포트를 설치하려 하면 어떻게 되는지 봅시다. 스켈러튼이 다른 것 보다 가장 간단한 `ElectricFence'를 선택하겠습니다.
주의 집에서 하고 있다면, 루트가 되어야 합니다.
# cd /usr/ports/devel/ElectricFence
# make install
>> Checksum OK for ElectricFence-2.0.5.tar.gz.
===> Extracting for ElectricFence-2.0.5
===> Patching for ElectricFence-2.0.5
===> Applying FreeBSD patches for ElectricFence-2.0.5
===> Configuring for ElectricFence-2.0.5
===> Building for ElectricFence-2.0.5
[컴파일러 출력이 많이 지나갑니다...]
===> Installing for ElectricFence-2.0.5
===> Warning: your umask is "0002".
If this is not desired, set it to an appropriate value
and install this port again by ``make reinstall''.
install -c -o bin -g bin -m 444 /usr/ports/devel/ElectricFence/work/ElectricFence-2.0.5/libefence.a /usr/local/lib
install -c -o bin -g bin -m 444 /usr/ports/devel/ElectricFence/work/ElectricFence-2.0.5/libefence.3 /usr/local/man/man3
===> Compressing manual pages for ElectricFence-2.0.5
===> Registering installation for ElectricFence-2.0.5
주제에 집중하기 위해 컴파일 출력은 모두 삭제하였습니다.
직접 해 본다면, 처음에는 다음과 같은 것을 볼 수 있을 것입니다 :-
# make install >> ElectricFence-2.0.5.tar.gz doesn't seem to exist on this system. >> Attempting to fetch from ftp://ftp.doc.ic.ac.uk/Mirrors/sunsite.unc.edu/pub/Linux/devel/lang/c/.
`make' 프로그램은 소스코드의 지역 복사본이 없다는 것을 알려 주고 작업을 완료하기 위해 FTP로 소스를 다운받으려 합니다. 예제에서 저는 이미 소스를 갖고 있었으므로 가져올 필요는 없었습니다.
하나하나 짚어가며 `make' 프로그램이 무얼 하는지 봅시다.
make의 출력을 짚어가며 각 단계를 따라갈 수 있는지 보세요. 그리고 아직까지 감동받지 않았다면, 지금이 바로 그 때입니다!