Cygwin

내위키
Dennis (토론 | 기여)님의 2021년 11월 24일 (수) 22:46 판

Cygwin.

웹사이트는 당연히 www.cygwin.com.

원래는 시그너스 솔루션에서 만든 윈도우 운영체제용 리눅스 에뮬레이터.[1] 지금은 레드햇이 인수해서 개발을 계속하고 있다. 홈페이지에서 무료로 다운로드 받을 수 있다.

윈도우 환경 안에서 GNU 유틸리티를 비롯한 각종 리눅스 프로그램을 쓸 수 있도록 이식한 소프트웨어 패키지다. 32비트와 64비트용이 있다. VMWare하이퍼-V와 같은 가상머신 프로그램으로 가상 컴퓨터를 하나 만들어서 리눅스 같은 다른 운영체제를 설치할 수도 있지만 이 경우에는 윈도우 파일 시스템과 분리되어 별개의 컴퓨터처럼 동작한다. 반면 시그윈은 POSIX API를 지원하는 cygwin1.dll이라는 동적 라이브러리를 기반으로 기존의 윈도우 파일 시스템 위에 얹혀서 돌아간다. 따라서 윈도우 시스템 안에 있는 파일이나 디렉터리에 손쉽게 접근할 수 있는 게 장점이다. bash로 들어가면 기본 파일시스템은 리눅스와 똑같은 구조지만[2] /cygdrive/c, /cygdrive/d 같은 식으로 윈도우의 C, D 드라이브로 접근할 수 있다. 심지어는 Cygwin 쉘에서 윈도우 응용프로그램을 실행할 수도 있다. notepad 처럼 이미 패스 지정이 되어 있으면 곧바로 실행할 수 있다. 반면 리눅스용으로 바이너리 패키지화 된 프로그램을 바로 설치해서 쓸 수는 없다. 시그윈에서 제공하지 않는 프로그램은 정 필요하면 직접 컴파일해서 써야 한다. 대신 시그윈의 명령 프롬프트에서 윈도우 프로그램의 이름을 입력해서 실행시키는 것은 가능하다. 또한 컴퓨터에서 가상머신을 돌리는 건 램도 많이 잡아먹고 부하가 많이 걸리며 속도가 느려 터지지만 시그윈은 시스템 자원도 덜 먹고 속도도 빠르다.[3]

처음에는 Bash 쉘과 GNU 유틸리티 일부 정도만 쓸 수 있었지만 이제는 X윈도우를 띄우고 KDE그놈을 돌릴 수 있는가 하면 아파치 웹서버도 이식되었다. PHP는 당연히 쓸 수 있고, MySQL도 윈도우용을 설치한 다음 PHP로 연결할 수 있다. 아예 MySQL이나 PostgreSQL을 시그윈 용으로 이식하는 프로젝트도 있으니. 윈도우가 깔린 컴퓨터에서 시그윈을 이용해서 웹서버를 돌리는 것도 가능하다. 그럴 거면 그냥 리눅스를 쓰시지요. 시그윈을 설치하는 과정에서 설치할 수 있는 소프트웨어 패키지의 목록을 볼 수 있는데 정말 광범위하다. GNU C 컴파일러도 이식되었기 때문에 리눅스 환경의 컴파일 및 빌드에 익숙하다면 소스코드로부터 빌드해서 시그윈에서 쓸 수도 있다. 다만 X윈도우 쪽 프로그램들은 속도가 많이 느리므로 그냥 쓸 수 있다는 것에 의의를 두는 게 속 편하며, 웹서버를 비롯한 서버용으로 쓰는 것 역시 피하는 것이 좋다.

커널 자체는 윈도우기 때문에 리눅스 시스템을 대신하기에는 한계가 있고 모든 소스코드가 호환되는 것도 아니다. 기본 제공되는 명령도 리눅스에 비하면 기능이 많이 부족한 것들이 눈에 띈다. 그 대표격이 ps 명령인데, 옵션 목록을 보면 리눅스에 제공되는 ps와 비교해 볼 때 선택의 폭이 정말 적다. 또한 기본적인 bash 명령 중에서도 지원이 아예 안 되는 것도 상당수 있다.

