• 북마크
  • 추가메뉴
어디로 앱에서 쉽고 간편하게!
애플 중고 거래 전문 플랫폼
오늘 하루 보지 않기
KMUG 케이머그

컬럼

MacOS X에 Perl 설치하기.

본문


MWJ June 1, 2002

**Casting Perl before swine**

질문: 맥 오에스 텐은 유닉스 기반이며, 풀 버전의 펄이 내장됐다는 건 압니다만, 스크립트 메뉴에서, 커맨드 라인에서 다운로드한 펄 스크립트를 돌릴 수 없는 건 왜입니까? 필요한 소프트웨어가 별도로 있나요? 최신 버전의 펄은 어떻게 설치합니까?

답변: 독자의 문제는 퍼블릭 사용이 가능한 펄 소프트웨어가 독자 시스템에 설치되지 않은 모듈을 사용하기 때문인 것으로 파악된다. 맥 오에스 텐에 딸려오는 펄은 약간 오래된 버전이라 할 수 있다.

매우 강력하면서도 유명한 프로그래밍, 스크립팅 랭귀지인 펄의 진짜 장점은 크건 작건간에 끊임없이 더해지는 융통성에 있다. 데이터베이스 커뮤니케이션과 웹 스파이더 블럭 빌딩에서 이메일 주소 조사하는 툴이나 신용카드 숫자를 알아내는 툴에 이르기까지 펄은 광범위하게 쓰이면서 외부 펄 모듈로 패키지화된다.

따라서 이상한 일은 아니다. 그러한 외부 모듈의 펄 라이브러리(Comprehensive Perl Archive Network[62])은 생각외로 대규모이면서 조직도 잘 짜여져있다. 펄은 융통성있는 언어이면서, 써드 파티 CPAN 모듈의 로케이팅이나 다운로딩, 컴파일링, 테스팅, 설치를 펄 이름을 치는 것 만큼이나 쉽게 한다. 그런 기관이 바로 CPAN 셸이다.

맥 오에스 텐에 딸려오는 펄에서, CPAN 셸은 아직 맥 오에스 텐에서 올바르게 작동하지 않고 있다. 적어도, 설치가 안되어있다. 이 이유에 대해서는 먼저 전문가적인 지식이 필요함을 알려준다. 맥 오에스 텐 10.0과 맥 오에스 텐 10.1이 탑재한 펄 버전은 5.6이며, 2000년 3월 맥 오에스 텐 10.0이 최종 버전으로 나왔을 때의 버전이었다. 현재의 펄 버전은 5.6.1이며, CPAN 셸은 너무나 똑똑해서 펄이 오래됐음을 알리고, 뻔뻔스럽게도 CPAN의 어떠한 코드 라이브러리에 대한 걱정도 하지 않은 채 펄을 업데이트하려한다.

펄과 대부분의 펄 코드는 자바처럼 크로스-플랫폼이지만, 펄 5.6.1 배포본은 맥 오에스 텐에 내장되어있지 않다. 문제는 HFS+ 파일 시스템에 있다. UFS와 같은 유닉스 파일 시스템에는 대소문자만 다르면 같은 파일이 같은 이름으로 동일한 디렉토리에 있어도 문제가 발생하지 않는다. 유닉스는 대소문자로 구분하는 오퍼레이팅 시스템이며, 대소문자만 다르면 두 파일을 다르게 인식한다. 반면, HFS+는 대소문자와 상관없이, 파일이 만들어졌을 때의 이름을 기억하기 때문에 대소문자를 모두 동일하게 취급한다.

펄과 무슨 관련이 있겠는가? 다른 수많은 유닉스 소프트웨어들처럼, 펄도 소스코드로 배포되며, 맥 오에스 텐 개발자 툴을 사용하여 실행가능하도록 손수 컴파일해줘야한다. 소프트웨어 컴파일은 수많은 단계로 이뤄져있으며, 유닉스 파일 시스템(사실 UFS 파티션을 사용하는 맥 오에스 텐 컴퓨터는 상대적으로 매우 소수이다)에서는 문제가 되지 않지만 HFS+의 경우 펄의 컴파일을 시작하자마자 중단시켜버린다. 같은 이름의 펄이 있기 때문이다.

따라서, CPAN 셸은 자동적으로 현재의 펄을 업데이트를 멈추게 되며, 펄 5.6에서는 CPAN 셸도 사용할 수 없게 만들어버린다. 따라서 업데이트와 펄의 소프트웨어 지원이 짜증스럽게 다가오는 것이다.

