Skip to content

Instantly share code, notes, and snippets.

@sng2c
Last active December 16, 2015 17:09
Show Gist options
  • Save sng2c/5468216 to your computer and use it in GitHub Desktop.
Save sng2c/5468216 to your computer and use it in GitHub Desktop.
원격으로 PAR을 실행하는 세가지 방법

원격으로 PAR을 실행하는 세가지 방법

# Test1.pm
package Test1;
hello{
    print "HELLO\n";
}

1. PAR Repository 이용.

http위치나 로컬 위치에 par 리포지토리를 만들고, 찌꺼기 없이 동적으로 로딩하여 사용하는 방법이다.

우선 위 파일을 PAR::Packer로 par 파일로 만든다.

pp -B -p -o test1.par Test1.pm

www 디렉토리로 이동한다. par 리포지토리를 초기화한다.

$ parrepo create -r ./parrepo

그리고 파일이름을 바꿔준다.

$ perl -v

This is perl 5, version 17, subversion 10 (v5.17.10) built for x86_64-linux
....

위에 보이는 5.17.10 과 x86_64_linux 를 복사하여 파일이름을 바꾼다. 0.1 은 버전.

mv test1.par test1-0.1-x86_64_linux-5.17.10.par

그리고 리포지토리에 추가한다.

parrepo inject -r ./parrepo test1-0.1-x86_64_linux-5.17.10.par

이제 사용한다.

#!/usr/bin/perl 
# test.pl
use PAR {repository=>'http://localhost/parrepo'}; 
use Test1;
Test1::hello();

잘된다.

모듈버전, 아키텍처, 펄버전에 따라서 알아서 받으므로 크게 다른 손이 들지 않는다. PAR파일 찌꺼기도 안생기고, /tmp 에 캐시만 생김. par을 만들때 -C 옵션을 주면 캐시도 남기지 않는다.

2. binary로 사용

#!/usr/bin/perl 
# test.pl
use Test1;
Test1::hello();

로 test.pl 을 만들고.

pp -B -o test1 test.pl

해서 나온걸 원격으로 받아서 작동시킨다.

아키텍처별로 따로 만든다.

3. parl 사용

#!/usr/bin/perl 
# test.pl
use Test1;
Test1::hello();

로 test.pl 을 만들고.

pp -B -p -o test.par test.pl

해서 나온걸 www에 놓는다.

parl -Ahttp://localhost/test.par _par/http%3A%2F%2Flocalhost%2Ftest.par

파일경로를 url 인코딩한 파일이 현재 디렉토리의 _par 안에 생기는데, 이걸 실행해준다.

parl -Ahttp://localhost/test.par _par/*test.par

이렇게 * 을 써줘도 되긴한다.

--multiarch 옵션으로 par들을 합치면, 아키텍처별로 알아서 선택해 실행된다.

끝.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment