2010/09/16

설치된 Perl CPAN 모듈 목록 뽑아서 다시 설치하기

Perl 버젼이 새로나오면 perlbrew를 이용해서 새로운 버젼의 Perl을 설치할 경우 문제가 되는 것은 기존에 설치한 모듈들을 어떻게 다시 다 설치할 것 인가이다.

모듈을 별도의 디렉토리를 지정해서 설치해서 사용하면 모듈의 Path를 그대로 지정해주면 사용할 수 있겠지만 여기서 문제는 C라이브러리 및 코드와 연동되어 컴파일되어 설치되는 일명 XS모듈들이다. 이런 모듈들은 Perl 버젼에 따라 호환이 되지 않은 경우가 있기 때문에 깔끔하게 다시 설치해주는 것이 좋은데 그러려면 일단 현재 설치된 모듈들의 목록을 뽑아야 한다.

현재 설치된 모듈들의 목록을 얻으려면 ExtUtils::Installed 모듈을 이용하여 다음과 같이 명령을 내린다.

perl -MExtUtils::Installed -le 'print for ExtUtils::Installed->new->modules'

그러면 다음처럼 설치된 모듈들의 목록이 쭉 출력되게 되는데
Algorithm::Diff
Algorithm::Permute
Any::Moose
AnyEvent
AnyEvent::HTTP
App::CPAN::Fresh
App::Cmd
.
.
.


다음과 같이 리다이렉션으로 목록을 텍스트 파일로 저장해 놓고

perl -MExtUtils::Installed -le 'print for ExtUtils::Installed->new->modules' > modules.txt

perlbrew로 새 버젼의 Perl을 설치한 다음

cat modules.txt | xargs cpan -i

명령이나 cpanm 을 사용한다면

cat modules.txt | cpanm -v

명령을 내리면 목록의 모듈들을 모두 다시 설치한다.

댓글 1개: