시그윈

Cygwin
시그윈
Cygwin logo.svg
Cygwin X11 rootless WinXP.png
Windows XP에서 Cygwin/X를 포함한 Cygwin 실행
원저작자스티브 체임벌린 씨, 시그너스 솔루션스
개발자Cygnus Solutions, Red Hat, Cygwin 프로젝트 자원봉사자
초기 릴리즈1995년 10월 18일, 26년 전(1995년 10월 18일)
안정된 릴리스
3.3.5-1[1] / 2022년 5월 13일; 2개월 전(2022년 5월 13일)
저장소
기입처C/C++
운영 체제Microsoft Windows
유형POSIX 표준 유틸리티, POSIX 표준 라이브러리, C 표준 라이브러리, 호환성 계층
면허증.LGPLv3
웹 사이트cygwin.com Edit this on Wikidata

Cygwin(/s'win/SIG-win)[2]Microsoft Windows에서 네이티브로 실행되는 POSIX 호환 프로그래밍 및 런타임 환경입니다.Cygwin에서는 Unix 계열 운영체제용으로 설계된 소스 코드를 최소한의 수정으로 컴파일하여 [3]실행할 수 있습니다.

Cygwin 설치는 Unix 계열 시스템의 루트 파일 시스템과 유사한 디렉토리 레이아웃을 가지고 있으며 /bin, /home, /etc, /usr 및 /var와 같은 익숙한 디렉토리를 가지고 있습니다.Cygwin은 Unix 계열 시스템에서 흔히 볼 수 있는 수백 개의 명령줄 도구 및 기타 프로그램을 사용하여 설치합니다.또, 패키징 시스템으로부터 많은 애플리케이션을 인스톨 할 수 있습니다.터미널 에뮬레이터 Mintty는 환경과 [3]상호 작용하기 위해 제공되는 기본 명령줄 인터페이스입니다.

Cygwin은 Windows 기반 애플리케이션의 [4]네이티브 통합을 제공합니다.따라서 Cygwin 환경에서 Windows 응용 프로그램을 시작할 수 있을 뿐만 아니라 Windows 운영 컨텍스트 내에서 Cygwin 도구 및 응용 프로그램을 사용할 수 있습니다.

Cygwin은 POSIX API 기능의 상당 부분을 제공하는 C 표준 라이브러리 형태의 API 호환성 계층인 DLL(Dynamic Link Library)과 Unix와 유사한 모양[4]느낌을 제공하는 광범위한 소프트웨어 도구 및 애플리케이션 모음으로 구성됩니다.

Cygwin은 GNU Lesser General Public License 버전 [5]3으로 출시된 무료 오픈 소스 소프트웨어입니다.이것은 원래 GNU 컴파일러 스위트를 포함한 Linux 툴 체인을 Win32에 포트하기 위해 나중에 Red Hat(현 IBM의 일부)에 의해 인수된 Cygnus [6][7]Solutions에 의해 개발되었다.Cygwin은 Win32 런타임 환경을 사용하기 위해 툴을 다시 쓰는 대신 동적 링크 라이브러리(DLL)[8] 형태로 POSIX 호환 환경을 구현했습니다.

묘사

Cygwin 환경은 풀 64비트 버전과 서서히 폐지되는 32비트 버전의 두 가지 버전으로 제공됩니다.Cygwin은 Windows 시스템 호출에 관해 POSIX 시스템 호출 API를 구현하는 라이브러리와 소프트웨어 개발을 가능하게 하는 GNU 개발 도구 체인(GCCGDB 포함)으로 구성됩니다.프로그래머들은 X Window System, K Desktop Environment 3, GNOME,[9] Apache, TeX포함한 많은 Unix, GNU, BSD 및 Linux 프로그램과 패키지를 Cygwin으로 포팅했습니다.Cygwin에서는 inetd, syslogd, sshd, Apache 및 기타 데몬을 표준 Windows 서비스로 설치할 수 있으므로 Microsoft Windows 시스템에서 Unix 및 Linux 서버를 에뮬레이트할 수 있습니다.

Cygwin 프로그램은 Cygwin의 "셋업"[10] 프로그램을 실행하여 설치됩니다.이 프로그램은 인터넷 저장소에서 필요한 프로그램 및 기능 패키지 파일을 다운로드합니다.전술한 바와 같이 이 셋업 프로그램에는 32비트 버전의 Cygwin DLL과 대응하는 애플리케이션용과 64비트 버전의 두 가지 버전이 있습니다.설치 프로그램에서 프로그램 및 소스 코드 패키지를 설치, 업데이트 및 제거할 수 있습니다.완전[11] 인스톨에는, 90 GB이상의 하드 디스크 영역이 필요하게 됩니다만, 사용 가능한 구성의 경우는, 1 GB 또는 2 GB 의 사이즈가 필요하게 되는 경우가 있습니다.

Unix 시스템과 Windows 시스템 간에 서로 다른 개념을 조정하기 위한 노력은 다음과 같습니다.

  • Cygwin 고유 버전의 Unix 명령을 사용하면 Windows 경로를 Unix 파일 공간에 "파일 시스템"으로 마운트할 수 있습니다.초기 마운트 포인트는 다음과 같이 설정할 수 있습니다./etc/fstab디바이스 대신에 Windows 패스가 표시되는 것을 제외하고, Unix 시스템과 매우 유사한 포맷을 가지고 있습니다.파일 시스템은 바이너리 모드(기본값) 또는 텍스트 모드로 마운트할 수 있습니다.이 모드에서는 LF 엔딩과 CRLF 엔딩 간의 자동 변환이 가능합니다(텍스트 또는 바이너리 모드를 명시적으로 지정하지 않고 파일을 여는 프로그램에만 영향을 줍니다).
  • Cygwin 1.7은 POSIX 로케일과 많은 문자 인코딩에 대한 포괄적인 지원을 도입하여 UTF-8 유니코드 인코딩이 기본이 되었습니다.UTF-16으로 인코딩된 Windows 파일 이름 및 기타 식별자는 선택한 문자 인코딩과 자동으로 변환됩니다.
  • Windows 드라이브 문자는 특수 디렉터리에 매핑됩니다.C:로서 나타나다./cygdrive/c.그/cygdrive프레픽스를 변경할 수 있습니다.양식의 윈도우즈 네트워크 경로\\HOST\SHARE\FILE에 매핑되어 있다//HOST/SHARE/FILEWindows 패스는 Cygwin 프로그램에서도 직접 사용할 수 있지만, 많은 프로그램이 올바르게 지원하지 않기 때문에 권장되지 않습니다.
  • 풀기능/dev그리고./proc파일 시스템이 제공됩니다. /proc/registry그럼 파일 시스템에 레지스트리에 직접 액세스할 수 있습니다.
  • Cygwin은 POSIX 심볼릭링크를 지원하며 시스템아트리뷰트가 설정된 플레인텍스트 파일로 나타냅니다.Cygwin 1.5는 이러한 숏컷을 Windows 탐색기로 나타내지만 성능 및 POSIX의 정확성을 이유로 변경되었습니다.또한 Cygwin은 NTFS 연결점과 심볼릭 링크를 인식하여 POSIX 심볼릭 링크로 취급하지만, 시멘틱스가 완전히 POSIX에 준거하지 않기 때문에 이를 생성하지는 않습니다.
  • Access Control List(ACL; 접근컨트롤 리스트)를 처리하기 위한 POSIX API가 지원되며 Windows NT ACL [12]시스템에 매핑됩니다.
  • 특수 형식/etc/passwd그리고./etc/group에는 Windows 대응 SID에 대한 포인터가 포함되어 있기 때문에([Gecos]필드), UNIX 와 Windows 의 유저와 그룹간의 매핑이 가능하게 됩니다.
  • 프로세스를 복제하기 위한 포크 시스템 호출은 완전히 구현되었지만 Windows API에 제대로 매핑되지 않습니다.예를 들어 Copy-on-Write 최적화 전략을 [13][14][15]사용할 수 없습니다.그 결과 Cygwin의 포크는 Linux와 다른 것에 비해 다소 느립니다.(이 오버헤드는 종종 fork/exec 기술을 Windows 고유의 프로세스에서 선언된 생성 함수에 대한 호출로 대체함으로써 피할 수 있습니다.h 헤더).
  • Cygwin DLL에는 윈도우즈 콘솔 내의 Unix 스타일 터미널을 에뮬레이트하는 콘솔 드라이버가 포함되어 있습니다.Cygwin의 기본 사용자 인터페이스는 Cygwin 콘솔에서 실행되는 bash 셸입니다.
  • DLL은 의사 단말(pty) 디바이스도 실장합니다.Cygwin에는 mintty, rxvt(-unicode), xterm 등 여러 터미널 에뮬레이터가 포함되어 있습니다.이들은 Cygwin 콘솔보다 Unix 터미널 표준 및 사용자 인터페이스 규약에 더 적합하지만 Windows 콘솔 프로그램 실행에는 적합하지 않습니다.
  • Windows 와 Unix 의 패스와 파일 형식간의 변환, 회선 종료(CRLF/LF)의 문제의 처리, 실행 파일의 링크처의 DLL 의 표시등을 위한 다양한 유틸리티가 준비되어 있습니다.
  • Cygwin DLL에 대해 항상 링크되는 것 외에 Cygwin 실행 파일은 일반적인 Windows 실행 파일입니다.즉, Cygwin 프로그램은 Windows API 및 다른 Windows 라이브러리에 대한 완전한 액세스 권한을 가지며, 이를 통해 플랫폼 간에 프로그램을 점진적으로 이식할 수 있습니다.그러나 프로그래머는 POSIX와 Windows의 기능이 서로 충돌하는 것에 주의해야 합니다.

Cygwin과 함께 제공되는 gcc 버전에는 Windows DLL 생성, 프로그램 창 또는 콘솔 모드 프로그램 지정, 리소스 추가 등을 위한 다양한 확장 기능이 있습니다.Cygwin DLL에서 제공하는 POSIX 호환성 계층이 필요하지 않은 프로그램 컴파일 지원(기본값 포함)gcc단, 2014년 현재 MinGW-w64 프로젝트에 참여한 크로스 컴파일러가 제공하고 있습니다.

Cygwin은 많은 인기 있는 소프트웨어를 Windows [citation needed]플랫폼으로 이식하는 데 많이 사용됩니다.Sun Java, LibreOffice, 그리고 Lighttpd[16]Hiawatha와 같은 웹 서버 소프트웨어를 컴파일하는 데 사용됩니다.

Cygwin API 라이브러리는 GNU Lesser General Public License 버전 3(또는 그 이후)에 따라 라이선스가 오픈소스 정의[17](자유 소프트웨어 정의보다 엄격하지 않음)에 준거한 자유오픈소스 소프트웨어에 링크할 수 있도록 예외적으로 허가됩니다.

역사

Cygwin은 1995년에 Cygnus 엔지니어 Steve Chamberlain의 프로젝트로 시작되었는데, 그는 Windows NT와 95가 COFF를 객체 파일 포맷으로 사용하고 GNU가 이미 x86과 COFF, C 라이브러리 newlib에 대한 지원을 포함하고 있음을 관찰했다.그는 GCC의 대상을 변경하여 Windows에서 실행할 수 있는 실행 파일을 생성하는 크로스 컴파일러를 생성할 수 있을 것이라고 생각했습니다.이것은 실용성이 입증되었고 프로토타입이 빠르게 개발되었습니다.

다음 단계는 Windows 시스템에서 컴파일러를 부트스트랩하는 것으로, GNU 구성 셸 스크립트실행하기에 충분한 Unix 에뮬레이션이 필요합니다.Bourne 쉘 호환 명령어인터프리터(bash 등)가 필요했고, 결과적으로 포크 시스템콜 에뮬레이션과 표준 입출력도 필요했습니다.Windows 에는 같은 기능이 포함되어 있기 때문에 Cygwin 라이브러리는 POSIX 호환 Application Programming Interface(API; 응용 프로그램프로그래밍 인터페이스)를 제공하여 콜을 적절히 변환하고 파일 기술자 등의 개인 데이터 버전을 관리해야 했습니다.

처음에 Cygwin은 gnuwin32로 불렸다(현재 GnuWin32 프로젝트와 혼동하지 말 것).이름은 Cygwin32로 변경되어 Cygnus의 역할을 강조하였습니다.마이크로소프트가 Win32라는 상표등록했을 때 32는 삭제되어 Cygwin이 되었습니다.

1996년에는 다른 엔지니어들도 참여했습니다. 왜냐하면 Cygwin이 Windows 시스템에서 호스팅되는 Cygnus의 임베디드 툴을 제공하는 유용한 방법이 될 것이 분명했기 때문입니다(이전 전략은 DJGPP를 사용하는 것이었습니다).특히 3방향 크로스 컴파일을 할 수 있는 것이 매력적이었습니다.예를 들어, 무거운 Sun Microsystems 워크스테이션을 사용하여 Windows-x-MIPS 크로스 컴파일러를 구축하는 것은 당시에는 PC를 사용하는 것보다 빨랐습니다.1999년에 시그너스는 후속 버전이 출시되지 않았지만 Cygwin 1.0을 그 자체로 관심 있는 상용[18] 제품으로 제공하였고 대신 지속적인 오픈 소스 릴리즈에 의존하였다.

Geoffrey Noer는 1996년부터 [19][20]1999년까지 프로젝트 리더였습니다.Christopher Faylor는 1999년부터 2014년 중반까지 프로젝트 리더였습니다.코리나 빈센은 페일러가 레드햇을 떠난 2004년부터[21] 공동 선두에 올랐고, 페일러가 프로젝트 참여를 [22]철회한 2014년 중반부터 선두를 달리고 있다.

2016년 6월 23일부터 Cygwin 라이브러리 버전 2.5.2는 GNU Lesser General Public License(LGPL) 버전 [23]3에 따라 라이센스가 부여되었기 때문에 폐쇄 소스 애플리케이션에 대한 링크도 가능합니다.이것이 사용 가능하기 전에는 두 가지 방법이 있었습니다. 즉, 애플리케이션의 소스 코드를 공개하거나 Cygwin 라이센스를 구입하여 폐쇄 소스 애플리케이션을 공개하는 것입니다.

특징들

Cygwin의 기본 패키지는 매우 작은 크기(약 100MB[24])로, UNIX 명령줄에서 예상되는 bash(인터랙티브 사용자) 및 대시(설치) 셸과 코어 파일 및 텍스트 조작 유틸리티만 포함합니다.추가 패키지는 Cygwin의 패키지 매니저('setup-x86.exe'– 32비트 및 'setup-x86_64.exe'– 64비트)에서 옵션으로 설치할 수 있습니다.여기에는 다음과 같은 것이 포함됩니다(다른 많은[25] 것들도 포함됩니다.

Cygwin/X 프로젝트는 그래픽 유닉스 프로그램이 Windows 바탕화면에 사용자 인터페이스를 표시할 수 있도록 하는 X Window 시스템의 구현에 기여합니다.이것은 로컬 프로그램과 원격 프로그램 모두에서 사용할 수 있습니다.Cygwin/X는 주요 X 창 관리자, 데스크톱 환경 및 응용 프로그램을 포함하여 다음과 같은 500개 이상의 패키지를 지원합니다.

Cygwin은 X 어플리케이션 개발을 위한 저레벨 Xlib/XCB 라이브러리 외에 GTK+ Qt를 포함한 다양한 상위 레벨 및 크로스 플랫폼 GUI 프레임워크와 함께 출하됩니다.

Cygwin Ports 프로젝트는[when?] Cygwin 배포 자체에서 사용할 수 없는 많은 추가 패키지를 제공했습니다.예를 들어 GNOME과 K Desktop Environment 3뿐만 아니라 MySQL 데이터베이스와 PHP 스크립트 언어있습니다.대부분의 포트는 자원 관리자에 의해 Cygwin 패키지로 채택되어 Cygwin 포트는 더 이상 유지 보수되지 않습니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ "cygwin 3.3.5-1". 13 May 2022.
  2. ^ Hall, Larry (2004-09-14). "Re: How do you pronounce it?". Cygwin (Mailing list). Retrieved 2007-10-10.
  3. ^ a b "Cygwin". www.cygwin.com.
  4. ^ a b "Cygwin FAQ". cygwin.com.
  5. ^ "Cygwin library now available under GNU Lesser General Public License". Red Hat.
  6. ^ "A brief history of the Cygwin project". Cygwin. 2018-02-02. Retrieved 2020-01-10.
  7. ^ "Cygwin32: A Free Win32 Porting Layer for UNIX® Applications". USENIX. 1998-08-03. Retrieved 2020-01-10.
  8. ^ "(Solved) Linux Subsystem vs Cygwin vs MobaXterm". Tech Help Forum by How-To Geek. 2017-01-24. Retrieved 2019-03-15.
  9. ^ "Cygwin Ports". Retrieved 2 May 2015.
  10. ^ Delorie, DJ (2000-04-17). "New Cygwin Net Release". Cygwin (Mailing list). Retrieved 2020-01-10.
  11. ^ "What is the current full install size of Cygwin?". StackOverflow. 2018-05-28. Retrieved 2020-01-11.
  12. ^ Vinschen, Corinna (2016-01-16). "Updated: Cygwin 2.4.0-1". Cygwin Announcements (Mailing list). Retrieved 2020-01-11.
  13. ^ "Cygwin FAQ: How is fork() implemented?". Retrieved Oct 10, 2010.
  14. ^ "Highlights of Cygwin Functionality: Process Creation". Retrieved Dec 24, 2014.
  15. ^ Blake, Eric (Jan 15, 2009). "Bash doesn't launch the applications directly". Cygwin (Mailing list). Retrieved Oct 10, 2010.
  16. ^ Leisink, Hugo. "Hiawatha webserver". www.hiawatha-webserver.org.
  17. ^ "What are the licensing terms?". Cygwin. Archived from the original on 2012-07-28.
  18. ^ "Cygwin Unites Unix and Windows Apps". Google Books. 1999-11-15. Retrieved 2020-01-13.
  19. ^ Delorie, DJ (1999-02-17). "fyi: who does what". Cygwin (Mailing list). Retrieved 2020-01-13.
  20. ^ Noer, Geoffrey (1999-02-19). "A partial goodbye..." Cygwin (Mailing list). Retrieved 2020-01-13.
  21. ^ Faylor, Christopher (2004-03-31). "Changing jobs". Cygwin (Mailing list). Retrieved 2020-01-13.
  22. ^ Faylor, Christopher (2014-07-31). "Christopher Faylor – Withdrawing from the project". Cygwin (Mailing list). Retrieved 2 May 2015.
  23. ^ "Cygwin library now available under GNU Lesser General Public License". www.redhat.com. Retrieved 2021-05-27.
  24. ^ "Installing and Updating Cygwin Packages". Cygwin. Retrieved 2020-01-11.
  25. ^ "Cygwin Package List". Cygwin. Retrieved 2020-01-11.

외부 링크