-
- 1. 개요
-
- 2. 모듈 설치 개괄
-
- 3. Linux, Unix 환경에서 root 권한으로 cpan 사용하기
-
- 4. Linux, Unix 환경에서 root 권한이 없다면
-
-
- 4.1. 예: 주인장의 경우
-
5. MS윈도우 환경에서 Strawberry Perl이나 Activestate Perl을 사용하고 있다면
-
-
- 5.1. Strawberry Perl 에서 cpan 을 사용할 때 압축해제 오류가 나는 경우
-
6. cpan을 사용할 수 없는 상황이라면
-
-
- 6.1. 모듈 가져오기
-
- 6.2. 서버 시스템에 모듈 설치하기
-
- 6.3. 개인 계정 아래에 모듈 설치하기
-
- 6.4. pm 파일만 가져다 놓기
-
- 6.5. 실행 스크립트와 같은 디렉토리에 모듈을 두기
-
7. PPM 파일을 받아서 설치하기
-
- 8. 관련 링크
-
- 9. Comments
-
원래 이 페이지는 다음과 같은 배경에서 만들어졌다.
그런데 이 페이지의 내용을 작성한 후에 시간이 많이 흘렀고, 내용도 너무 구닥다리 방식에 관한 얘기만 적혀 있어서... 생각난 김에 내용을 갱신한다.
2. 모듈 설치 개괄
- Linux, Unix 환경에서 root 권한이 있다면
- Linux, Unix 환경에서 root 권한이 없다면
- MS윈도우 환경에서 Strawberry Perl이나 Activestate Perl을 사용하고 있다면
- 역시 cpan을 사용한다. -_-a;;;;
- Activestate Perl의 경우는
ppm
이라는 별도의 패키지 매니저도 제공한다. 오히려 cpan은 없던가? 기억이 나지 않는다.
- 도저히 cpan을 사용할 수 없는 상황이라면,
- 모듈 소스를 직접 다운받아서 make를 사용하여 설치한다 - 그러나 이 작업을 할 수 있는 상황이라면 cpan도 사용할 수 있을 것이다.
- 모듈 소스에서 .pm 파일을 복사해서 쓴다 - 순수하게 Perl로만 작성된 모듈의 경우만 가능할 듯.
3. Linux, Unix 환경에서 root 권한으로 cpan 사용하기
쉘에서 cpan
이라고 실행하거나, 펄5.6이하에서는 perl -MCPAN -eshell
이라고 하여 cpan 쉘을 띄울 수 있다.
제일 처음 실행할 때 여러 가지 옵션들의 값을 어떻게 지정할 지 묻는다. 아는 건 답해주고 모르는 건 그냥 Enter를 눌러서 기본값을 사용한다.
-
urllist
옵션은 펄 모듈이 배포되고 있는 사이트의 주소를 적어주면 되는데, 주인장은 ftp://ftp.daum.net/CPAN/
를 사용하고 있음
모듈을 설치하기 위해서는 install 모듈명
해주면 된다. 그 외 사용법은 help
명령을 내려서 간단하게 볼 수 있고, 자세한 것은 cpan 도움말이나 FAQ[1]를 참조
4. Linux, Unix 환경에서 root 권한이 없다면
요즘은 /Perlbrew를 쓰는 것이 대세인 것 같다. perlbrew 를 사용하면 Perl 인터프리터와 기본 모듈을 포함한 모든 환경을 자신의 홈 계정에 설치하고, 심지어 여러 버전의 펄을 동시에 설치한 후 필요에 따라 바꿔가며 쓸 수 있다. 당연히 추가 모듈 설치도 자유롭게 자신의 홈 디렉토리에서 이뤄진다. 이 방법을 추천.
이 절의 이하의 내용은 perlbrew를 사용하지 않을 때 얘기임.
개인 계정에서도 cpan을 사용할 수 있다. 다만 펄 모듈이 설치되는 곳이 시스템 디렉토리가 아니라 자신의 홈 디렉토리 아래이므로, 펄 스크립트가 실행될 때 그 모듈을 찾을 수 있도록 쉘 환경 변수를 지정해주거나 스크립트 내에 모듈 경로를 지정해야 한다.
이와 관련해서는 다음 문서를 참고할 것:
- local::lib 모듈로 CPAN 모듈을 일반계정에 설치하기 - aero's Blog[2]
- local::lib 모듈을 사용하면, 환경 변수 설정 등을 일괄적으로 처리해 준다고 한다.
- Perl/모듈
다음 문서들의 내용 중 일부는 위에 언급한 local::lib를 쓸 경우 의미가 없어질 듯 하지만, 여전히 참조할 만 하다:
- 웹호스팅에서 CPAN모듈 설치하기[3]
- 일반 계정에서 cpan을 사용하는 기본적인 예를 보여주고 있다. 이 문서에서는
PREFIX
를 지정해서 모듈이 설치될 장소를 지정해주고 있다.
- Perl Module 수동 설치 - aero님의 노트[4]
- aero님의 문서에서 모듈 설치와 관련된 여러가지 환경 변수들의 의미를 얘기하고 있고, cpan 옵션 설정법도 다루고 있다.
- PREFIX보다는
INSTALL_BASE
를 지정하는 것이 낫다고 한다.
4.1. 예: 주인장의 경우
이 GyparkWiki를 돌아가는 서버에서 주인장의 계정 디렉토리는 /home/gypark/
이고, 일반적인 소스 패키지를 가져와서 설치할 때는 ./configure --prefix=~/local
로 지정하여 /home/gypark/local/
아래에 설치하는 편이다.
펄 모듈을 설치하는 경우에는 다음과 같이 한다. 시간 순으로 정리해 보면:
1) PREFIX를 지정하던 시기
처음에는 cpan 설정을 PREFIX를 사용했었다. [3]의 설명과 유사하다.
# cpan 옵션 중 makepl_arg 지정
makepl_arg => PREFIX=~/local/perl
모듈은 ~/local/perl/lib/perl5/site_perl/5.8.8/ 또는 ~/local/perl/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi/ 아래에 설치된다. 이 두 디렉토리를 PERL5LIB 환경 변수의 값으로 지정해 준다.
2) INSTALL_BASE를 지정하던 시기
그런데 이 makepl_arg 옵션은 Makemaker 를 사용할 경우에만 적용되고, Build.PL을 사용하는, 즉 Module::Build 모듈을 사용한 설치본에서는 통하지 않더라. 그래서 까페에 문의했더니 PREFIX보다 INSTALL_BASE를 지정하는 게 낫다고 하여, 겸사겸사 옵션을 바꿔주었다. (위에 언급한 aero님의 문서[4] 참조)
makepl_arg => INSTALL_BASE=~/local/perl # 이건 ExtUtils::MakeMaker 를 위한 설정
mbuildpl_arg => --install_base ~/local/perl # 이건 Module::Build 를 위한 설정
이젠 모듈을 설치할 때 "site_perl"같은 단계를 거치지 않고 막바로 ~/local/perl/lib/perl5 아래에 설치하게 된다. PERL5LIB의 값으로 ~/local/perl/lib/perl5 와 ~/local/perl/lib/perl5/i386-linux-thread-multi 두 경로를 지정해 준다.
3) local::lib 모듈을 사용
그러다가 다시 local::lib 모듈을 써보기로 하고, aero님의 포스팅[2]
과 모듈의 문서를 참고하여서 설치하였다. local::lib 모듈의 설치 자체는 cpan을 사용하지 않고 직접 소스를 받아서 수행한다. (아래의 "cpan을 사용할 수 없는 상황이라면" 섹션 참조)
# .tar.gz 압축파일을 받아서 풀고, 생성된 디렉토리로 이동하여
# --bootstrap 옵션의 값으로, 내가 희망하는 ~/local/perl 디렉토리를 지정
$ perl Makefile.PL --bootstrap=~/local/perl
# 설치 - local::lib 모듈 자체도 ~/local/perl 아래에 설치된다.
$ make test && make install
# 환경변수를 설정하는 부분
# 모듈 도큐먼트에는 .bashrc 파일에 덧붙이는 걸로 나와 있는데
# 내 경우에는 예전부터 .bash_profile에다가 써왔기 때문에 여기서도 그 파일을 사용
$ echo 'eval $(perl -I$HOME/local/perl/lib/perl5 -Mlocal::lib=$HOME/local/perl)' >>~/.bash_profile
여기까지 하고 나면,
- local::lib 모듈 자체는 ~/local/perl/lib/perl5/local/lib.pm 형태로 설치된다.
- .bash_profile에 추가된 eval문에 의해서, 로그인할 때 다음 구문이 실행되면서 환경 변수들이 설정된다.
# cpan을 사용해서 모듈 설치시에 Module::Build 를 위한 옵션은 .modulebuildrc 파일에 저장됨
export MODULEBUILDRC="/home/gypark/local/perl/.modulebuildrc"
# cpan을 사용해서 모듈 설치시에 MakeMaker를 위한 옵션은 PERL_MM_OPT 변수에 저장됨
export PERL_MM_OPT="INSTALL_BASE=/home/gypark/local/perl"
# @INC에 추가될 디렉토리들.
# 내가 지정한 ~/local/perl 아래에
# lib/perl5
# lib/perl5/i386-linux-thread-multi
# 이렇게 두 개의 경로를 추가해 주고 있다.
export PERL5LIB="/home/gypark/local/perl/lib/perl5:/home/gypark/local/perl/lib/perl5/i386-linux-thread-multi:$PERL5LIB"
# PATH 변수 추가
# 모듈과 같이 설치되는 실행 파일들의 경로는 ~/local/perl 아래의 bin 디렉토리이다.
export PATH="/home/gypark/local/perl/bin:$PATH"
이젠 cpan의 옵션에서 makepl_arg, mbuildpl_arg 두 옵션의 값을 지정해 주지 않아도 된다.
5. MS윈도우 환경에서 Strawberry Perl이나 Activestate Perl을 사용하고 있다면
딸기 펄의 경우는 설치하고 나면 cpan 툴도 설치되어 있다. 명령 프롬프트 창을 열어서 cpan
을 실행하거나, 시작메뉴의 딸기펄 폴더에 보면 "CPAN Client"가 있다.
모듈을 추가로 설치하면 딸기펄 설치 폴더\perl\site\lib
폴더에 설치된다. 딱히 설치 경로나 환경 변수를 만져줄 필요는 없을 것이다.
액티브 펄의 경우는... 주인장이 설치해 본 지 오래되어서 기억이 나지 않는다. cpan 툴을 따로 제공하는지 모르겠다. 액티브 펄은 이와 별개로 패키지 매니저를 따로 제공하여서 이를 이용하여 모듈을 설치할 수도 있는데, 이 경우 CPAN 사이트에 올라온 최신 버전의 모듈을 쓰지 못하고 구 버전을 써야 되는 경우도 있었던 걸로 기억한다.
5.1. Strawberry Perl 에서 cpan 을 사용할 때 압축해제 오류가 나는 경우
가장 최근에 겪은 DateTime::Format::W3CDTF의 경우, 윈도우 명령프롬프트 창에서 cpan을 실행하고 install하려 하니 무수한 에러가 나오면서 실패했다. 그런데 에러 메시지 중에, DateTime\Format\W3CDTF.pm
모듈이 없다며 테스트를 실패하는 게 눈에 띄었다. 현재 설치하려는 모듈인데 그걸 찾을 수 없다니?
cpan 명령어 look 모듈명
해당 모듈을 설치하기 위해 압축을 푼 디렉토리로 들어가서 거기서 쉘을 띄운다.
cpan> look DateTime::Format::W3CDTF
이런 저런 메시지
D:\strawberry\cpan\build\DROLSKY-kq9vX6>
파일목록 확인
D:\strawberry\cpan\build\DROLSKY-kq9vX6>dir
D 드라이브의 볼륨: DATA
볼륨 일련 번호: 94B9-1803
D:\strawberry\cpan\build\DROLSKY-kq9vX6 디렉터리
2010-09-29 오후 04:41 <DIR> .
2010-09-29 오후 04:41 <DIR> ..
2009-11-02 오전 07:04 79 00load.t
2009-11-02 오전 07:04 1,222 01parse.t
2009-11-02 오전 07:04 1,937 02bugs.t
2009-11-02 오전 07:04 748 Build.PL
2009-11-02 오전 07:04 471 Changes
2010-09-29 오후 04:41 <DIR> DateTime
2010-09-29 오후 04:41 <DIR> DateTime-Format-W3CDTF-0.05
2010-09-29 오후 04:41 <DIR> Format
2010-09-29 오후 04:41 <DIR> lib
2009-11-02 오전 07:04 20,545 LICENSE
2009-11-02 오전 07:04 476 Makefile.PL
2009-11-02 오전 07:04 188 MANIFEST
2009-11-02 오전 07:04 737 META.yml
2009-11-02 오전 07:04 2,444 README
2009-11-02 오전 07:04 1,363 SIGNATURE
2010-09-29 오후 04:41 <DIR> t
2009-11-02 오전 07:04 5,476 W3CDTF.pm
12개 파일 35,686 바이트
압축이 풀린 디렉토리 이름부터 좀 이상하다. 보통은 XML-RSS-1.48-Nmg8Ua
이런 식으로 모듈-버전-임시로 만든 문자열 형태로 되어야 하는데 여긴 모듈 저자 아이디 이름으로 나왔다. dir 로 파일 목록을 보면 그 안에 모듈 압축을 푼 디렉토리가 있고, 이것저것 깔려 있는데 뭔가 상당히 지저분하다. lib 디렉토리가 생겨 있긴 한데 그 안은 텅 비어있고, lib 안에 들어가 있어야 할 W3CDTF.pm 파일이 현재 디렉토리에 있다. 마찬가지로 t 디렉토리에 들어있어야 할 *.t 파일들이 다 현재 디렉토리에 있다.
이건 압축을 풀때 tar.gz 파일을 제대로 못 풀어서 생긴 문제다. 원인이 어느 쪽에 있는지는 모르겠다. 아뭏든 압축만 제대로 풀어주면 되는데, cpan 사이트에서 받아온 tar.gz 파일을 빵집으로 풀어봤으나 똑같은 결과가 나오더라. 별 수 없이
- 일단 현재 디렉토리를 싹 지우고,
- 리눅스 시스템에서 tar.gz 파일을 받아서 압축을 풀고
- 압축이 풀려 생긴 파일과 디렉토리들을 통채로 현재 디렉토리로 받아온다
이제 설치를 수동으로 한다.
- perl Makefile.PL
- dmake
- dmake test
- dmake install
이제 쉘을 빠져나오고 확인해본다
D:\strawberry\cpan\build\DROLSKY-kq9vX6>exit
cpan> i DateTime::Format::W3CDTF
Module id = DateTime::Format::W3CDTF
CPAN_USERID DROLSKY (Dave Rolsky <autarch@urth.org>)
CPAN_VERSION 0.05
CPAN_FILE D/DR/DROLSKY/DateTime-Format-W3CDTF-0.05.tar.gz
UPLOAD_DATE 2009-11-01
MANPAGE DateTime::Format::W3CDTF - Parse and format W3CDTF datetime strings
INST_FILE D:\strawberry\perl\site\lib\DateTime\Format\W3CDTF.pm
INST_VERSION 0.05 <-- 제대로 설치되었다
원인은 tar.exe?
내 PC에는 예전에 [GNU utilities for Win32]를 설치해서 몇가지 유닉스 유틸리티들을 윈도우에서도 사용할 수 있게 하였는데, 여기 있는 tar.exe 가 압축을 풀 때 문제가 있는 듯 하다. 여기 있는 tar.exe 를 지워주고 Strawberry Perl 패키지에 포함된 ptar.bat 이나 cygwin에 있는 tar.exe 를 쓰니 압축이 정상적으로 풀리는 것을 확인했음
외부 tar.exe 를 쓰지 않게 하기
집의 경우는 위와 같이 해결되었는데, 학교 PC의 경우 위에 언급한 유닉스 유틸리티 세트의 tar.exe 를 지웠더니 그 다음은 TeX 패키지 안에 있는 tar.exe 를 쓰는데 이것도 같은 문제가 발생했다 -_-;
CPAN 설정에서 명시적으로 딸기펄 패키지에 포함된 ptar.bat 을 지정해주었더니 이게 옵션 형식이 다른지 압축을 풀 때 에러.
아예 외부 프로그램을 쓰지 않고 Archive::Tar 모듈을 사용하게 할 수도 있긴 한데, 그러려면 CPAN 옵션에서 외부 프로그램을 쓰지 말라고 명시를 해줘야 한다:
cpan> o conf init tar
The CPAN module will need a few external programs to work properly.
Please correct me, if I guess the wrong path for a program. Don't
panic if you do not have some of them, just press ENTER for those. To
disable the use of a program, you can type a space followed by ENTER.
<tar>
Where is your tar program? []
외부 프로그램을 사용하지 않으려면, 스페이스를 입력하고 엔터를 누르라고 되어 있다. 그런데 막상 이렇게 입력해도, D:\strawberry\perl\lib\CPAN\Config.pm
파일에는
'tar' => q[],
위와 같이 빈 스트링으로 저장되어 버리고, 결과적으로는 여전히 외부 프로그램을 찾아 사용하려고 한다.
그래서 명시적으로 빈 칸을 추가하여 'tar' => q[ ]
로 저장해주었더니, 일단은 잘 되고 있다.
참고로 [Strawberry Perl과 CPAN 업데이트 문제점 (Couldn't untar xxx.tar, gzip: stdin: invalid compressed data--crc error)]이란 글을 구글링하다 발견하였는데, 여기서는 gzip과 tar 사이에 파이프 연결이 제대로 이뤄지지 않아 crc 에러가 나는 경우인 듯 하다.
6. cpan을 사용할 수 없는 상황이라면
어떤 이유에서는 cpan을 사용할 수 없다면, 별 수 없이 모듈 소스를 직접 다운받아서 설치를 해야 할 것이다.
다음 문서를 먼저 읽어본다. 만일 리눅스에서 어떤 프로그램의 소스를 받아 컴파일하고 설치해 본 적이 있다면, 펄 모듈도 거의 동일한 방식으로 진행된다:
Net::Trackback 모듈을 예로 들어보자.
이 섹션의 나머지 내용은 몇 년 전에 작성한 것이라서, 위의 내용과 같이 읽어서 현재 상황에 맞게 바꿔야 할 것이다
http://search.cpan.org 에 가서 Net::Trackback 모듈을 찾는다.
아래와 같은 목록이 뜨는데, 버전이나 날짜를 고려하면 두 번째 것이 최신. 클릭해서 들어간다.
다음 그림에서, "Source"를 클릭하면 Trackback.pm 파일 하나를 받을 수 있다. 우리가 필요한 것은 이것 하나만이 아니므로, 패키지 전체를 다운받기 위해 "Net-Trackback-0.992"를 클릭한다.
패키지 정보가 나온다. "Download"를 클릭하여 tar.gz 로 압축된 파일을 받는다. 또는 저 링크를 복사하여 UNIX계정에서
$ wget http://search.cpan.org/CPAN/authors/id/T/TI/TIMA/Net-Trackback-0.992.tar.gz
하여 계정으로 바로 받을 수 있다.
6.2. 서버 시스템에 모듈 설치하기
위에 링크한 참조 문서[5]의 얘기처럼
$ tar zxvf Net-Trackback-0.992.tar.gz # 압축을 풀고
$ cd Net-Trackback-0.992 # 디렉토리로 들어가서
$ perl Makefile.PL
$ make
$ make test
$ make install # 이 네 과정을 거치면 설치 끝
perl Makefile.PL 했을 때 다른 모듈이 없다고 에러가 나오면 그 모듈을 먼저 설치해준다. 서버 root 정도라면 더 말하지 않아도 알 테니 이하 생략.
6.3. 개인 계정 아래에 모듈 설치하기
역시 마찬가지로,
$ tar zxvf Net-Trackback-0.992.tar.gz # 압축을 풀고
$ cd Net-Trackback-0.992 # 디렉토리로 들어가서
$ perl Makefile.PL PREFIX=~/perl # 뒤에 PREFIX 옵션을 준다
$ make
$ make test
$ make install # 이 네 과정을 거치면 설치 끝
이러면 모듈과 매뉴얼 페이지 등이 ~/perl 아래에 설치된다.
그리고 이 디렉토리를 실행 스크립트 쪽에서 인식을 해야 하므로, *.pl 파일의 앞에 다음의 코드를 넣는다.
BEGIN { unshift(@INC, '/home/4/nyxity35/perl'); }
6.4. pm 파일만 가져다 놓기
주인장이 Nyxity님의 계정에 위의 방법으로 Net::Trackback 모듈을 설치하려 하였으나, 해당 서버의 경우 /bin/ 아래에 있는 실행파일들 일부를 일반 사용자가 실행하지 못하게 퍼미션을 막아버렸다. 그래서 make 가 제대로 수행되지 않는다. 즉 모듈 생성 자체가 되지 않는다. 어쩔까 고민하다가, 혹시나 하는 생각에 펄 모듈 패키지 내에 있는 *.pm 파일만 슬쩍 복사해서 가져와 봤는데, 아무런 문제가 없이 실행이 되어 버렸다. -_-;; 아래에서 그 과정을 설명한다.
먼저 ~/perl 디렉토리를 만든다.
$ make ~/perl
wiki.pl 의 앞부분에 다음 코드를 삽입한다.
use lib '/home/*/nyxit***/perl';
package UseModWiki;
use strict;
...
그 다음, 위키의 TrackBack 보내기를 작동시키면, 브라우저에 다음과 같이 모듈이 없다는 에러가 난다.
Net/Trackback/Client.pm 모듈이 없다고 했으니, 이 파일을 ~/perl/Net/Trackback/Client.pm 으로 카피해 주자는 거다. 근데 어차피 다른 모듈들도 필요하니, 처음부터 통채로 디렉토리 (이 경우 제일 앞에 있는 Net 디렉토리) 를 복사해 준다.
$ cp -r ~/temp/Net-Trackback-0.992/lib/Net ~/perl/
$ ls ~/perl
Net
서버 에러가 났던 브라우저 창을 새로고침 하면 이제는 다른 LWP/UserAgent.pm 모듈이 없다고 에러가 난다. 이것은 파일 이름에서 추측할 수 있듯이 LWP::UserAgent 모듈이고, 이것을 위의 모듈 가져오기 과정을 반복하면 libwww-perl-5.800.tar.gz 를 받아서 압축을 푼 상태가 되어 있을 것이다. 역시 ~/perl 로 복사해 준다.
$ cp -r ~/temp/libwww-perl-5.800/lib/* ~/perl/ # lib/ 아래에 LWP/UserAgent.pm 뿐 아니라 그냥 다른 것들도 죄다 복사했다. 귀찮으니까.
$ ls ~/perl/
Bundle File HTML HTTP LWP LWP.pm Net WWW
이번에는 URI.pm 모듈이 없다고 에러가 난다. 역시 모듈 가져오기부터 반복하고 복사해 준다.
$ cp -r ~/temp/URI-1.31/URI.pm ~/perl/ # 특정 pm 만 복사하는 예
$ cp -r ~/temp/URI-1.31/URI ~/perl/ # 이 디렉토리 아래의 모듈도 어차피 나중에 필요하니 복사
$ ls ~/perl
Bundle File HTML HTTP LWP LWP.pm Net URI URI.pm WWW
다시 브라우저로 가서 새로 고침하면, 성공했음을 알 수 있다.
정리하면, make, make test, make install 과정을 거쳐 설치할 경우, 의존성을 검사하고, 모듈을 만들고, 검사를 하고, 적절한 디렉토리에 모듈과 매뉴얼, 라이브러리 등을 복사한다. 그렇지만 펄 모듈 파일은 단지 perl 로 쓰여진 *.pm 파일일 뿐이므로, 이 파일만 원하는 디렉토리에 복사해 주고 써도 된다...라는 건데,
이 방법이 항상 통한다는 보장은 없다. 어떤 모듈은 Perl로만 작성된 게 아니라 C등의 네이티브한 언어를 사용하여 작성된 코드를 컴파일하여 연동한다. 이런 경우 .pm 파일만 복사한다고 제대로 동작하지는 않을 것이다.
6.5. 실행 스크립트와 같은 디렉토리에 모듈을 두기
위의 예에서는, ~/perl 디렉토리를 만들어 거기에 모듈을 놓고, wiki.pl 을 수정하여 ~/perl 디렉토리를 검사하도록 만들었다. 그런데 wiki.pl 등 실행 pl 파일 자체를 수정하는 것이 맘에 안 들거나, 수정하면 안 되는 경우가 생길 수 있다. 이럴 때는, 실행 pl 파일이 있는 디렉토리에 모듈을 두어도 된다. 단 디렉토리 아래에 한곳에 몰아넣는다고 되는 것은 아니고, 반드시 위에 ~/perl 에서처럼 모듈 명칭에 따른 경로를 지켜주어야 한다.
$cp -r ~/perl/* ~/www/wiki/ # ~/perl 아래 있는 디렉토리와 파일들을 wiki/ 디렉토리로 복사
$ls ~/www/wiki/ # 아래에서 보듯이, 모듈 파일과 디렉토리들 때문에 지저분해지는 것은 불가피
Bundle HTML kimsnobody.pl PaintBBS.jar URI.pm
config.pl HTTP LWP Readme_Shicyan_for_PaintBBS_jar.html wiki.css
data icons LWP.pm restore.pl wiki.pl
emoticon icons-inter mod_edithelp.pm translations wikiscript.js
File intermap Net URI WWW
위와 같이 할 경우는 wiki.pl 을 고치지 않고, ~/perl 디렉토리를 지운 채로 실행해도 성공한다. 이것은 @INC 안에 기본적으로 "."(현재 디렉토리)가 포함되어 있기 때문인데, 이것도 어떤 시스템이나 통하는 방법인지는 모르겠다.
7. PPM 파일을 받아서 설치하기
Strawberry Perl에서 Win32::GUI 모듈을 설치하려는데, Win32::GUI::DIBitmap 모듈을 gcc를 사용해서는 만들 수 없다며 스킵해 버렸다. 이 경우 Visual C 를 설치해야 하는데... 찾아보니 [Re^4: perl makefile.pl question]와, 이 글에서 언급하는 [I don't have PPM, how can I install a package?] 이런 글이 있어서, 마찬가지로 해 보았음.
- Win32-GUI-1.06-PPM-5.10.zip 파일을 받고
- 압축을 풀고 그 안의 Win32-GUI.tar.gz 파일을 다시 압축을 풀면 blib 디렉토리가 나옴
- blib 디렉토리가 있는 디렉토리에서
perl -MExtUtils::Install -e install_default win32-gui
실행
- 제대로 설치가 된 것 같긴 한데, 이게 언제나 통할지는 모르겠음.
8. 관련 링크
아래 문서들은 위의 문서들에 비해 오래된 내용을 담고 있다.
- Perl Module 수동 설치 - aero님의 노트[4]
- 웹호스팅에서 CPAN모듈 설치하기[3]
- Perlmania: 펄 모듈 설치하기[5]
cpan의 단점을 보충하는 것들
- cpanm - 가볍고, 인자로 모듈 이름 뿐 아니라 특정 버전 모듈의 tarball의 주소를 주거나 할 수 있다. 번잡한 설정 없이 곧바로 사용 가능하다.
- cpan-outdated - 설치된 버전들 중에 새 버전이 있는 모듈들의 목록을 출력해 준다.
- 위 둘을 조합해서
cpan-outdated | cpanm
하면 구 버전 모듈들을 주루룩 업데이트할 수 있다. 다만 설치 과정 중에 사용자 입력을 받아야 되는 경우에는 설치에 실패하더라.
9. Comments
컴퓨터분류