Cygwin이란? 


Cygwin은 Cygnus 라는 회사에서 처음 개발되었는데 현재는 Redhat에서 인수하여 지속적으로 버전업을 하고 있는 Microsoft Windows용 Unix 환경이다. Unix용 응용 프로그램이나 개발도구를 Windows 상에서도 그대로 사용하고자 하는 노력의 결과물이라고 할 수 있다. 

Cygwin은 크게 두 부분으로 이루어져 있는데, 하나는 하부 유닉스 응용프로그램 인터페이스(substantial Unix API)를 제공하는 Unix emulation layer로 DLL(cygwin1.dll) 이고, 다른 하나는 유닉스나 리눅스를 사용하는 느낌을 주도록 Unix에서 포팅된 각종 툴(tool) 모음이다. 

설령 포팅되지 않은 Unix용 프로그램이라도 소스 파일을 다운로드하여 직접 컴파일, 설치하여 사용할 수 있습니다. Cygwin은 Unix나 Linux 환경에 익숙한 사용자나, Unix 환경을 공부하고자 하는 분들에게 좋은 도구라 생각된다. 하지만 이런 말을 하고 있는 필자도 Unix/Linux 에는 문외한이다. :-) 

모든 Golden code Windows 에서 실행될 수 있지만 모바일용 운영체제인 Windows CE 에서는 작동하지 않는다고 한다. 



Cygwin으로 할 수 있는 것들... 


Cygwin 설치 패키지를 확인해 보면 알겠지만, 그 양이 상당한 편이다. 100%는 아니지만 일반적인 Linux 배포판에 들어 있는 패키지와 거의 맞먹는 수준이다. 일반적으로 모든 Linux 패키지를 사용하지는 않는다는 점을 감안한다면 Cygwin 패키지만으로 큰 불편함은 없으리라 여겨진다. 

대표적인 몇가지 프로그램을 언급하자면, Bash Shell, VI editor(VIM), Emacs, Xinet Daemon, OpenSSH Server & Clent, Apache Web Server, GCC와 같은 비롯한 각종 컴파일러, X-window, tar, gzip 과 같은 압축툴, Ghostscript, Midnight Commander 등등이다. 즉, 일반적으로 사용되는 GNU Application 은 거의 지원된다고 보면 된다. 

Bash Shell을 통해 Shell Script 를 사용할 수 있고, OpenSSH 나 Telnet Server 를 통해 원격지 관리가 가능하다. Apache 웹서버로 웹퍼블리싱 또한 가능하다. 리눅스 사용자라면 익숙할 GCC 컴파일러를 통해 프로그램 개발도 가능하다. 

사실 어떤 식으로도 Windows 전용 응용프로그램을 사용하면 거의 모든 작업이 가능하지만 Command line prompt 를 좋아하는 유저라면 Cygwin은 분명 매력적인 도구로 다가올 것이다. 

그럼 Cygwin으로 할 수 없는 것들은? 너무나 당연한 말이겠지만... 할 수 있는 것 빼고는 전부 할 수 없다. :-) 
Unix나 Linux를 배우고자 하는 사람들에게도 감히 권하고 싶지만 착각하지 말아야 할 것은 Cygwin은 Operating System이 아니기 때문에 단순히 Unix에서 사용하는 명령어나 각종 응용 프로그램 사용법 등은 익힐 수 있겠지만 Unix나 Linux의 OS만의 특징은 배울 수 없다. 이런분들은 먼저 별도의 컴퓨터(또는 듀얼부팅)에 x86용 Unix 계열 운영체제(Linux, FreeBSD)를 설치하기를 권한다. 

다운로드 


설치를 하자면 일단 설치파일을 다운 받아야 한다. 설치파일은 Cygwin 공식 사이트에서 다운받을 수 있다. URL은 http://www.cygwin.com/setup.exe이다. 이외에도 미러링 사이트를 이용할 수 있다. 

한가지 재미있는 점은 설치 방식이 Microsoft Internet Explorer와 비슷하다는 점이다. 즉, 설치파일 setup.exe은 말그대로 setup information 만 담겨 있고, 실제 패키지는 웹상에서 다운받는다. 물론 설치파일이 알아서 다운받는다. 다운받을 사이트만 지정해 준다면 말이다. 

이 말이 무슨 말인지 이해가 되지 않아도 상관없다. 실제 설치를 하다보면 쉽게 이해될 것이다. 



