게시일 : 2003년 2월 20일

 

rxvt는 xterm과 비슷한 X-Window 터미날 에뮬레이터이다. 컬러를 지원하고, 메모리를 적게 소모하는 장점이 있습니다.

원래 목적은 xterm을 대체하기 위해서 탄생되었지만 Cygwin에서는 Windows 명령 프롬프트를 대체하기 위해서 사용될 것이다. 한가지 특이한 것은 rxvt는 X-Windows용이지만 Cygwin에서는 X-Window 없이도 바로 실행된다.

Cygwin에서 rxvt의 장점은 빠르고 한글도 깨끗하게 출력해 준다. 또한 풀 스크린(full screen)을 지원해 준다.

원래 생김새는 이렇지 않는데 필자가 옵션을 몇가지 수정하여 Windows의 명령 프롬프트와 비슷하게 만들었다. 하지만 분명 Windows 명령 프롬프트와는 다르다는 것을 알 수 있다.

rxvt는 Cygwin을 기본설치할 경우 디폴트로 설치되지 않기 때문에 따로 추가해 주어야 한다. 설치는 어렵지 않으니 따로 설명하지 않겠다.

Windows 명령 프롬프트를 버리고 rxvt를 Cygwin 전용 콘솔로 사용하고 싶은 사용자는 cygwin.bat 파일을 다음과 같이 수정해 주면 된다.

REM Cygwin.bat
REM Cygwin을 시작하는 배치파일

@echo off

cd /d c:\cygwin\bin
rxvt -tn xterm -rv -sr -sw -sl 1000 -sbt 15 -fn fixedsys -e /bin/bash --login -i

rxvt -help를 참조하면 rxvt 의 글꼴, 배경색 등 다양한 옵션을 확인할 수 있다.

AND

게시일 : 2003년 2월 20일

제목이 약간 애매한 부분이 없지않아 있는데 간단한 내용이다. cygwin을 실행하지 않은 상태, 즉 그냥 Windows 명령 프롬프트에서 cygwin 명령어를 바로 사용할 수 있는 방법을 소개하고자 한다.

Windows 사용자이든 Unix 사용자이든 path라는 말을 들어 보았을 것이다. 이는 운영체제의 환경변수로서 '실행 파일을 찾는 경로(순서)' 정도로 이해될 수 있는데, Windows Path에 cygwin의 명령어들이 들어 있는 폴더를 넣어두면 명령프롬프트에서도 바로 cygwin 명령어를 사용할 수 있다.

필자는 영문버전 Windows 2003 Server RC2 버전을 사용하는 관계로 사용자의 컴퓨터와 약간 달리 보일 수 있는데 실제 설정하는 내용은 다르지 않으니 착오없기 바란다.

한글 Windows 2000/XP 에서는 "제어판→시스템→고급→환경변수→시스템 변수→path 선택→편집" 에서 내용을 수정하면 된다.

그림은 C 드라이브 루트에 설치된 cygwin을 환경변수에 넣는 모습이다. cygwin1.dll 및 각종 명령어들이 위치하고 있는 디렉토리는 C:\cygwin\bin 이므로 C:\cygwin\bin; 이라 입력하면 된다. Unix와 달리 Windows의 path 구분자는 ':'이 아니라 ';'임에 유의한다.

명령프롬프트상에서 cygwin을 바로 실행시키기 위해서는 C:\cygwin에 있는 cygwin.bat 파일을 %systemroot%\system32 등과 같이 Windows Path가 걸려있는 폴더에 복사해 두면 된다.

참고로 Cygwin은 Windows Path를 자동으로 인식하기 때문에 Cygwin에서는 쉽게 Windows 명령어를 실행시킬 수 있다.

path 설정을 마쳤다면 위 그림에서 처럼 명령프롬프트상에서도 cygwin 명령어가 잘 실행됨을 알 수 있다.

AND

게시일 : 2003년 2월 20일

 

