2010-08-05 1 views
1

포트 (FreeBSD)에서 Apache 2.2를 구성하려고합니다. 내가 원하는 컴파일 옵션으로 내 자신의 makefile을 작성했고, 내가 말할 수있는 한 모든 것이 체크 아웃 된 것으로 보인다. 즉 : 내가 PERL5USE_PERL5를 제외하고 무엇을 기대FreeBSD의 아파치 포트에서 make의 환경 변수를 오버라이드 할 수없는 이유는 무엇입니까?

make -V <env_var> __MAKE_CONF=~/mk/make.apache22.conf 

돌아갑니다. 내가 make.apache22.conf 두 변수를 설정뿐만 아니라 모든 조합에서 환경 설정을 시도했다가 :

export PERL5=/usr/local/bin/perl 
export USE_PERL5=5.12+ 

아직

make -e -V USE_PERL5 -V PERL5 

반환

yes 
/usr/local/bin/perl5.10.1 

(나는 또한했습니다 -E으로 덮어 씌여 보았습니다.) 다른 하나는 Perl 5.12.1 만 설치 되었기 때문에 Perl 포트 및/또는에서 버전이 명확하게 제공됩니다.,하지만 내가 groake하는 방식은 bsd.perl.mk이고 make 유틸리티 자체는 왜 내 방법이 작동하지 않는지 이해가 가지 않습니다.

무엇이 누락 되었습니까?

답변

1

간단히 말해서, 대답은 포트 시스템 내에 있습니다. /usr/ports/Mk/bsd.port.mk에서 : 포트에서 설치할 때 보통

Note: the distinction between the USE_* and WANT_* variables, and the 
WITH_* and WITHOUT_* variables, are that the former are restricted to 
usage inside the ports framework, and the latter are reserved for user- 
settable options. (Setting USE_* in /etc/make.conf is always wrong). 

,의 Makefile는 어떤 점에서 가져온다 파일의 체인 포함 재귀됩니다

/usr/ports/Mk/bsd.perl.mk 

을이 파일은 모든 USE_PERL*PERL* 평가 변수는 포트의 Makefile을 정의했습니다. 특히 bsd.perl.mk은 필요한 Perl 버전을 하드 코드하고 시스템에 아직없는 경우 Perl 포트를 설치합니다.

포트 시스템은 매우 멋지지만 기존의 소프트웨어를 사용하여 포트를 구성 및/또는 실행할 수있는 직접적인 방법이없는 것처럼 느껴집니다.

UPDATE 2010년 8월 8일는 : 결론은 당신이 사용하는 포트 또는 당신이 할 하나

입니다

. 그렇지 않으면 수동으로 모든 것을 직접 구성하고 추적해야하지만 가장 최신의 (잘하면) 최상의 결과를 얻을 수 있습니다. 포트 시스템은 양호합니다. 특히 각 포트를 필요에 따라 구성 할 수 있으므로 쉽게 업그레이드하고 패키지 관리 할 수 ​​있다는 장점이 있습니다. (예를 들어 감옥에 설치하기 위해 맞춤 컴파일 된 패키지를 만들 때 - 특히 ezjail과 같은 도구를 사용합니다.) 단점은 포트가 최신 버전으로 업데이트되기 전에 잠시 기다려야 할 때가 있습니다. 이것은 일반적인 소프트웨어에 큰 문제가 아니지만 좀 더 애매한 항목을 기다리는 동안 잠시 기다려야 할 수도 있습니다.

궁극적으로 해결책은 Perl 5.12 포트를 설치하고 거기에서 이동하는 것입니다.