설 치 


사실 cygwin 설치는 매우 쉽다. 일반적인 Windows 응용 프로그램을 설치해 본 경험이 있다면 굳이 매뉴얼을 참조하지 않아도 쉽게 할 수 있을 것이다. 하지만 본 사이트에서는 설치 과정을 그림과 함께 자세히 설명할 것이다. 왜? 이것 말고는 달리 넣을 내용이 없기 때문이다. :-) 

1. 설치파일(setup.exe) 실행 
다운로드 받은 설치파일(setup.exe)을 탐색기와 같은 파일관리자에서 실행시키면 다음과 같은 설치마법사가 나타난다. 

 

현재 설치될 Cygwin 버전이 2.249.2.5 임을 알 수 있다. 버전 체계가 꽤나 복잡한듯 보인다. :-) 

2. 설치방법 지정 
3가지 설치옵션이 나타나는데 어렵지 않은 영어이기 때문에 쉽게 이해할 수 있을 것이다. 

Install from Internet : 인터넷을 통해 설치 패키지를 다운로드한 후, 곧바로 Cygwin 을 설치하는 옵션이다. 

Download from Internet : 설치는 하지 않고 단순히 인터넷을 통해 설치 패키지를 자신의 HDD에 다운로드하는 옵션이다. 나중에 Cygwin을 설치하려면 다시 setup.exe을 실행한 다음에 다음 마지막 옵션(Install from Local Directory)를 선택하면 된다. 

Install from Local Directory : 이미 다운로드 받아둔 패키지 파일들을 사용하여 Cygwin을 설치할 때 선택하는 옵션이다. 

Cygwin 처음 설치시에는 일반적으로 첫 옵션을 이용된다. 여기서도 Install from Internet 옵션을 선택하고 설치를 진행하겠다. 

 

3. 설치 위치(Root Directory) 지정 
설치 위치(Root Directory)는 Cygwin에서 Root Directory(/)가 되며, 위치는 어디든 상관없다. 기본값은 "C:\cygwin"이다. 

Install For 옵션은 Cygwin을 자기 자신만 사용(Just Me)할지 아니면 전체 사용자 모두 사용(All Users)할지를 결정하는 옵션이다. 특별한 이유가 없다면 "All Users"를 선택한다. 

Default Text File Type 은 텍스트 문서의 Carrige return과 Line feed를 어떤 형태로 할 것인지 결정하는 옵션이다. 이는 문서작성중에 사용자가 enter(엔터) 키를 눌렀을 때 컴퓨터가 인식하는 문서상의 문단끝 부분에 대한 처리가 두 운영체제에서 다르기 때문이다. Unix 문서는 Carrige return만 있는 것이며, DOS 문서는 Carrige return과 Line feed가 함께 기록된다. (Unix 문서를 DOS 에디터로 열었을 때 한줄로 길게 붙어 나오는 것은 바로 Line feed 문자가 없으므로 DOS 에디터는 모든 문서의 문단이 한 줄인것으로 인식하며, 반대로 DOS 문서를 Unix에서 읽었을 때 line feed 문자인 "^M"이 문단끝마다 나타난다.) 
윈도우즈용 에디터(예:winEdt 등)를 사용한다면 DOS를 선택하고, Emacs for windows를 사용한다면 어떤 것을 선택해도 차이가 없다. 

 

4. 패키지 파일을 다운로드 받을 디렉토리 지정 
인터넷 상에서 다운로드 받을 패키지 파일의 저장위치를 결정하는 단계이다. 역시 위치는 어디든 상관없다. 설치가 모두 종료되면 더이상 필요없기 때문에 삭제해도 무방하다. 하지만 재설치 등을 위해서 가급적 그대로 보관할 것을 권한다. 

 

5. 인터넷 연결 방법 지정 
Direct Connection : 패키지 파일을 다운로드 받을 서버와 사용자의 컴퓨터를 직접 연결하는 옵션이다. 

Use IE5 Settings : Internet Explorer 5에 설정된 인터넷 연결 설정을 그대로 따른다. 자신의 인터넷 연결 방법을 확실히 모를 경우 이 옵션을 선택하면 된다. 

Use HTTP/FTP Proxy : 외부 인터넷과 연결에 프록시 서버를 사용할 경우 프록시 서버의 IP 주소와 Port 번호를 지정하는 옵션이다. 

 

