펄 버전..
글쓴이: lazycoder / 작성시간: 일, 2009/11/29 - 2:20오후
원래 os를 설치했을때 설치된 펄은 5.10 버전이었습니다.
~$ witch perl
-rwxr-xr-x 1 root wheel 86000 6 24 16:42 /usr/bin/perl*
그런데 macports를 사용해서 어떤 프로그램을 설치하던 중에 perl 5.8 버전에 의존하고 있어 같이 설치되었습니다.
witch perl 명령의 결과값은 이제 /opt/local/bin/perl이 되었습니다. (이 경로에 있는 놈이 5.8.9 입니다)
이건 제 PATH 설정에 /opt/local/bin을 맨 앞에 써놓아서 그런거겠죠.
질문은.. 펄은 시스템 관리 스크립트 작성시 많이 쓰이는걸로 아는데요.
혹시 서로 다른 두 버전이 동시에 존재할때 문제가 발생되진 않는지요?
Forums:
전혀 문제가 되지 않습니다.
Perl은 컴파일되서 설치시 실행 바이너리가 어떤 모듈 라이브러리 디렉토리를
읽어야 하는지가 Config.pm 이라는 파일에 기록됩니다.
이것은 바이너리를 full path로 명시하여 Perl 모듈 경로들을 담고 있는 변수인 @INC를 찍어보시면 알 수 있습니다.
/usr/bin/perl -e 'print "@INC\n"'
/opt/local/bin/perl -e 'print "@INC\n"'
해보시면 서로 다른 @INC 경로들이 보일겁니다.
시스템에 여러 Perl 버젼이 설치되어 있을때 어떤 Perl 바이너리를 사용할 것이냐는
스크립트 첫줄의 Shebang line을 통해서 다음과 같이
사용 바이너리를 명시적으로 지정하거나
/usr/bin/perl을 사용하고자 하는 바이너리로 심볼릭 링크로 걸고 일반적인
일반적인 형태로 사용할 수 있으나. 가장 추천되고 깔끔한 방법은
사용하고자 하는 Perl 바이너리의 경로가 PATH환경변수에서 먼저 나오도록 세팅한다음
이란 shebang line을 사용하는 것입니다. 이렇게 하면 env명령이 알아서 먼저 실행되는
Perl의 환경을 알아서 로딩하여 실행하게 됩니다. 시스템 경로등을 건드리거나 할 필요
없이 PATH환경 변수의 조정만으로 유연하게 적용할 수 있기 때문이죠
Perl이 시스템 관리에도 많이 사용되는 이유가 하위 호환성을 아주 잘 지키고 많은 운영체제에
가장 널리 포팅되어 있고 안정적이기 때문입니다. CPAN의 수많은 모듈들은 보너스구요.
수많은 서버가 있는 환경에서는 모든 시스템의 버젼을 통일하기가 아주 힘들때가 많습니다.
언어가 버젼이 올라감에 따라 이전의 문법이 deprecate되고 하위 호환성을 유지해주지 않는다면
관리를 위해 만들어 놓은 스크립트의 동작을 보장해주기가 힘들죠.
상세한 답변에
상세한 답변에 감사드립니다. python은 python_select란 놈이 있어 요런 걱정을 덜어줬는데
펄은 하위 호환성을 잘 지켜준다는 말씀에 안심하고 쓰겠습니다. ㅎㅎ;
이건 그냥 궁금해서.. 5.8과 5.10 버전간의 무슨 차이가 있나해서 찾아봤는데 64비트 지원여부가 큰 차인듯 하네요.
댓글 달기