앞으로의 펄(버전 5.8부터 지원한다)은 HFS+의 문제를 해결해서 맥 오에스 텐에 별도의 단계 없이 설치가 간편해지도록 만든다고 한다.(이런 문제를 없애기 위해 펄 5.6.1과 함께 나오는 재규어도 좋을 것이다.) 하지만 CPAN 셸에 의존하는 펄 소프트웨어나, 시스템이 찾을 수 없는 모듈을 사용해야하는 경우에는 스스로 5.6.1을 설치해야한다.

우선, 맥 오에스 텐 개발자 툴을 설치한다. 컴파일러가 필요하기 때문이다. 그 다음에 펄 5.6.1 버전을 다운로드한다, 이 단계를 수행하기 위해서는 관리자 권한이 필요하다. 관리자만이 대부분의 카본과 코코아 소프트웨어를 설치할 수 있기 때문이며, 권리자만이 대부분의 유닉스 소프트웨어(소프트웨어가 보호된 유닉스 폴더인 "/bin"이나 "/usr"에 설치되기 때문이다.)를 설치하기 위한 루트 권한을 터미널에서 행사할 수 있기 때문이다.

펄의 설치는 계속 커맨드 라인을 사용해야하며, BBEdit 셸보다는 터미널을 권장한다. 비비에딧 셸의 경우 설치 과정의 아웃풋은 생소할 것이며, 셸 워크쉬트 디자인은 과정이 끝날 때도 확실히 보이지 않기 때문이다.

**Getting and installing Perl** --

일단 펄을 다운로드받는다. 커맨드-라인 프롬프트에 있는 경우, 맥 오에스 텐 10.1 버전 이후에 딸려오는 curl 셸 툴을 사용할 수 있다. FTP나 HTTP 서버로부터 파일 다운로드를 컬로 할 수 있다. 다음과 같이 친다.

curl -O http://www.perl.com/CPAN/src/stable.tar.gz

대소문자에 주의해야한다. 이 명령으로 현재 디렉토리(대부분의 경우 홈 디렉토리가 된다)에 펄 소스 파일 아카이브를 받을 수 있다.

그 다음에는 파일의 압축 풀기이다. 스터핏 익스팬더로도 할 수 있지만, 스터핏은 긴 파일 이름을 아직 제대로 다루지 못하는 형편이기 때문에, tar를 사용한다. 다음과 같이 친다.

tar xzvf stable.tar.gz

"Tape ARchive"를 의미하는 타르는 파일압축을 해제한다. x는 "eXtract"를 의미하며, "z"는 "gZip"을, v는 "Verbose"를 뜻한다. f는 "File"이며, 타르가 압축해제를 끝내면 "perl-5.6.1"로 이름지은 새 디렉토리를 만든다.

cd perl-5.6.1/

셸이 새로운 경우, 우선 Tab 키를 눌러가면서 "cd pe"를 타이핑해야함을 지적한다. 셸은 pe정도만 쳐도 펄임을 자동적으로 인지하며 알파벳을 ㅊ워준다. 리턴을 친다.

이제, 펄 구성 과정에 대한 환경 변수를 설정한다. 기본적으로는 맥 오에스 텐이 이를 미리 설정해놓지 않기 때문이다. 다음과 같이 친다.

setenv LC_ALL C
setenv LANG "en_US"

몇 가지 다윈에 관련사항을 업데이트해야할 것이다. 다음 펄 릴리즈에선 이점도 고려해야한다. 써드 파티 펄 모듈의 기본 위치를 바꾸기 위해서는(로컬에서 시스템 라이브러리로 바꾼다) 다음과 같이 타이핑한다.

perl -i.bak -p -e 's|Local/Library|Library|g' hints/darwin.sh

위 명령으로 "hints/darwin.sh"에 있는 파일을 "perl-5.6.1" 디렉토리에 백업하고 darwin.sh 셸 스크립트의 "/Local/Library/"의 모든 인스턴스를 라비으러리로 바꾸게된다.

이제, 펄을 깨끗하게 컴파일해야한다. 다음과 같이 친다.

sh Configure -des -Dfirstmakefile=GNUmakefile -Dldflags="-flat_namespace"

"Configure" 스크립트는 리눅스나 FreeBSD, 솔라리스, 그 외 펄이 돌아가는 다른 수십 가지 유닉스와 다윈을 구분짓는 조사를 행한다. "-Dfirstmakefile" 아규먼트는 "makefile"이라 불리는 문서를 "GNUmakefile"로 이름을 바꿈으로써, HFS+의 대소문자 문제를 피한다. 따라서, "Makefile"로 이름이 주어진 파일과 충돌을 막을 수 있다. "flat_namespace" 옵션은 10.1에 있는 기능으로서, 유닉스 소프트웨어를 위함이다. 자세한 설명을 원하면의 사이트를 보기 바란다. Configure에는 시간이 어느 정도 요구된다.