6. 패키지 파일을 다운로드 받을 미러링 사이트 지정 
당연한 얘기겠지만 가급적 속도가 빠르고 회선 상태가 안정적인 서버를 선택한다. 한국내 Cygwin 공식 미러링 사이트로는 아래 그림과 같이 적수네 동네가 있다. 
필자의 경우 두루넷 케이블을 사용하는데 적수네 동네 FTP 서버와 연결 속도가 비교적 좋은 편이다. 평균 600mbps를 유지하고 있다. 하지만 2003년 2월 16일 현재 적수네 동네의 이용이 불가능하다. "setup.ini 파일을 얻을 수 없다는 에러 메시지가 뜬다. 실제 파일은 존재하고 있는데 말이다. 이런 문제를 적수네 동네 이장인 김병찬씨에게 메일로 알렸으니 근시일중으로 수정되리라 여겨진다. 

Cygwin 설치 패키지 크기는 최소로 선택할 경우 15MB 정도이고, 전체선택 할 경우에는 100MB가 훌쩍 넘어가는 것으로 알고 있다.(사실 전체선택은 시도해 본적이 없다. :-)) 때문에 네트워크 연결 속도가 현저하게 낮으면 상당한 시간을 낭비해야 한다. 필자는 예상치 않게 ftp://ftp.mirror.ac.uk 서버를 선택했다. 속도는 보통 30mbps를 유지했고, 다른 서버와의 연결 상태를 확인해 보지 않았다. 

 

7. 설치할 패키지 파일 선택 
미러링 서버를 선택하면 서버로부터 Cygwin 패키지 목록을 다운받아 화면에 출력해 준다. 여기서 사용자가 설치할 패키지를 지정할 수 있다. Redhat Linux 계열 배포판을 설치해 본 경험이 있다면 쉽게 이해할 수 있을 것이다. 
View 옵션으로는 'Category', 'Full', 'Partial' 이 있는데 편할대로 선택한다. 초보자라면 'Category'를, 익숙한 사용자라면 'Full'을 선택하는 것이 좋다. 

카테고리 목록은 다음과 같다. 

Admin(시스템 관리), Archive(파일압축 관련), Base(기본 설치 패키지) , Datebase(데이타베이스 관련), Devel(개발툴 관련), Doc(도움말 관련), Editors(편집기 관련), Games(게임 관련), Graphics(그래픽 관련), Interpreters(인터프리터 언어 관련), Libs(각종 라이브러리), Mail(E-mail 클라이언트), Math(수학용 프로그램), Net(데몬 및 네트워크 툴), Publishing(출판 툴), Shells(명령 해석기), System(시스템 관련 툴), Text(텍스트 처리 툴), Utils(각종 유틸리티), Web(웹용 툴), XFree86(X-window), _PostInstallLast 

사실 필자도 뭐가 뭔지 거의 모른다. :-) 사용하는 패키지가 정해져 있기 때문이기도 하고, 아직까지 Unix 계열 프로그램에 관한 지식이 미천하기 때문이다. 패키지 설명을 보면 대충 감을 잡을 수 있을 것이다. 이것이 귀찮다면 전체선택을 하면 된다. 하지만 필자는 이것을 권하지 않는다. 가급적 패키지별로 설치 여부를 결정하길 권한다. 다소 귀찮더라도 실력향상에 도움이 될 수 있다. 

기본값(default) 선택은 '최소 설치'를 의미하는데 필자가 자주 애용한다. 설치후에 필요한 패키지가 있다면 그때 다시 해당 패키지만 설치하면 그만이기 때문이다. 
Cygwin은 패키지별로 설치, 삭제, 재설치를 지원하기 때문에 설치할 패키지 선택에 너무 많은 고민을 할 필요는 없다. 세상엔 고민할 일이 이 외에도 참 많다. :-) 

한가지 유의할 점은 인터넷상에 곧바로 노출되는 서버용 컴퓨터(Bastion Host)에 Cygwin을 설치할 경우에는 보안을 위해서 꼭 필요한 패키지만을 설치하길 권한다. Cygwin이 보안에 취약하다는 소문(?)이 있다. 

 

위 그림에서 각 필드의 의미는 다음과 같다. 

