OpenDarwin 프로젝트에서 진행 중인 포트 스타일의 패키징 시스템인 DarwinPorts 을 드디어 좀 해봤습니다. 음훗훗. DarwinPorts 개발자 중 상당수가 FreeBSD 쪽에서 건너가거나 겸하고 있는 사람들이다보니, 상당수의 포트들이 FreeBSD도 지원하고 있었습니다. 체크아웃 한 dports 트리를 보면
sbtm(perky):/usr/dports% grep -r '^platform.*darwin' .|wc -l
482
sbtm(perky):/usr/dports% grep -r '^platform.*freebsd' .|wc -l
99
현재, DarwinPorts에는 darwin을 지원하는 포트가 482개, freebsd를 지원하는 포트가 99개가 있습니다.
뭐 그런대로 주요 유틸리티 포트들은 FreeBSD도 지원하고 있어서 쓸만합니다. (python포트가 freebsd를 지원하지 않는 것은 좀 =3 =33)
DarwinPorts는 port라는 tcl로 작성된 별도의 툴을 이용해서 설치하는데, 요것 make 보다는 아무래도 포트에 특화된 것이라 속도도 그런대로 쓸만하고 좋은 듯합니다. textproc/cowsay 포트를 설치하면 요렇게 됩니다.
sbtm(perky):/usr/dports/textproc/cowsay% sudo port
---> Fetching cowsay
---> Attempting to fetch cowsay-3.03.tar.gz from ftp://tony/cowsay/
---> Verifying checksum for cowsay
---> Extracting cowsay
---> Configuring cowsay
---> Building cowsay with target all
sbtm(perky):/usr/dports/textproc/cowsay% sudo port install
---> Staging cowsay into destroot
---> Installing cowsay
sbtm(perky):/usr/dports/textproc/cowsay% /opt/local/bin/cowsay \
"Hello, DarwinPorts"
____________________
< Hello, DarwinPorts >
--------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
sbtm(perky):/usr/dports/textproc/cowsay% sudo port uninstall
---> Uninstalling cowsay-3.03
요건 darwin이 아니라, freebsd에서 설치해본 것인데, 사용자 편의를 위해서인지 기본으로는 컴파일 중 메시지를 전부 숨겨서 빌드가 오래 걸리는 툴들은 상당히 지루합니다. (뭐라도 화면에 나와야 -ㅁ-;; 한 줄에 . 한 개씩이라도 찍던가;;) 단, -v 옵션을 주면 FreeBSD나 NetBSD 처럼 안 감추고 보여줍니다.
그런데, DarwinPorts에서 가장 주목할 것은 바로 variants 시스템인데, OpenBSD에서 처음 시작되어 Gentoo에도 전해진 FLAVOR와 비슷한 역할을 하는데, 빌드시에 여러가지 옵션을 FreeBSD 처럼 난잡하게 포트 파일을 안 보고도 시스템에서 받쳐주는 것들을 on/off할 수 있게 되어, 자동으로 바이너리 패키지 빌드에서도 적용될 수 있도록 한 것인데, 정말 멋있습니다.
예를 들면, lang/python 포트의 Portfile은 요렇게 되어있습니다.
# $Id: Portfile,v 1.9 2003/08/05 21:02:22 jkh Exp $
PortSystem 1.0
name python
version 2.2.2
categories lang
maintainers pat@ekman.cx
description An interpreted, object-oriented programming language
platforms darwin
master_sites ftp://ftp.python.org/pub/python/${version}/
distname Python-${version}
extract.sufx .tgz
checksums md5 1c1067396e5aa0299978486eb5bd1a5c
patchfiles patch-unixccompiler.py
destroot.destdir prefix=${destroot}${prefix}
variant nothreads {
configure.args-append --without-threads
}
variant puredarwin {
configure.args-append --disable-toolbox-glue
}
요렇게 해놓으면, 설치할 때 port install +nothreads나, port install +puredarwin -threads 요런 명령으로 조절을 할 수 있고, GUI 툴로도 선택을 할 수있게 버튼이 나온답니다. 으흐흐흐 멋있군요~~