끝나면, "make test"를 치고 리턴을 누른다. 이 명령으로 펄 소프트웨어를 실질적으로 구축하는데, 느린 머신의 경우 시간이 상당히 걸린다. 빌딩이 끝나면 새로 빌트된 소프트웨어가 자신을 검사하기 시작한다. 수백 가지 검사 중에 네 가지 테스트에서 실패가 나올 테지만 걱정할 필요는 없다. 현재 맥 오에스 텐에서 알려진 문제이기 때문이다. 이 에러를 지우고 싶으면, 버클리 DB의 오픈-소스 임베딩 데이터베이스 릴리즈를 다운로드받을 수 있지만 버클리-스타일의 데이터베이스를 요구하는 펄을 만들지 않는 한 꼭 필요하지는 않다.

이제, 펄 새 버전을 설치할 준비가 됐다. 부드럽게 하기 위해서, 우선 "perl -v"를 치고 리턴을 누른다. 그러면 유닉스 스타일의 "About" 박스가 나와서, 현재 펄 5.6.0을 사용하고 있음을 몇 초 동안 알릴 것이다. 다음과 같이 친다.

mv INSTALL INSTALL.txt
sudo make install

그 다음에는 관리자 암호가 필요하다. sudo 명령 때문이다.

첫 번째 단계에서는 HFS+의 방식대로 파일을 움직인다. "make install" 명령은 자기 자신의 설치 명령을 따르기보다는 "INSTALL"이라는 이름의 파일을 가리키는 것으로 생각할 것이다. 두 번째 단계에서는 루트 권한(sudo는 수퍼유저 do의 준말이다)으로 소프트웨어 빌딩을 수행한다.

일단, 이번 명령까지는 맥 오에스 텐의 설정을 건드리는 일은 전혀 하지 않았으며, 관리자 권한도 비로소 필요해졌다. 여러분이 한 일은 다운로드와 홈 디렉토리 내에서의 컴파일 뿐이었다. 이전 버전의 펄을 덮어쓰기로 한다면 훨씬 빠르게 할 수 있을 것이다.

"perl -v"를 다시 쳐서 업데이트된 버전 스트링을 본다. 됐다. 재시동이 필요하진 않다. 이제 "stable.tar.gz" 파일과 "perl-5.6.1" 디렉토리를 버릴 수 있다. 이 파일들은 이제 필요하지 않다.

이 과정들을 한 번에 하기 원한다면 다음을 텍스트 파일로 저장한다. "prelinstall.sh"로 이름지을 수 있을 것이다. 실행을 위해서, "chmod 777 perlinstall.sh"을 치는 것도 잊지 않는다. 본지가 권장한 방법은 순서에 따르면 다음과 같다.

cd ~
curl -O http://www.perl.com/CPAN/src/stable.tar.gz
tar xzvf stable.tar.gz
cd perl-5.6.1/
setenv LC_ALL C
setenv LANG "en_US"
perl -i.bak -p -e 's|Local/Library|Library|g' hints/darwin.sh
sh Configure -des -Dfirstmakefile=GNUmakefile -Dldflags="-flat_namespace"
make test
mv INSTALL INSTALL.txt
sudo make install
perl -v

**Adding modules**

이번에는, CPAN 셸로 들어가본다. 다음과 같이 친다.

sudo perl -MCPAN -e shell

앞서 말한 "/Local/Library" 요술처럼, 이 명령은 셸에서의 실행을 의미하는 짤막한 펄 스크립트로서 one-liner라 불린다. 이 스크립트로 좀더 쉽게 CPAN을 네비게이팅할 수 있다. 일반적으로는 웹 상의 CPAN을 보는 편이 더 쉽다. 위의 방법은 여러분이 펄 라이브러리의 계층을 알아보거나 문서를 제목 별로, 단어 별로 알아보도록 하기 위함이다. 인터넷 프로토콜 툴의 핵심 라이브러리를 업데이트해서 CPAN 셸을 연습해보자. 다음과 같이 친다.

install Bundle::libnet

그러면 몇 가지 설정에 대한 질문이 나온다. 대부분은 지리에 관한 질문일 것이다. 기본 답변으로도 충분하다. 가까운 미러 사이트를 고르라고 할 때에는 가까운 도메인이나 대규모 도메인(.com과 같은)을 선택한다. 아무 거나 해도 좋다. 다른 패키지를 얻어보자. 다음과 같이 타이핑한다.

install Bundle::LWP

