OpenDarwin 프로젝트에서 진행 중인 포트 스타일의 패키징 시스템인 DarwinPorts 을 드디어 좀 해봤습니다. 음훗훗. DarwinPorts 개발자 중 상당수가 FreeBSD 쪽에서 건너가거나 겸하고 있는 사람들이다보니, 상당수의 포트들이 FreeBSD도 지원하고 있었습니다. 체크아웃 한 dports 트리를 보면
1 2 3 4 |
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 포트를 설치하면 요렇게 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
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은 요렇게 되어있습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# $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 툴로도 선택을 할 수있게 버튼이 나온답니다. 으흐흐흐 멋있군요~~