Cygwin을 처음 소개할때도 밝혔지만 Cygwin 명령어들은 자신이 현재 Unix 운영체제에서 작동하는 것으로 착각하고 있다. 이러한 환경을 제공해 주는 것이 cygwin1.dll 파일이라는 것도 이미 밝힌바 있다.

그래서 Cygwin상에서 작업을 할때는 디렉토리 경로를 DOS 스타일(\)이 아닌 Unix 스타일(/)로 구분해 주어야 한다. 이 정도는 이미 다 알고 있으리라 믿는다.

그렇다면 Cygwin에서 Windows의 다른 드라이브(D:, E:, F:)로의 이동은 어떻게 가능할까? Cygwin은 설치되면서 자동으로 Windows상의 드라이브를 /cygdrive 에 마운트를 한다. 아래 그림을 보면 쉽게 이해할 수 있을 것이다.

이 그림을 이해했다면 다음 그림을 한번 살펴보자. 실제 이동방법을 보여주고 있다.

간단하게 cd d: 라고 입력하고 실행시키면 d: 드라이브로 이동하는 것을 알 수 있다. 두번째로 직접 cd /cygdrive/e 라고 입력해도 e: 드라이브로 이동한다. 어떤 방법을 이용하더라도 상관은 없다. 사용자 마음이다. :-)

노파심에서 알려드리지만 Windows 콘솔상에서 처럼 그냥 d: 만 입력하고 실행하면 절대 d: 드라이브로 이동하지 않는다. 참고하기 바란다.

AND

게시일 : 2003년 2월 20일

 

Windows 시스템 정보를 아는 방법은 여러가지가 있겠지만 가장 빠른 방법은 대체로 'winver' 명령을 통해 알 수 있다. 그렇다면 Cygwin 정보(버전 등)는 어떻게 알 수 있을까? 바로 uname 명령을 통해 알 수 있다.

리눅스 배포판 사용자라면 아주 친숙한 명령어 일텐데... 예상하겠지만 uname은 Unix name의 약칭이다.

uname에는 몇가지 옵션이 있는데 가장 자주 사용되는 옵션이 uname -a이다. 즉, -a는 all 로서 모든 정보를 출력하라는 옵션이다.

간단하게 위의 결과물을 설명하자면...

CYGWIN_NT-5.2

Cygwin의 커널 이름이다. 여기서는 NT 5.2(Windows Server 2003)에서 작동하는 Cygwin이라는 뜻이다.

wonho

호스트 네임

1.3.20(0.73/3/2)

커널 버전

2003-02-08 12:10

커널 출시일(release date)

i686

프로세서(CPU) 종류를 뜻한다. 여기서는 Intel Pentium 2-3 기종이라는 뜻이다.

unknown unknown

하드웨어 플랫폼 등을 의미하는데 정확하게 인식하지 못하고 있다.

Cygwin

운영체제 이름

AND

게시일 : 2003년 2월 19일

 

Cygwin을 설치한 이후에 Windows상에서 사용자 계정이나 그룹을 추가한 경우 Cygwin에서 이를 바로 인식하지 못하기 때문에 수동으로 사용자/그룹을 추가시켜 주어야 한다.

Cygwin에서 사용자를 관리하는 파일은 리눅스 배포판과 마찬가지로 /etc/passwd 이고, 그룹을 관리하는 파일은 /etc/group 이다. 이 파일들을 사용자가 직접 편집해도 되지만 이를 자동화해 주는 툴(명령어)이 있다. 바로 mkpasswdmkgroup이다.

mkpasswd

$ mkpasswd -l > /etc/passwd

'-l' 옵션은 로컬 사용자를 추가할때 사용된다.

 

$ mkpasswd -d ezbox > /etc/passwd

'-d' 옵션은 도메인 사용자를 추가할때 사용된다.

위 예는 ezbox 도메인 사용자 계정을 /etc/passwd 파일과 동기화시키는 것이다. 만약 추가된 사용자(ex. lion21)의 Windows 홈폴더가 도메인내 다른 컴퓨터(ex. WIN_SVR)에 있는 경우 그 사람의 홈디렉토리는 \\WIN_SVR\home\lion21 이다. home은 공유명이다.

