FreeBSD 핸드북 : 어플리케이션 설치하기: 포트 콜렉션 : 직접 포트 만들기 : pkg 부디렉토리
Previous: 특별히 생각해야 할 것들
Next: 라이센스 문제

4.7.5. pkg 부디렉토리

때때로 pkg 부디렉토리에서 편리하게 사용할 수 있는 몇가지 트릭에 대해 아직 말하지 않은 것들이 있습니다.

4.7.5.1. MESSAGE

설치 프로그램이 메시지를 표시하도록 하고 싶다면, 메시지를 pkg/MESSAGE에 넣으세요. 이 기능은 pkg_add 뒤에 필요한 부가적인 설치 과정을 표시하거나 라이센스 정보를 표시하는데 종종 유용합니다. MESSAGE파일을 pkg/PLIST에 추가할 필요는 없다는 점에 주의하세요. 또한 사용자가 패키지가 아니라 포트를 사용하다면 자동적으로 표시되지 않으므로 post-install 타겟에서 표시하도록 해 주어야 할 것입니다.

4.7.5.2. INSTALL

포트가 바이너리를 pkg_add로 설치할 때 어떤 명령을 실행해야 한다면 pkg/INSTALL 스크립트로 그렇게 할 수 있습니다. 이 스크립트는 자동적으로 패키지에 추가되며, pkg_add에 의해 두번 실행됩니다. 한번은 `INSTALL ${PKGNAME} PRE-INSTALL' 이고 두번째는 `INSTALL ${PKGNAME} POST-INSTALL' 입니다. `$2'는 이 스크립트가 어떤 모드로 실행되는지 결정하는 것을 시험하는 데 사용할 수 있습니다.

`PKG_PREFIX' 환경변수는 패키지 설치 디렉토리로 지정됩니다. pkg_add(1) 매뉴얼 페이지에서 더 많은 정보를 찾아보세요.

이 스크립트는 `make install'로 포트를 설치할 땡는 자동적으로 실행되지 않는다는 사실에 주의하세요. 실행해야 한다면, 포트의 Makefile에서 명시적으로 부르도록 해야 할 것입니다.

4.7.5.3. REQ

포트가 설치되어야 하는지 말아야 하는지 결정할 필요가 있다면, pkg/REQ ``필요 사항'' 스크립트를 만들 수 있습니다. 이것은 설치/삭제 과정이 진행될지를 설치/삭제 과정에서 자동적으로 결정하기 위해 실행될 것입니다.

4.7.5.4. PLIST 를 make 변수에 따라 다르게 하기

p5- 포트와 같은 어떤 포트는 PLIST를 설정한 옵션 (또는 p5- 포트의 경우 perl의 버전) 에 따라 바꾸어야 할 필요가 있습니다. 이 작업을 편하게 하기 위해, PLIST에 나타나는 %%OSREL%%, %%PERL_VER%%, %%PERL_VERSION%%는 적절하게 치환될 것입니다. %%OSREL%%의 값은 운영체제의 버전 번호입니다(예: `2.2.7'). %%PERL_VERSION%%은 perl의 버전 번호이며(예: `5.00502'), %%PERL_VER%%는 패치수준을 뺀 perl 버전 번호입니다(예: `5.005').

다른 치환을 하고 싶다면, PLIST_SUB 변수를 VAR=VALUE 쌍의 목록으로 지정해 두면 `%%VAR%%'가 모두 PLIST에서 `VALUE'로 바뀔 것입니다. 예를 들면, 버전에 따라 달라지는 부디렉토리에서 많은 파일을 설치하는 포트라면 Makefile에 다음과 같이 지정할 수 있습니다.

OCTAVE_VERSION=	2.0.13
PLIST_SUB=	OCTAVE_VERSION=${OCTAVE_VERSION}

PLIST에 나타나는 버전 번호는 %%OCTAVE_VERSION%%를 사용하세요. 이 방법은 포트를 업그레이드할 때 PLIST에서 수십행을(어떤 경우에는 수백의) 바꾸지 않아도 되게 합니다.

실제 치환( 매뉴얼 페이지의 경우도 포함하여)은 do-install과 post-install 타겟 사이에서 ${PLIST}를 읽어들여서 ${TMPPLIST} 에 쓰는 것으로 이루어집니다(기본값: ${WRKDIR}/.PLIST.mktmp). 따라서 포트가 ${PLIST}를 직접 만들어낸다면, do-install이나 그 이전에서 만드세요. 또한 포트가 결과로 나온 파일을 편집하고 싶다면, post-install에서 ${TMPPLIST} 라는 파일을 편집하면 됩니다.


FreeBSD 핸드북 : 어플리케이션 설치하기: 포트 콜렉션 : 직접 포트 만들기 : pkg 부디렉토리
Previous: 특별히 생각해야 할 것들
Next: 라이센스 문제