스타의 도서관/애플 맥북 사용하기

맥에서 SVN 한글 깨지는 현상 Homebrew로 패키지로 문제 해결하기 - OSX에서 SVN사용하기

스타(star) 2015. 8. 17. 17:25

지금까지 알아 낸 것

맥에서 잘 쓰던 파일을 윈도우로 가져오거나 했을 때 자모 분리가 되거나, SVN에서 제대로 쓸 수 없는 이유는 모두 유니코드 정규화(Unicode Normalization)의 문제입니다. 유니코드에서 하나의 글자를 표현하는 방법이 여러가지 있는데 크게는 NFD와 NFC라고 불리우는 두개의 파일 시스템의 특징 때문입니다.


NFD(Normalization from canonical Decomposition)

- A + `, ㄱ + ㅠ 타입입니다. 이 형태의 UTF-8을 Decomposed UTF-8이라 부르고 있습니다. 현재 이 방법은 OS/X에서만 사용하고 있는 방식입니다. 모든 것의 원인입니다.


NFC(Normalization from compatibility Composition)

- À, 규 타입입니다이 형태의 UTF-8을 Composed UTF-8이라 부르고 있습니다. 대표적으로 윈도우에서 이렇게 사용합니다.


NFD와 NFC는 서로 파일명이 다르기 때문에 별로도 취급하고 있습니다. 희안하게도 NFC파일명은 NFD로 변환할 수 있도록 만들어 두었기 때문에, 만약 NFD와 NFC형태의 파일이 같이 들어있는 폴더를 열어 보거나, ls를 했을 때 같은 파일이 2개 있는 것처럼 보입니다.


이것 때문에 압축을 할 때도 한글 인코딩을 지원하는 압축 프로그램을 써야 합니다. (CleanArchiver, WinArchiver, The Unarchiver, Bandizip)

파일 공유 하는 소스관리 프로그램인 SVN의 경우에도 당연히 해당하는 문제인데, 이런 경우에는 유니코드를 변환해주는 특정 버전의 SVN을 설치 함으로써 해당 문제를 해결할 수 있다. 이러한 특정 버전의 SVN을 얻기 위해서는 패키지 관리자인 Macport나 Homebrew 등의 프로그램을 설치해야합니다.


맥용 패키지 관리자 Homebrew 설치법과 간단한 사용법 소개 - OSX 환경 세팅

http://starmethod.tistory.com/1300



Subversion 업데이트 하기

이미 macport 에서 SVN을 업데이트 해봤지만 사용법을 잘 익히지 못해서 다시 삭제해버렸습니다. 수소문 끝에 Homebrew가 더 좋다고 해서 이번에는 큰마음 먹고 다시 설치 했던 것입니다. 앞서 Homebrew를 설치하는 강좌를 반드시 읽어보길 권장합니다. 

우선 우리가 필요로하는 특정 버전의 SVN은 바로 1.7.14 버전을 말합니다. 해당 버전에 유니코드 변환하는 기능이 존재합니다. 특정 버전만 골라서 설치 할 수 있는 기능인 homebrew/versions를 tap 합니다. 


brew tap homebrew/versions


정상적으로 설치가 되어 있다면 아래처럼 입력했을 때 homebrew/versions가 있어야 합니다.


brew tap



패키지 검색하기

그 다음에 설치 되어 있는 특정 패키지를 검색하는 명령어를 입력해 보도록 하겠습니다. subversion 들을 찾아보라는 명령어를 입력하면 다음과 같이 나옵니다. 찾아보니 총 3개가 나오네요. subversion, subversion16, subversion17 이 중에서 subversion17에 우리가 찾는 유니코드 옵션을 가진 버전입니다.  


brew search subversion 



옵션 조사하기

특정 패키지의 설치 옵션을 살펴 볼 수 있는 명령어가 있습니다. 우리가 설치하려는 subversion 중에서 subversion17의 설치 옵션을 살펴 보도록 하겠습니다.


brew options subversion17



다른 subversion들은 해당 옵션이 없습니다. 하지만, subversion17에는 맥의 인코딩 문제를 해결 할 수 있는 옵션이 존재하는 군요. 바로 맨 아래쪽의 --with-unicode-path 라는 옵션이 바로 그것입니다. 최신 버전에도 없고, 특정 버전에만 존재하기 때문에 우리가 기를 쓰고 1.7.14버전을 찾았던 것입니다. 


옵션 넣고 설치하기

옵션을 넣고 설치하는 명령어를 입력해 보도록 하겠습니다. 해당 명령어를 누르면 설치 준비를 시작합니다.


brew install subversion17 --with-unicode-path 



하지만 바로 에러가 나버리는 군요. 확인해보니 일부 연계 패키지에서 Java로 만들어 졌나 봅니다. 친절하게 다운로드 주소까지 알려주고 있습니다. 이런 경우 Java SE가 설치 되어 있어야 합니다. 오라클 홈페이지에 가서 JDK를 설치 합니다. 






JDK를 설치한 뒤에 다시 한번 실행을 해보겠습니다.


brew install subversion17 --with-unicode-path 


이번에는 정상적으로 설치가 되기 시작합니다. 아래와 같이 설치가 시작됩니다. 아래쪽에 보면 이번에 설치 하고 있는 SVN의 버전을 잘 확인하도록 하세요. 1.7.14버전입니다. 해당 버전이 지금 우리가 안고 있는 유니코드 문제를 해결해 줄 수 있습니다. 



링크 재 설정

하지만, 설치했다고 해서 끝이 아닙니다. 기존의 Subversion 버전은 여전히 1.8.13을 가르키고 있을 것입니다. 이런 현상을 변경해 주기 위해 링크를 재설정 해줍니다. 


한참을 찾아서 알아낸 링크 변경하는 명령어입니다. 제가 설치한 Subversion 버전이 설치만 되어 있었지 실제로 각종 프로그램들은 여전히 1.8.13버전을 사용중이었습니다. 해당 버전을 사용하지 않고, 제가 방금 받은 1.7.14 버전을 사용할 수 있도록 링크를 걸어주도록 하겠습니다.


brew link --overwrite subversion17



몇 번의 삽질 끝에 SVN 유니코드 문제가 해결되어 있는 1.7.14 버전을 적용할 수 있었습니다. 제가 자주 사용하는 svnX를 열어서 Preferences를 들어갑니다. Path to svn binaries folder에는 제가 Homebrew를 설치한 폴더인 /usr/local.bin을 지정해 줍니다. 해당 폴더를 지정하니 Version이 1.7.14로 바뀌시는 모습을 보셨을 것입니다. 해당 버전이 유니코드를 해결한 버전이니 앞으로 사용해 보면 문제가 없을 것입니다.




변경 전과 변경 후

유니코드 적용하기 전에는 한글 폴더들이 이중으로 표시되었습니다. 도저히 Checkout을 받아 보았자 이용할 수가 없었습니다. 일부는 ?로 add 처리 되고 일부는 !로 missing 처리 되는 등의 문제가 심각한 수준입니다. 이 때 버전이 가장 최신인 1.8.13이었습니다. 



하지만, 이번에 유니코드 문제를 수정한 1.7.14버전으로 Checkout 받은 모습입니다. 폴더면과 파일명이 깨끗하게 문제가 없습니다. 드디어 작업 완료된 모습입니다. SVN이 문제 없이 사용가능 할 것 같습니다.