mkgroup

$ mkgroup -l > /etc/group

'-l' 옵션은 로컬 그룹을 추가할때 사용된다. 이는 'mkpasswd -g'와 동일하다.

 

$ mkgroup -d ezbox > /etc/group

'-g' 옵션은 도메인 그룹을 추가할때 사용된다.

AND

게시일 : 2003년 3월 11일

  1. OpenSSh란?

  2. OpenSSH Setup

    Cygwin에서 OpenSSH 데몬을 설치하는 것은 매우 쉽고 간단하다. 편안한 마음으로 따라하기 바란다.

    1. 환경 변수 설정

      Cygwin에서 OpenSSH가 제대로 작동하기 위해서는 몇가지 환경 변수를 설정해야 한다.

      [시작]→[제어판]→[시스템]→[고급]→[환경 변수]→[시스템 변수]로 이동해서 "새로 만들기" 버튼을 눌러 "CYGWIN"이란 변수를 만들고, 값을 "ntsec tty"로 설정한다. CYGWIN=ntsec tty

      Windows NT/2000/XP의 파일 시스템이 FAT32라면 'ntsec' 옵션은 그다지 도움이 되지 않는다. 이 경우 그냥 "CYGWIN=tty"라고 설정한다.

      다음으로 Path 추가를 한다. 역시 [시작]→[제어판]→[시스템]→[고급]→[환경 변수]→[시스템 변수]에서 PATH 변수에 "C:\cygwin\bin" 경로를 추가한다. Path : ;C:\Cygwin\bin

    2. OpenSSH 패키지 파일 설치

      Cygwin이 이미 설치되어 있다는 것을 가정하고, 추가로 OpenSSH 패키지 파일만 설치하는 것을 설명하겠다. Cygwin 설치는 위의 뉴중 설치 및 제거 페이지를 참조하기 바란다.

      OpenSSH 패키지 파일 설치는 Cygwin 설치와 동일하게 진행하다가 7. 설치할 패키지 파일 선택에서 다음의 패키지만 추가시키면 된다.

      Admin Category → cygrunsrv, Net Category → openssh (이를 선택하면 openssl과 openssl096 패키지가 자동으로 선택된다.)를 선택하여 설치한다. 이후 과정은 Cygwin 설치와 동일하다.

      물론 vim과 같은 텍스트 편집기는 기본적으로 필요하다.

    3. Bash 설정 (옵션)

      설치가 완료되었다면 편리성을 위해 bash 튜닝(profile, alias)을 해준다. 이에 관한 내용은 Bash 설정 페이지를 참조한다.

    4. OpenSSH 설정(구성)

      Cygwin으로 로그인하여 "ssh-host-config -y" 라고 입력하고 실행한다. 이 명령은 필수 구성 파일과 디렉토리를 생성한다. 마지막에 "CYGWIN=" 프롬프트가 나타나면 첫번째 단계에서 만든 CYGWIN 환경 변수 값을 입력한다. "CYGWIN=ntsec tty"

    5. 서비스 등록 완료

      SSH 서비스가 로컬 시스템 계정하에서 성공적으로 설치되었음을 알려준다.

    6. 관련 파일에 대한 허가권과 소유권 변경

      이는 OpenSSH 서버 설치와는 직접적인 연관은 없지만 보안사항을 고려하여 설정하는 것이다.

    7. SSHD 서비스 기동 및 테스트

      "cygrunsrv -S sshd" 명령을 통해 SSHD 서비스를 시작시키고, "ssh localhost"로 정상적으로 서비스가 작동하는지 테스트 해 본다.

  3. OpenSSH Testing

AND

Bash 설정

관심사.../Cygwin 2008. 10. 20. 05:59

작성자 : 정원호 (lion21@nownuri.net)
편집자 : 정원호 (lion21@nownuri.net)
최초 게시일 : 2003년 2월 17일

 