Category : 설치될 패키지의 종류를 표시한다. 
Current : 현재 설치되어 있는 패키지의 버전를 표시한다. 
New : 새로 설치할 패키지의 버전을 표시한다. 
Bin : 실행파일의 다운로드 여부를 표시한다. 
Source : 소스파일의 다운로드 여부를 표시한다. 
Package : 패키지 목록과 설명을 표시한다. 

 


8. 패키지 다운로드 
패키지 다운로드 진행상황을 보여준다. 현재 다운로드 하고 있는 패키지 이름, 다운로드 비율, 회선 속도 등등... 회선 상태와 사용자가 선택한 패키지의 갯수에 따라 다운로드가 오래 걸릴 수 있다. 

 

9. 패키지 설치 
서버로부터 다운로드가 완료되면 (위에서 설치 옵션으로 'Install from Internet'을 선택하였으므로) 자동으로 Cygwin의 설치가 시작된다. 

 

10. 바로가기 아이콘 생성 
설치가 완료되면 아래 그림과 같이 아이콘 생성 대화상자가 나타나는데, 이 단계에서 바탕화면과 시작 메뉴에 바로가기 아이콘을 생성 여부를 결정할 수 있다. 

 

11. Post-Install Script 설치 
위에서 바로가기 아이콘 생성을 확인하면 곧바로 Post-Install Script 설치 단계로 넘어간다. 사실 필자도 이 단계에서 어떤 일이 일어나는지 아는바가 없다. 그저 설치가 모두 종료되고, 패키지별 설정 파일 등을 생성하는 것으로 추정할 뿐이다. :-) 



12. 설치 종료 

 

13. Cygwin 실행 
설치를 했으니 실행은 해보고 본 '설치 강좌'를 마치는게 좋을것 같다. 
바탕화면이나 시작메뉴에 바로가기 아이콘을 등록하였다면 그 파일을 실행시키면 된다. 만약 바로가기 아이콘을 만들지 않았다면 실제 설치 디렉토리(위의 예에서는 'C:\Cygwin')로 이동하여 Cygwin.bat 파일을 실행시키면 된다. 

정상적으로 실행되었다면 다음과 같이 다소 썰렁한 명령 프롬프트 비슷한 창이 뜰 것이다. 



패키지별 설치 및 제거 


앞서 언급한 바와 같이 Cygwin은 패키지별 설치 및 제거가 가능하다. 예를 들자면, 처음 설치시 VIM을 설치하지 않아도 나중에 언제든 쉽게 VIM 패키지 만을 설치할 수 있다는 것이다. 제거 역시 마찬가지다. 특정 패키지만 제거할 수 있다. 

보다 편한 패키지별 설치 및 제거를 위해서는 처음 설치시 다운로드 받았던 패키지 소스를 그대로 보관하는 것이 좋다. 왜냐하면 Cygwin을 처음 설치시 다운로드 받은 패키지 폴더(위의 예에서는 D:\Cygwin_Source)에 다음 그림과 같이 'setup.log'와 'setup.log.full' 이라는 로그파일을 남겨두어 패키지 설치 정보를 보관해 둔다. 

 

이 로그파일을 통해 Cygwin은 현재 설치된 패키지 목록을 확인할 수 있기 때문에 패키지를 설치/제거/재설치가 용이하다. 

이제 자세한 방법을 알아 보도록 하자. 

1. 패키지별 설치 

처음 Cygwin을 설치할 때와 같이 패키지 소스가 보관된 폴더(여기서는 D:\Cygwin_Source)에 있는 'setup.exe' 를 실행시킨다. 

이후 위에서 설명한 처음 설치 과정을 1번 - 6번까지 동일하게 작업한다. 

7번 단계(설치할 패키지 파일 선택 단계)에서 새롭게 설치할 패키지를 선택하면 된다. 

아래 그림을 보면 빨간색 박스 부분이 처음 설치시와 다르다는 것을 알 것이다. 로그파일에서 이전에 설치된 패키지 목록을 확인하여 이런 패키지는 'Keep'이라고 표시하고 있다. 즉, 이미 설치되어 있으니 그대로 유지하겠다는 것이다. 

 

Skip 이라고 표시된 부분은 아직 설치되어 있지 않으니 새롭게 설치할 수 있음을 의미한다. 

