2014년 8월 21일 목요일

OS X Yosemite DP 에서 Homebrew 실행문제 해결하기

현재 애플에선 한창 개발중인 OS X Yosemite Developer Preview 에서 내부 프레임워크들이 버전업이 됨이 따라 이에 의존성이 있는 소프트웨어들이 영향을 받게 되었다. 그 중에는 Homebrew도 끼어 있다.

Homebrew 실행 시 아래와 같은 에러메시지를 보게되면 이 경우에 해당한다.
$ brew update
/usr/local/bin/brew: /usr/local/Library/brew.rb: /System/Library/Framworks/Ruby.framework/Versions/1.8/usr/bin/ruby: bad interpreter: No such file or directory
사용하는 요세미티 프리뷰 버전에 따라 에러메시지는 약간 다를수도 있다. 어쨌든 에러메시지 자체는 의미가 어렵지는 않다. 그냥 루비 인터프리터를 못 찾는 것 뿐이다. Homebrew는 루비로 만들어져 있으니 치명적이다.

다행히도 요세미티에서 루비가 사라진건 아니고 버전업이 되어버린게 원인이다. 위 에러의 경우 1.8을 찾고 있는데 이게 요세미티에서 없다는 걸로 결론이 난다.

물론 이 경우 1.8 대신 Current를 쓰도록 고치면 해결된다. (혹은 직접 해당 디렉토리를 뒤져서 원하는 버전으로 해도 되지만 아마도 Current가 제일 편할 것이다.)

일단 vim 등 원하는 에디터로 /usr/local/Library/brew.rb 파일을 열어보자.
$ vi /usr/local/Library/brew.rb
이 파일의 첫 줄에 '#!' 으로 시작하는 부분에 문제가 있다. 아마 아래와 같이 1.8 등의 버전이 적혀 있을 것이다.
#!/System/Library/Framworks/Ruby.framework/Versions/1.8/usr/bin/ruby -W0
여기서 1.8 을 Current로 고치자.
#!/System/Library/Framworks/Ruby.framework/Versions/Current/usr/bin/ruby -W0
이제 문제는 해결된...것 처럼 느껴지겠지만 마지막 단계가 남았다. brew.rb는 Homebrew의 git 저장소에 있는 거라 이 상태로 brew update 등의 명령을 실행시키면 git 관련해서 오류가 발생한다. 그래서 아래 커맨드를 이용해 적당히 커밋을 해 주어야 한다.
$ cd (brew —repository)
$ git commit -am “Fixing OS X Yosemite Compatibility”
이 후 brew update를 실행시켜보자. 별다른 문제 없이 되면 끝이다.

만약 위 수정을 끝낸 후 brew update를 실행시켰는데 git의 커밋메시지 에디터가 뜬다면 적당히 저장하고 종료시켜주자. 새로운 Homebrew 업데이트가 있는데 그 전에 수정해 버렸기 때문에 합치기(merge) 과정이 필요해서 그런 것이다.

아마도 요세미티가 정식 릴리즈 하기전에 Homebrew 측에서 수정해서 업로드를 하겠지만, 그 전에 업그레이드 하지 않고 잘 사용 중이다가 요세미티로 업그레이드 하는 경우엔 비슷한 문제가 발생 할 수 있으니 참고하자.

댓글 없음 :