Windows를 설치한 후 사용자의 구미에 맞도록 여러가지 설정을 바꾸게 되는데 Cygwin도 마찬가지이다. 그나마 Windows는 사용자가 그럭저럭 사용할 수 있는 상태로 설치가 되지만 Cygwin은 반드시 설정변경을 통해서만 사용 가능한 일들이 있다. 한글 입출력 설정 등이 그 대표적인 예이다.

이와 같은 작업은 주로 운영체제의 쉘에서 많이 이루어 지는데 Cygwin은 기본으로 Bash 쉘을 사용한다. 때문에 어느정도 Bash를 이해할 필요가 있다. 결국 본 페이지에서는 Cygwin을 설치한 후에 기본적으로 해야 할 일을 언급한다고 보면 된다.

 

Bash 개괄

Bash는 GNU Bourne-Again SHell의 약자로서, Unix 운영체제에서 사용되는 여러가지 쉘중 하나이다. 쉘(Shell)은 '대화형 사용자 인터페이스' 로 해석되는데, 이를 보다 쉽게 설명하자면 운영체제의 구성요소중 '사용자가 입력하는 명령어를 이해하고, 실행하는 역할을 수행하는 기능'을 말한다. 쉘은 운영체계의 외곽계층으로서, 운영체계의 가장 안쪽계층이면서 서비스의 핵심을 담당하는 커널(Kernel)과 자주 비교하여 설명된다.

MS-DOS의 command.com 이나 Windows의 explorer.exe 또는 cmd.exe 와 동일한 역할을 수행한다고 생각하면 쉽게 이해가 될것 같다. 하지만 그 기능은 감히 Windows의 그것들과는 비교할 수 없을 정도로 아주 막강하다.

Cygwin이나 Linux 배포판에서 Bash의 환경 설정은 다음과 같은 파일이 담당하고 있다.

위의 6개의 파일은 크게 2가지로 분류될 수 있는데 시스템 전체에 적용되는 것(/etc/bashrc, /etc/profile)과, 개별 사용자에게 적용되는 것(.bashrc, .bash_profile, .bash_logout, .inputrc)이다. '$HOME'은 개별 사용자의 홈 디렉토리를 의미한다.

최종적으로 사용자 환경은 시스템 규모와 사용자별 파일이 함께 적용되는데 두개의 내용이 서로 충돌하는 경우 사용자별 파일이 우선된다.

한글 입출력 문제 해결 및 alias 설정

1byte 문자권을 대상으로 출시되는 Cygwin에서 한글 입출력에 문제가 있다는 것은 어찌보면 당연한 것일 수도 있다. 하지만 우리는 한글을 사용하는 한국인이 아닌가? 어쩔 수 없이 우리 힘으로 해결해야 한다.

Cygwin에서 완벽한 한글 입출력은 사실 쉽지 않은 문제이다. 하지만 기본적으로 사용, 즉 Cygwin 콘솔 상에서 한글을 쓰고, 읽을 수 있는 정도는 그리 어렵지 않게 해결 할 수 있다.