그럼 'Skip' 부분에 마우스를 클릭해 보자. 'Skip'이 숫자로 표시된 버전으로 바뀌고, 옆에 있는 Bin 부분이 'n/a'에서 로 바뀌는 것을 알 수 있다. 이렇게 함으로 새롭게 설치할 패키지를 추가 선택할 수 있다. 

이후 설치 방법은 처음 설치시와 동일하다. 

2. 패키지별 삭제 

패키지별 설치 방법을 이해했다면 패키지별 삭제 방법은 아주 쉽다. 

역시 패키지별 삭제도 Cygwin 처음 설치의 1번 - 6번까지 동일하게 작업한다. 

7번 과정(설치할 패키지 파일 선택 - 위의 그림)에서 'keep' 부분을 마우스로 클릭해 보자. 마우스를 클릭할 때마다 여러가지로 바뀜을 알 수 있다. 즉, keep → Reinstall → Source → Uninstall 로 바뀐다. 

이를 간단하게 설명하자면... Keep 은 현재 설치된 패키지 유지, Reinstall 은 말그대로 재설치, Source는 패키지의 소스 파일도 다운로드 하겠다는 뜻이다. 마지막으로 Unistall이 바로 패키지를 삭제하겠다는 의미이다. 


따라서 기존에 설치된 패키지를 삭제하기 위해서 단순히 'Keep' 을 'Uninstall' 로 바꾸면 된다, 

이후 과정은 처음 설치시와 거의 동일하다. 



제 거 


경우에 따라 Cygwin을 자신의 시스템에서 완전히 제거해야 할 경우가 있을 수 있다. 이제부터 이미 설치되어 있는 Cygwin을 제거하는 방법에 대해서 알아보겠다. 

Cygwin 제거 방법은 매우 쉽지만, 일반적인 Windows 응용 프로그램과는 달리 Cygwin은 별도의 Uninstall 프로그램을 지원하지 않기 때문에 다음과 같이 수동으로 삭제해야 한다. 

1. 프로세스 및 서비스 제거 
OpenSSH나 Inetd 와 같은 서비스를 설치한 경우에는 Windows Service에 등록되므로 Cygwin을 제거하기에 앞서 이를 내려 주어야 한다. 서비스를 제거하는 방법은 아주 간단하다. Cygwin상에서 cygrunsrv (cygrunsrv -R ) 툴을 이용하거나 Windows NT/2000 리소스 킷중 srvinstw.exe 나 instsrv.exe 를 이용할 수 있다. 

2. 파일 허가권 및 소유권 확인 
NTFS 파일시스템에서 NTSEC을 사용하고 있다면 Cygwin상의 chmod (cd / ; chmod -R 644) 명령어를 통해 원래대로 돌려야 한다. 즉, 관리자(Administrators)가 모든 권한을 갖도록 설정한다. 이 작업은 Windows 상에서도 가능하나 경험상 불가능한 경우도 있다. 

3. Windows 환경설정(변수) 수정 
위의 경우와 같이 Cygwin에서 특정 서비스를 설치하거나 사용자가 직접 Windows 시스템의 환경설정(변수)를 변경한 경우 Cygwin이 설치되기 이전의 상태로 돌려야 한다. 

4. 설치 디렉토리 삭제 
설치 위치가 "C:\cygwin" 이라면 탐색기와 같은 파일 관리자를 통해 해당 디렉토리를 통채로 지운다. 명령 프롬프트에서는 "rmdir /s /q C:\Cygwin" 

5. 레지스트리 삭제 
레지스트리 편집기(시작→실행→regedit.exe)를 실행시켜 다음 3개의 키(key)를 삭제한다. 
"HKEY_LOCAL_MACHINE\SOFTWARE\Cygnus Solutions" 
"HKEY_CURRENT_USER\Software\Cygnus Solutions" 
"HKEY_USERS\.Default\Software\Cygnus Solutions " 

위 2개의 키만 삭제하더라도 별 문제는 없지만 자신의 시스템에서 Cygwin의 흔적을 완전히 제거하고 싶다면 레지스트리 편집기에서 'cygwin'으로 검색하여 검색된 모든 키(key)를 삭제하면 된다. 

6. 바로가기 아이콘 삭제 
"C:\Documents and Settings\All Users\시작 메뉴\프로그램\Cygwin" 
"C:\Documents and Settings\All Users\바탕 화면\Cygwin" 

[펌]http://www.ezbox.net/cygwin/setup.asp#setup-1

+ Recent posts