블로그 이미지

my hiding place

삶이 힘들 때, 조금이라도 고개를 들고 위를 보세요. 푸른 하늘이 당신을 맞이해줄 날이 있을 테니까. by nulonge


'rubynode'에 해당되는 글 1건

  1. 2009.02.03 MacPorts로 설치한 ruby에 rubynode가 설치되지 않을 때

MacPorts로 설치한 ruby에 rubynode가 설치되지 않을 때

애플에서 Mac OS X에 기본 탑재해 배포하는 *nix 바이너리는 패치가 늦는 편입니다.

OS X에 탑재된 ruby와 python도 예외는 아니어서, 기본 탑재되는 python은 2.4, ruby 버전은 1.8.6-p114이죠. 저는 오늘 macports를 이용해 ruby를 1.8.6-p287로 업데이트했습니다. (metasploit가 ruby 1.8.7에서는 잘 동작하지 않기 때문에 1.8.7 버전은 metasploit가 업데이트 될 때까지 사용하지 않고 있습니다. 업데이트할 때는 "sudo port install ruby186 +tk +thread_hooks" 명령을 사용했습니다. macports에서 제공되는 rubygems 패키지는 ruby 1.8.7에 의존성을 갖고 있기에, rubygems 사이트에서 소스를 받아서 직접 설치했습니다.)

rubygem으로 Mac OS X에 기본 설치되어 있는 rubygem들을 설치하는 과정에서 문제가 발생했는데, rubynode라는 gem이 설치되지 않습니다. RUBY_SOURCE_DIR라는 환경 변수에 ruby 소스파일 디렉토리를 지정해달라고 하는데, ruby 소스 디렉토리를 지정해줘도 설치되지 않지요...... sudo 명령에 문제가 있는걸까요? Google 검색을 통해 원인을 해결했는데, 다음 링크에 힌트가 있었습니다: http://www.keith-lancaster.com/blog/?p=24

단, 문제가 있다면, root로 로그인했을 때, PATH를 재설정해주어야 하는데, 이 부분이 설명이 되어 있지 않아서 추가 작업이 필요합니다. 그렇지 않으면, Mac에서 기본적으로 구성해주는 환경에서 rubynode를 설치하게 됩니다.

1. root 패스워드 부여
Mac OS X에서는 root 계정이 비활성화되어 있으므로 패스워드 지정: sudo passwd root

2. root로 로그인: su -

3. PATH에서 macport로 설치된 ruby와 gem을 기본 경로에 설치된 ruby와 gem보다 먼저 참조하도록 설정 변경
export PATH=/usr/local/sbin:/usr/local/bin:$PATH

여기서 주의할 점: macports의 기본 설치경로는 /opt/local인데, 저는 /usr/local로 변경해서 설치했습니다. 기본 설정에 따라 macports를 설치한 경우, export PATH=/opt/local/sbin:/opt/local/bin:$PATH로 입력해야 합니다. 이하 내용들도 마찬가지 입니다.

4. rubynode는 설치될 때 ruby 소스 코드를 참조하게 되어 있습니다. Mac OS X에서 사용중인 macports와 동일한 버전으로 ruby 소스코드를 다운로드해서 적당한 경로에 풀어놓고, 저장한 경로를 환경 설정에 추가해줍니다
export RUBY_SOURCE_DIR=/usr/local/src/ruby-1.8.6-p287

5. mactports 디렉토리에서 ruby의 소스 디렉토리로 node.h 헤더 파일을 복사합니다. macports가 node.h 헤더 파일에 무슨 변형을 가했기 때문에 정상적으로 설치되지 않는 것 같습니다. (http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/291651)
cp /usr/local/lib/ruby/1.8/i686-darwin9.6.0/node.h /usr/local/src/ruby-1.8.6-p287

6. gem 명령을 이용해 rubynode를 설치합니다: gem install rubynode

이렇게 해서, 원하던대로 ruby를 업데이트하면서 원래 Mac OS X에 설치되어 있는 ruby와 동일한 rubygem들을 설치할 수 있었습니다. 이상 끝.

Comment 0 Trackback 1
Top

prev 1 next