유의: 아직 마무리하지 못한 못한 문서입니다.
개요
이 문서는 Windows 운영체제에서 GNU의 프로그램들을 쓸 수 있게 해주는 Cygwin을 설치하고 설정하는 방법에 대해서 다루고 있습니다. 나아가, GNU 프로그램들과 Windows를 더욱 끈끈하게 연결하고 양쪽 환경의 장점을 모두 살려 활용하는 방법과 Cygwin 위에서 한글을 올바르게 사용하기 위한 설정에 대해서도 다루고 있습니다.
설치하기
- Cygwin 설치 파일을 받아서 실행하면 설치 시작할 수 있습니다.
- Cygwin의 꼭대기 디렉토리를 정해야하는데, 특별한 이유가 아니라면
기본값인
C:\\Cygwin그대로 사용합니다. 참고로,D:\\와 같이 드라이브의 꼭대기를 그대로 사용하는 것은 별로 좋지 않다고 합니다. - 텍스트 파일을 어떻게 다룰지에 대한 설정은 Windows와 Unix가 줄끝문자를 다르게 사용하기 때문인데 그냥 Unix로 해주는 것이 좋습니다.
- 다음에 설치하는 패키지들을 임시로 저장할 곳을 지정하고, 설치에 사용할
서버를 선택하면 됩니다.
linux.sarang.net외에는 공식 등록한 국내 사이트가 거의 없는데,ftp://ftp.kaist.ac.kr/pub/cygwin이나ftp://ftp.kr.freebsd.org/pub/cygwin등을 추가해서 사용하셔도 됩니다. - 이제 설치할 패키지들을 선택합니다. 웬만한 것들은 Cygwin이 기본적으로 선택을 해줍니다만, openssh나 rsync, vim, mutt, fetchmail, procmail 등 자기가 더 필요한 패키지들을 골라줍니다. inetd나 Cygwin telnet 같은 프로그램들은 inetutils에 들어있으며, sshd나 telnetd, ftpd 등을 Windows의 서비스로 등록해서 쓰고 싶다면 cygrunsrv을 설치하는 것도 좋습니다. cygutils에는 Cygwin과 Windows를 연결하는 쓸만한 도구들이 있기 때문에 꼭 설치하시기 바랍니다.
- 다음으로 넘어가면 선택한 서버에서 패키지 파일들을 받아와 실제로 설치를 합니다.
환경 변수
내 컴퓨터의 시스템 등록정보 창을 통해서 몇몇 Windows 환경 변수를 설정해야
합니다. 우선 시스템 변수로 CYGWIN을 ntsec binmode로
설정해주며, PATH에는 C:\\Cygwin\\bin과
C:\\Cygwin\\usr\\X11R6\\bin를 ;로 구분하여 추가해줍니다.
사용자 변수로는, HOME은 자기가 쓸 홈디렉토리(가령, D:\\netj)를
설정해주면 되고, LOGNAME은 자기 Windows 계정 이름으로 설정해주는 것이
좋습니다. 만약 Xmanager나 Cygwin XFree86 Server를 사용한다면 DISPLAY를
localhost:0.0 정도로 설정해두는 것도 좋습니다.
시작하기
이제 이 정도면 Cygwin을 사용할 기초 준비는 끝났습니다. 시작 > 실행에서 bash를 입력하거나 설치하면서 만든 Cygwin 아이콘으로 셸을 시작하면 됩니다. 다른 Linux나 Unix 컴퓨터를 사용하고 있다면 자신의 설정 파일들을 가져와 HOME으로 설정한 디렉토리 밑에 복사해두면 대부분 Linux나 Unix와 별 차이 없이 돌아갈 것입니다. 아래의 내용을 참고하여 Cygwin에 좀 더 맞게 고쳐주는 것이 물론 좋겠습니다.
설정하기
Cygwin은 기본적으로 Windows 위에서 GNU 도구들을 사용하는 것이기 때문에 Linux나 Unix와는 확실히 다른 환경입니다. 파일 시스템에서 이름의 대소문자 구별이 없다든지, 윈도우즈 자체의 프로그램이나 레지스트리를 연결하여 쓸 수 있다는 점들이 차이겠죠. 아래는 그런 차이를 극복 내지는 활용하기 위한, 그리고 한글을 제대로 쓰기 위한 설정들입니다.
Vim
Vim을 사용한다면 한글과 유니코드 파일을 사용하기 위해서
/usr/share/vim/vimrc에 다음과 같은 설정을 넣어줍니다:
set fileencodings=ucs-bom,utf-8,korea,iso-2022-kr
set termencoding=korea
set encoding=korea
bash
~/.bashrc:
# ls에서 한글 출력을 위해
alias ls="ls -F --color=auto --show-control-chars"
# ?나 * 따위를 확장할 때 대소문자 구별을 끔
shopt -s nocaseglob
~/.inputrc:
# 한글 입력을 위해
set convert-meta Off
set output-meta On
# 대소문자 구별을 끔
set completion-ignore-case On
알아둘 것들
예전에는 /etc의 여러 파일들을 직접 만들어주어야 했지만, 이제는 Cygwin 설치시 자동으로 생성해주기 때문에 크게 손을 봐야할 곳은 없습니다. 다만 Cygwin의 기본 설정들을 뜯어 고쳐야겠다는 생각이 든다면 알아둘 사항들이 몇가지 있습니다.
파일 시스템
Windows는 드라이브가 파일 시스템의 꼭대기이므로 드라이브가 여러 개면 꼭대기도
여러 개가 됩니다. 그러나 POSIX에서는 하나의 꼭대기(/)만 가지며
그 밑에 장치(드라이브)들을 mount로 붙여 사용하도록 되어 있습니다. Cygwin의
mount는 단순히 드라이브뿐만 아니라 임의의 Windows 파일 경로를 Cygwin 내의 POSIX
경로에 붙일 수 있게 해줍니다. 가령, mount -f -s -b "D:/var" "/var"같은
명령으로 "D:\\var를 /var에 붙여라"라는 것이 가능한
것입니다. Cygwin에는 /etc/fstab와 같은 파일이 없으며 mount로 변경한
사항이 Windows 레지스트리에 남아 계속 보존됩니다.
기본적으로 Cygwin을 설치한 디렉토리(C:\\Cygwin)를 /로
mount해주며, C:\\Cygwin\\bin과 C:\\Cygwin\\lib를 각각
/usr/bin과 /usr/lib에 mount 해줍니다. XFree86도 설치했다면
C:\\Cygwin\\usr\\X11R6\\lib\\X11\\fonts도
/usr/X11R6/lib/X11/fonts로 mount 해줍니다. 또한, Windows의
드라이브들은 /cygdrive/c와 같이 /cygdrive 라는 특수한 경로를
통해서 접근이 가능합니다. 가령, C:\\WINDOWS는 POSIX 경로로
/cygdrive/c/WINDOWS가 되겠지요. 만약, /cygdrive/c/...와 같은
길고 지저분한 경로가 싫거나 /tmp나 /var는 C:\\Cygwin
밑이 아닌 다른 곳에 위치시키고 싶다면, mount 명령을 통해서 해당 디렉토리를
원하는 POSIX 경로에 붙이면 됩니다. 원한다면 /cygdrive라는 특수 경로도
/mnt와 같이 다른 이름으로 변경할 수 있습니다.
파일 경로
Cygwin에서는 cygpath라는 Windows와 POSIX 간에 경로를 변환하기 위한 도구를
제공합니다. Windows의 파일의 경로는 C:\\Cygwin\\bin\\sh.exe처럼
C:라는 드라이브 이름으로 시작하며 디렉토리를 구분하는 문자도 POSIX의
/가 아닌 \\입니다. cygpath를 이용하면 이러한 구분자 차이를
비롯해 mount된 경로 등을 고려하여 C:\\Cygwin\\bin\\sh.exe와 같은 Windows
경로를 /usr/bin/sh.exe와 같은 POSIX 경로로 변환할 수 있으며 반대로도
가능합니다.
실행 파일 및 파일 권한
...
패키지 문서들
/usr/doc이나 /usr/share/doc 밑에 보면 설치된 패키지들의
문서들이 들어있습니다. Cygwin에서의 차이점 등이 기록되어 있으니 참고하시면
도움이 될 것입니다.
참고자료
* [전정호님의 Cygwin란](http://www.whiterabbitpress.com/osp/cygwin/)
* [Cygwin에서 gcc 환경 만들기](http://www.nulunggi.pe.kr/gcc/cygwin/cygwin%EC%84%A4%EC%B9%98.html)
* [cygwin_hanterm](cygwin_hanterm)
