2013/03/13

perlbrew 의 새로운 기능

Perl을 root권한 없이 로컬계정에 설치 및 여러 버젼을 번갈아가면서 쓸 수 있게 해주는 perlbrew 에 upgrade-perl 이라는 새로운 기능이 추가됐다.

perl은 5.16.2 처럼 3단계 버젼번호체계를 가지는데 중간버젼간(예를 들면 5.16.2, 5.16.3)에는 모듈의 바이너리 호환성이 보장되기 때문에 C코드등이 포함되어 네이티브하게 컴파일되는 XS모듈 같은 경우 재설치하지 않아도 그대로 사용 가능 하다. 하지만 맨 마지막 점 아래의 마이너 버젼이 바뀌었을때 perlbrew로 새로 마이너 버젼 업그레이드된 perl을 설치하면 예전 쓰던 모듈을 쓰기 위해서는 이전에 깔았던 모듈목록을 뽑아서 다 다시 설치해주는 번거로움이 있었다.

upgrade-perl을 쓰면 다음과 같이 가능하다.

<perl-5.16.3 버젼을 perl-5.16으로 설치한다. 본인의 경우 verbose -v옵션 스레드사용 -D=usethreads 추가>
$ perlbrew -v install perl-5.16.3 --as perl-5.16 -D=usethreads

(위에서 mod_perl이나 pgsql perl플러그인등 기타 어플리케이션에서 동적Perl라이브러를 연동시키려면 -Duseshrplib 을 추가하고 Dtrace를 사용하려면 -D=usedtrace 추가한다. 그 이외의 옵션은 사용자가 굳이 지정하지 않아도 가장 최적의 옵션을 자동으로 선택하므로 굳이 신경쓸 필요가 없다.)

<버젼을 스위치 한다.>
$ perlbrew switch perl-5.16


<설치된 perl목록보기>
$ perlbrew list
* perl-5.16 (5.16.3)
^-괄호안에 5.16 이름으로 실제 설치된 버젼명이 표시된다.

나중에 5.16.4 버젼이 나왔다고 하면

$ perlbrew upgrade-perl

이라고 하면 위의 경우에는 현재 사용하는 Perl의 바이너리 호환이 되는 버젼(5.16.x)의 최신 버젼이 설치되며 기존에 설치해놓았던 모듈을 그대로 사용가능하다.

더 자세한 내용은 아래링크 참고

https://metacpan.org/module/GUGOD/App-perlbrew-0.59/bin/perlbrew#COMMAND:-UPGRADE-PERL

http://jptrans.naver.net/j2k_frame.php/korean/blog.64p.org/entry/2013/03/13/150202

http://www.modernperlbooks.com/mt/2013/03/upgrade-in-place-with-perlbrew.html

댓글 1개:

  1. perlbrew upgrade-perl 은 문제가 좀 있다. 예전 인스톨할때 지정한 컴파일 옵션(-D=usethreads)가 안먹는다. 문제점을 오래전 perlbrew 제작자에게 메일로 리포팅했을때 고치겠다고 답변을 들었는데 2014년 1월 10일 현재 아직도 고쳐지지 않았나 보다.
    참고: https://github.com/gugod/App-perlbrew/issues/294

    원래 의도된 perlbrew upgrade-perl 과 같은 효과를 내려면
    perlbrew -v install perl-5.18.1 --as perl-5.18 -D=usethreads
    로 인스톨을 했다면
    perlbrew -v install perl-5.18.2 --as perl-5.18 -D=usethreads --force
    로 강제로 인스톨해서 덮어쓰면 된다.(기존 모듈도 그대로 유지되어 사용가능)

    답글삭제