(LWP도 몇 가지 질문을 한다. "HEAD 가상본을 설치하시겠습니까"의 질문이 생소할 것이다. "NO"라고 답한다. HFS+는 LWP의 애드-온 이름인 "HEAD"와 가끔은 유용한 시스템 유틸리티 "head"를 혼동하기 때문이다.)

이 패키지는 웹에서 다운로드하면서 봤을 펄 스크립트의 일반 컴퍼넌트인 웹 스파이더의 작성을 위한 코어 툴을 페치해준다. 본지 스탭진 중에서는 야후 영화 리스트를 팜 OS 데이터베이스로 바꿔주는 LWP 스파이더, Showtimes를 사용하는 사람이 있으며, 애플의 둔중한 메일링 리스트 아카이브를 좀더 알맞은 포맷으로 바꾸기 위해 LWP를 이용하는 이도 있다. 유용한 수많은 툴들은 펄의 웹에서 구할 수 있다. 오라일리는 6월달에 이 주제에 대한 책을 발매하며, 본지도 여기에 참여하고 있다.

일반적으로, 알려지지 않은 펄 모듈에 의존하는 펄 스크립트를 발견하는 경우, CPAN 검색 엔진으로, 에러가 난 모듈을 조사하거나, 신중하게 살펴볼 좋은 기회가 된다. 없는 모듈을 발견하는 경우 CPAN 셸에서 "install "만 치면 된다. 유닉스나 프로그래밍에 관심있는 독자들의 경우, 펄은 양자 모두를 겨냥할 수 있는 좋은 관문이다.

Copyright (c) 2002 GCSF, Incorporated. All rights reserved. All
trademarks are the property of their respective holders and
owners.

GCSF, Incorporated.
P.O. Box 1021
El Reno, OK 73036-1021
(405) 262-1399



위민복님의 글입니다.
http://casaubon.tv
0 0
로그인 후 추천 또는 비추천하실 수 있습니다.
회원사진
포인트 765,229
가입일 :
2002-05-23 22:53:10
서명 :
KMUG 애플에 대한 모든 것. 케이머그
자기소개 :
2000년 3월 1일 부터 시작 http://www.kmug.co.kr webmaster@kmug.co.kr

최신글이 없습니다.

최신글이 없습니다.

댓글목록 1

soulcity님의 댓글

전체 2,464 건 - 246 페이지
2002.06
03

웹브라우저의 인증 문제.

MWJ June 1, 2002 **It's a missing feature** 질문: 특정 웹 사이트에 접속하기 위해 윈도우즈 2000이나 XP에서 인터넷 익스플로러에 하는 것처럼 맥 오에스 텐 웹 브라우저에 왜 인증을 설치할 수 없나요 그…

2002.06
03

MS와 애플에 대한 동화.

MWJ June 1, 2002 The Weekly Attitudinal: Logical Conclusions ------------------------------------------- **"Copyright the future of Win…

2002.06
03

열람중 MacOS X에 Perl 설치하기.

MWJ June 1, 2002 **Casting Perl before swine** 질문: 맥 오에스 텐은 유닉스 기반이며, 풀 버전의 펄이 내장됐다는 건 압니다만, 스크립트 메뉴에서, 커맨드 라인에서 다운로드한 펄 스크립트를 돌릴 수 없는…

2002.05
31

어렵기만한 맥 오에스 텐 재설치

MWJ Geek Experience: Reinstalling Mac OS X ------------------------------------------ **Can you repair a Mac OS X system without erasing*…

2002.05
29

플랫폼으로서의 언어, REBOL

when a language becomes a platform REBOL IOS Express by Kurt Cagle April 2002 분산 데스크탑은 한 번 들으면 파악할 수 있을 정도로 직관적이지만 이론상으로는 꽤 복잡하다. 데스크탑은…

2002.05
27

팀 오라일리의 WWDC 연설

ublished on The O'Reilly Network (http://www.oreillynet.com/) http://www.oreillynet.com/pub/a/mac/2002/05/14/oreilly_wwdc_keynote.html W…

2002.05
23

Xserve의 등장 1/2

To Xserve and protect --------------------- **Apple's first rackmount is solid entry-level serving** WWDC에서 약속한 바대로 애플은 화요일, Xserve(이…

2002.05
23

WWDC의 재규어 알파 프리뷰 1/2

Trade Show Remote: Jaguar snarls through WWDC --------------------------------------------- **Mac OS X update far more than bug fixes**…

2002.05
23

WWDC의 재규어 알파 프리뷰 2/2

**Universal Access** 애플은 초기부터 유니버설 억세스 소프트웨어를 다른 이름으로 채택해왔었다. 전국 출력 협회(the American Printing House for the Blind)와 같은 조직을 관찰한 애플은 애플 II…