그래도 리눅스에 익숙한 사람들이 윈도우 깔린 컴퓨터를 리눅스 방식 쉘로 관리하고 싶다든가 할 때는 무척 쓸만하다. 윈도우 GUI는 쉽지만 번거롭고, MS-DOS와 다를바 없는 명령 프롬프트는 bash에 비하면 기능이 많이 부실하다. 딴 거 다 필요 없고 단지 윈도우 환경에서 bash 쓰려고 시그윈 쓰는 사람들이 많다.[4] 좀 더 나가자면 ssh, ftp, telnet 같은 텍스트 기반의 네트워크 접속도 리눅스 식으로 쓸 수 있어서 편하다.

설치는 간단해서, setup-x86.exe (32비트 버전) setup-x86_64.exe (64비트 버전) 중 하나를 설치하면 된다. 설치하는 과정은 마법사 인터페이스로 쉽게 따라가면 되는데, 다운로드 사이트를 선택할 때에는 국내의 미러 사이트인 http://ftp.kaist.ac.kr을 선택해 주면 된다. 그러면 패키지 리스트를 받아서 설치하고 싶은 것을 설치할 수 있도록 목록이 뜨는데, 원하는 것을 체크하면 된다. X윈도우를 설치하고 KDE그놈도 설치할 수도 있지만 아무래도 느리니 지나치게 기대하지는 말자.

리눅스의 yum이나 api-get 같은 소프트웨어 패키지 관리자가 하는 일은 설치프로그램이 대신해 준다. 패키치의 설치와 삭제, 관리, 업그레이드를 모두 해 준다. 패키지를 업데이트하고 싶으면 설치 프로그램을 다시 실행시켜 주면 된다. 설치된 버전과 저장소에 있는 버전을 비교해서 새 버전이 있으면 업데이트해 준다. 시그윈 자체의 버전이 올라갔을 때에도 마찬가지로 설치 프로그램을 다시 받아서 실행시켜 주면 된다.

윈도우가 오픈 소스 친화 정책으로 돌아서면서 아예 가상화 기술로 윈도우 위에서 리눅스 커널을 실행시킬 수 있는 윈도우 서브시스템 리눅스(WSL)를 만들었기 때문에 윈도우 환경에서 리눅스를 돌리려면 이쪽이 Cygwin보다는 더욱 확실한 대안이다. 다만 Cygwin 쪽이 아무래도 가볍기 때문에 GNU 유틸리티를 사용할 수 있는 쉘을 원한다면 Cygwin이 장점이 있다. Bash 쉘과 많이 쓰이는 기본 POSIX 유틸리티들로 충분하다면 윈도우용 Git이 제공하는 Git Bash도 좋은 대안이다. 특히 개발자들은 Git을 많이 쓸 수밖에 없으므로 Git Bash로 퉁치는 사람들이 많다.

각주

  1. 리눅스라는 놈이 원래 리누스 토르발스가 만든 리눅스 커널에 GNU의 각종 유닉스 유틸리티 프로그램들을 붙여 놓은 게 기본이라 리눅스 에뮬레이터라고 단순히 이야기하기에는 조금 애매한 면이 있다. 시그윈이 리눅스 커널과 호환되는 게 아니기 때문. 다만 사용 방식이 수많은 유닉스 계열 운영체제 중에서는 리눅스와 가장 가깝긴 하다. 제작사 쪽에서는 '윈도우에서 리눅스 배포판과 비슷한 기능을 제공한다'고 Cygwin을 소개하고 있다.
  2. 시그윈을 설치하면 루트에 cygwin 또는 cygwin64(64비트) 디렉터리가 생기며, 이 아래에 유닉스 구조의 디렉터리 트리가 만들어지고 시그윈 파일들이 설치된다.
  3. 물론 가상머신보다 빠르다는 것이지 애초에 리눅스를 설치해서 쓰는 것보다는 당연히 느리다.
  4. 최근에는 윈도우용 Git과 함께 제공되는 bash도 많이 쓰이고 있다. 개발자라면 Git을 안 깔 수는 없으므로 딸려오는 bash를 사용하면 되므로 쉘만 필요한 사람들은 굳이 시그윈이 필요하지는 않다.