아무 작업도 하지 않은 상태에서 한글 파일파일 리스트는 다음 그림과 같이 출력된다. :-(

한글 입출력 문제는 해결하기 위해서는 위에서 언급한 Bash 설정 파일(/etc/profile, /etc/bash.bashrc, /etc/inputrc, $HOME/.bash.profile, $HOME/.bashrc, $HOME/.inputrc)을 조금 수정해야 한다.

먼저 시스템 규모 단위로 설정을 할 것인지 아니면 사용자별 설정을 할 것인지 결정해야 한다. 여기서는 여러 사용자 계정이 존재하는 Windows Server를 지원하기 위함이기 때문에 시스템 규모로 설정을 할 것이다. 사실 사용자별 설정과 별반 다를바 없다.

  1. /etc/profile 수정

    /etc 디렉토리를 보면 profile과 profile.default 파일이 존재하는데 이중 profile을 삭제하고, profile.default 파일을 profile로 이름을 바꾼다. 사실 이 작업은 수행하지 않아도 별 상관은 없지만 profile.default 파일에 몇가지 유용한 스크립트가 들어있기 때문에 가급적 이 파일을 아용한다.

    이름을 바꾸었다면 vi와 같은 텍스트 편집기를 통해서 profile 파일을 열고 다음 내용을 추가한다.

if [ -f /etc/bash.bashrc ] ; then
   source /etc/bash.bashrc
fi

if [ -z "$INPUTRC" -a ! -f "$HOME/.inputrc" ]; then
   INPUTRC=/etc/inputrc
fi

  1. /etc/inputrc 작성 및 수정

    기본값으로 inputrc 파일이 존재하지 않는데 /etc 디렉토리에 새로 만들고, 다음 내용을 추가한다.

set meta-flag on
set convert-meta off
set output-meta on
set completion-ignore-case on
set bell-style visible
set horizontal-scroll-mode on
set show-all-if-ambiguous on

# 터미널 자체의 8비트 문자 지원여부와 상관없이 8비트 입력을 가능하게 함.
# 8비트 문자를 변환하지 않도록 함.
# 8비트 문자를 출력할 때 그대로 출력하도록 함.
# 자동 완성 기능을 사용할때 대소문자를 구별하지 않음.
# 콘솔에서 나는 비프음(beep)이 나지 않게 함.
#
#

  1. /etc/bash.bashrc 수정

    Cygwin에서는 여느 Linux 배포판과 달리 bashrc가 아니고 bash.bashrc인데 이 파일을 열어 다음 내용을 추가한다.

alias ls='ls -F --color=auto --show-control-char'
alias l.='ls -dl .[a-zA-Z]*'
alias ll='ls -al'
alias cp='cp -i'
alias mv='mv -i'
alias rm='rm -i'

# 아래 설명 참조
# 숨김 파일을 표시함.
# 숨김 파일을 비롯해서 모든 파일 및 디렉토리를 자세하게 표시함.
# 만약 복사대상 파일 이미 있는 경우 사용자에게 이를 알림.
# 대상 파일이 이미 있어, 사용자에게 어떻게 처리할지를 물어봄.
# 각 파일을 하나씩 지울 것인지 사용자에게 일일이 물어봄.

첫줄 alias ls='ls -F --color=auto --show-control-char'에 대해 간단히 설명하자면...

-F는 파일 형식을 알리는 문자를 각 파일 뒤에 추가하는 것으로, 실행파일은 "*", 경로(디렉토리)는 "/", 심볼릭 링크는 "@", FIFO는 "|", 소켓은 "=", 을 표시해 준다. --color=auto는 파일의 형태에 따라 그 파일의 색깔을 다르게 보여주는 기능이고, --show-control-char는 한글을 제대로 출력해 주는 기능이다.

alias 라는 용어가 자주 등장하는데 대부분 아는 내용이겠지만 노파심에서 잠깐 언급하겠다.

CUI 기반 환경에서 작업 속도를 향상시키기 위해서는 타이핑 횟수를 최소화할 필요가 있는데 이때 유용하게 사용할 수 있는 것이 alias이다. 복잡한 옵션과 함께 자주 사용되는 명령어를 짧게 줄여주는 기능이라고 생각하면 되겠다.

실제 'ls -F --color=auto --show-control-char' 라고 입력해야 할 것을 그냥 'ls'라고만 입력해도 시스템 내부적으로는 동일한 결과가 발생하기 때문에 매우 자주 사용된다. 현재 시스템에 적용된 alias 정보를 확인하기 위해서는 콘솔창에서 'alias'라고만 입력하면 된다.

  1. 퍼미션 수정

    파일 편집을 모두 마쳤다면 마지막으로 다른 사용자들도 파일을 읽을 수 있도록 퍼미션을 수정해 준다.

chmod 644 profile bash.bashrc inputrc

이제 모두 끝났다. 모든 사용자들이 완벽하지는 않지만 별 무리없이 한글을 사용할 수 있을 것이다. 또한 기본 alias 설정도 이용할 수 있다.

혹시나 사용자별 정의를 하고 싶은 경우에는 위의 2, 3번 내용을 사용자 홈디렉토리의 .inputrc, .bashrc 파일에 각각 넣어 주면 된다. 이때 /etc/skel 디렉토리를 이용하면 편리한데 이 곳에 모든 사용자에게 적용되는 내용을 담은 .bash_profile, .bashrc, .inputrc 파일을 넣어두면 사용자 홈폴더가 생성될때마다 자동적으로 복사되기 때문이다.

기타 환경 설정

  1. 홈디렉토리($HOME) 이동하기

    Cygwin에서 루트 디렉토리(/)가 'C:\cygwin' 이라고 가정할때 사용자 홈디렉토리(/home/user)는 C:\cygwin\home\user 이다. 하지만 이 동일 사용자의 Windows 홈디렉토리는 C:\Documents and Settings\user 이다. 즉, 같은 사용자가 2개의 홈디렉토리를 갖게 된다.

    위와 같이 운영하여도 상관은 없지만 어차피 동일한 사용자라면 역시 동일한 홈디렉토리를 사용하는 것이 좋을 것이다.

    이제부터 Cygwin상의 홈디렉토리와 Windows상의 홈디렉토리를 같게 하는 방법을 알아 보자.

    이때 사용할 수 있는 방법이 바로 mount 이다. mount의 개념은 다 안다고 가정하고 따로 설명하지는 않겠다. 주의할 점은 Unix 운영체제에서의 mount와 지원하는 옵션과 문법이 약간 다르다는 것이다.

    아래 그림은 Cygwin mount 의 도움말이다. 참고하기 바란다. 사실 필자는 무슨 얘긴지 잘 모르겠다. :-)

    이 정도면 필자가 무슨 짓(?)을 할려지는 대충 눈치를 챌 수 있을 것이다. 그렇다. /home을 C:\Documents and Settings 로 마운트하려는 것이다.

    먼저 C:\cygwin\home 을 빈디렉토리로 만든다. 'rm -rf'를 이용하면 모든 사용자의 홈디렉토리를 삭제할 수 있다. 만약 Permission Denied 문제가 발생하면 시스템을 리부팅한 후에 다시 작업하면 된다. 이런 이유가 발생하는 이유는 필자도 잘 모른다. 혹시 알고 있다면 알려주기 바란다. 아무튼 리부팅하면 잘 지워진다. 역시 Windows 이다. :-(

[root@wonho home]$ rm -rf *

이제 마운트만 하면 된다.

[root@wonho /]$ mount "C:\Documents and Settings" /home

특별한 옵션을 주지 않아도 잘 작동하는 듯 보인다. 이제 제대로 마운트가 되었는지 확인해 보자.

실제 /home 으로 이동해 보면 "C:\Documents and Settings" 의 내용물이 정상적으로 보이는 것을 확인할 수 있다. 이외에도 자주 사용하는 폴더(ex. C:\Windows\System32)가 있다면 역시 마운트하여 사용하면 편리할 것이다.

  1. 프롬프트 변경

    Linux 배포판의 프롬프트에 익숙해진 탓인지 Cygwin의 기본 프롬프트는 별로 볼품이 없어 보인다. 현재 작업 경로를 자세하게 보여주는 장점이 있긴 하지만 진짜 Unix 운영체제처럼 사용하고 싶은 사용자는 프롬프트를 바꿔 보자.

    시스템 규모의 프롬프트 설정는 /etc/profile 에서 정의한다.

    Cygwin 기본 값을 다음과 같이 바꿔 보자.

export PS1='\[\033]0;\w\007
\033[32m\]\u@\h \[\033[33m\w\033[0m\]

export PS1='[\u@h \W]\$ '

그럼 다음과 같이 명령 프롬프트가 변경될 것이다. 훨씬 깔끔하지 않는가? :-)

VI(VIM) 편하게 쓰기


 

작성자 : 정원호 (lion21@nownuri.net)
편집자 : 정원호 (lion21@nownuri.net)
최초 게시일 : 2003년 2월 16일

 

다운로드

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

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

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

설   치

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

Category

: 설치될 패키지의 종류를 표시한다.

Current

: 현재 설치되어 있는 패키지의 버전를 표시한다.

New

: 새로 설치할 패키지의 버전을 표시한다.

Bin

: 실행파일의 다운로드 여부를 표시한다.

Source

: 소스파일의 다운로드 여부를 표시한다.

Package

: 패키지 목록과 설명을 표시한다.

패키지별 설치 및 제거

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

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

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

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

  1. 패키지별 설치

    1. 처음 Cygwin을 설치할 때와 같이 패키지 소스가 보관된 폴더(여기서는 D:\Cygwin_Source)에 있는 'setup.exe' 를 실행시킨다.
    2. 이후 위에서 설명한 처음 설치 과정을 1번 - 6번까지 동일하게 작업한다.
    3. 아래 그림을 보면 빨간색 박스 부분이 처음 설치시와 다르다는 것을 알 것이다. 로그파일에서 이전에 설치된 패키지 목록을 확인하여 이런 패키지는 'Keep'이라고 표시하고 있다. 즉, 이미 설치되어 있으니 그대로 유지하겠다는 것이다.

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

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

    4. 이후 설치 방법은 처음 설치시와 동일하다.
  2. 패키지별 삭제

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

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

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

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

제   거

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

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

  1. 프로세스 및 서비스 제거

    OpenSSH나 Inetd 와 같은 서비스를 설치한 경우에는 Windows Service에 등록되므로 Cygwin을 제거하기에 앞서 이를 내려 주어야 한다. 서비스를 제거하는 방법은 아주 간단하다. Cygwin상에서 cygrunsrv (cygrunsrv -R <service-name>) 툴을 이용하거나 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"


Cygwin 소개

관심사.../Cygwin 2008. 10. 20. 05:40

작성자 : 정원호 (lion21@nownuri.net)
편집자 : 정원호 (lion21@nownuri.net)
최초 게시일 : 2003년 2월 15일

이 곳은 레드햇의 Cygwin에 관한 곳입니다. 다들 아시겠지만 Cygwin은 Windows상에서 유닉스 어플리케이션을 구동하기 위한 POSIX 에뮬레이터입니다.

제가 Cygwin을 알게된 계기는 윈도우상에서 작동하는 vi 편집기를 찾으면서입니다. 인터넷상에서 우연히 알게되었는데 멋모르고 설치하다가 50메가 정도의 덩치에 놀라 기절하는줄 알았습니다. 그땐 Cygwin이 vi 편집기인줄 알았으니까요... :-) 이렇게 시작한 Cygwin 이 이젠 애용품이 되어 버렸습니다.

시작하기 전에 광고말씀(?)이 있겠습니다.

여러분들이 Cygwin을 사용하는 이유는 다들 제각각이겠지만 저는 Windows 2000 Server 의 시스템 관리가 주목적입니다. 따라서 이 곳에서는 Unix 프로그래밍이나 Unix 용 응용프로그램(ex. teTeX, gnuplot 등) 사용법 등은 다루지 않습니다. 제가 아는 바가 전혀 없기 때문이죠. :-)
또한 본 사이트에 올려진 내용들은 제가 터득(?)한 것도 있겠지만 다른 여러 사이트에서 참조한 것들이 대부분임을 밝힘니다.
마지막으로 편의상 존칭은 생략하도록 하겠으니 양해 부탁드립니다.

 

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은 GNU GPL(General Public License)를 적용받고 있다. 쉽게 말해서 한국인이 좋아하는 '공짜'라는 것다. 더더욱 좋은 것은 프로그램 소스(Source)까지 함께 제공받을 수 있다는 것이다. 실력만 있다면 누구나 소스를 수정할 수 있고 이를 자유롭게 배포할 수 있다.

[ GNU GPL 원문 ]     [ GNU GPL 한국어 번역문 ]

Cygwin 관련 정보 얻기

AND