Cygwin ( / ˈ s ɪ ɡ w ɪ n / SIG -win ) [3] — это Unix-подобная среда и интерфейс командной строки для Microsoft Windows .
Эмулятор терминала Mintty — это интерфейс командной строки по умолчанию, предназначенный для взаимодействия со средой. [4] Структура каталогов установки Cygwin имитирует корневую файловую систему Unix-подобных систем с такими каталогами, как /bin, /home, /etc, /usr и /var.
Помимо предоставления множества утилит Unix и внешнего вида Unix, Cygwin позволяет компилировать и запускать исходный код , разработанный для Unix-подобных операционных систем, и запускать его в Windows с минимальными изменениями.
Cygwin обеспечивает встроенную интеграцию приложений Windows. Таким образом, можно запускать приложения Windows из среды Cygwin, а также использовать инструменты и приложения Cygwin в рабочем контексте Windows. [5]
Cygwin состоит из двух частей:
Cygwin — бесплатное программное обеспечение с открытым исходным кодом , выпущенное под лицензией GNU Lesser General Public License версии 3. [6] Первоначально оно было разработано компанией Cygnus Solutions , [7] [8] которая позже была приобретена Red Hat (теперь часть IBM ). , чтобы портировать набор инструментов Linux на Win32, включая GNU Compiler Suite . Вместо того, чтобы переписывать инструменты для использования среды выполнения Win32 , Cygwin реализовал POSIX-совместимую среду в форме библиотеки динамической компоновки (DLL). [9]
Девиз бренда: «Почувствуйте ощущение Linux – в Windows». [ нужна цитата ]
Cygwin зародился в 1995 году как проект Стива Чемберлена, инженера Cygnus , который заметил, что Windows NT и 95 использовали COFF в качестве формата объектного файла , и что GNU уже включал поддержку x86 и COFF, а также библиотеку C newlib . Он думал, что можно будет переориентировать GCC и создать кросс-компилятор , генерирующий исполняемые файлы, которые можно будет запускать в Windows. Это оказалось практичным, и был разработан прототип. [ нужна цитата ]
Затем Чемберлен загрузил компилятор в системе Windows, достаточно эмулируя Unix, чтобы позволить запустить сценарий оболочки GNU configure . Требовался интерпретатор команд, совместимый с оболочкой Bourne, такой как bash, и, в свою очередь, эмуляция системных вызовов fork и стандартный ввод / вывод . Windows включает в себя аналогичную функциональность, поэтому библиотеке Cygwin просто необходимо предоставить POSIX -совместимый интерфейс прикладного программирования (API), а также правильно транслировать вызовы и управлять частными версиями данных, такими как файловые дескрипторы . [ нужна цитата ]
Первоначально Cygwin назывался gnuwin32 (не путать с текущим проектом GnuWin32 ). Название было изменено на Cygwin32, чтобы подчеркнуть роль Лебедя в его создании. Когда Microsoft зарегистрировала торговую марку Win32 , цифра 32 была исключена и стала просто Cygwin. [ нужна цитата ]
К 1996 году к нему присоединились другие инженеры, сосредоточившиеся на том, чтобы сделать Cygwin полезным для размещения встроенных инструментов Cygnus в системах Windows (предыдущая стратегия заключалась в использовании DJGPP ). Это было особенно привлекательно, поскольку можно было выполнить трехэтапную кросс-компиляцию , например, используя здоровенную рабочую станцию Sun Microsystems для создания, скажем, кросс-компилятора Windows-x- MIPS , который был быстрее, чем использование ПК в время. В 1999 году Cygnus предложила Cygwin 1.0 в качестве коммерческого продукта. [10] Последующие версии не выпускались, вместо этого использовались продолжающиеся выпуски с открытым исходным кодом. [ нужна цитата ]
Джеффри Ноер был руководителем проекта с 1996 по 1999 год. [11] [12] Кристофер Фэйлор руководил проектом с 1999 по 2004 год, когда он покинул Red Hat, и стал соруководителем с Коринной Виншен [13] , пока Фэйлор не отказался от активного участия в проекте. середина 2014 года. [14] Коринна Виншен возглавляла проект с середины 2014 года по настоящее время (по состоянию на 30 марта 2023 года). [15]
С 23 июня 2016 г. библиотека Cygwin версии 2.5.2 лицензировалась по лицензии GNU Lesser General Public License (LGPL) версии 3. [16]
Среда Cygwin предоставляется в двух версиях; полная 64-битная версия и урезанная 32-битная версия, окончательная версия которой была выпущена в 2022 году. [17] Cygwin состоит из библиотеки, которая реализует API системных вызовов POSIX с точки зрения системных вызовов Windows, чтобы обеспечить возможность запуска большого количества прикладных программ, эквивалентных программам в системах Unix , и набор инструментов разработки GNU (включая GCC и GDB ), позволяющий разрабатывать программное обеспечение. Программисты перенесли на Cygwin множество программ и пакетов для Unix, GNU, BSD и Linux , включая X Window System , K Desktop Environment 3 , GNOME , [18] Apache и TeX . Cygwin позволяет устанавливать inetd , syslogd , sshd , Apache и другие демоны в качестве стандартных служб Windows , позволяя системам Microsoft Windows эмулировать серверы Unix и Linux.
Программы Cygwin устанавливаются путем запуска программы установки Cygwin [19] , которая загружает необходимые файлы программ и пакетов функций из репозиториев в Интернете. Программа установки может устанавливать, обновлять и удалять программы и пакеты их исходного кода. Полная установка займет более 90 ГБ [20] места на жестком диске, но для полезных конфигураций может потребоваться всего 1 или 2 ГБ.
Попытки согласовать концепции, которые различаются между системами Unix и Windows, включают:
mount
позволяет монтировать пути Windows как «файловые системы» в файловом пространстве Unix. Начальные точки монтирования можно настроить в /etc/fstab
формате , который имеет формат, очень похожий на системы Unix, за исключением того, что вместо устройств отображаются пути Windows. Файловые системы могут быть смонтированы в двоичном режиме (по умолчанию) или в текстовом режиме, который обеспечивает автоматическое преобразование между окончаниями LF и CRLF (что влияет только на программы, открывающие файлы без явного указания текстового или двоичного режима).C:
отображаются как /cygdrive/c
. Префикс /cygdrive
можно изменить. Сетевые пути Windows этой формы \\HOST\SHARE\FILE
сопоставляются с файлами //HOST/SHARE/FILE
. Пути Windows также можно использовать непосредственно из программ Cygwin, но многие программы не поддерживают их правильно, поэтому это не рекомендуется./dev
и файловые системы. обеспечивает прямой доступ файловой системы к реестру./proc
/proc/registry
/etc/passwd
и , которые включают указатели на эквивалентные SID Windows (в поле Gecos ), что позволяет сопоставлять пользователей и группы Unix и Windows./etc/group
Версия gcc , поставляемая с Cygwin, имеет различные расширения для создания библиотек Windows DLL, указания того, является ли программа программой оконного или консольного режима, добавления ресурсов и т. д. Поддержка компиляции программ, не требующих уровня совместимости POSIX, предоставляемого Cygwin. Раньше DLL включалась в стандартную версию gcc
, но с 2014 года [обновлять]она предоставляется кросс-компиляторами, предоставленными проектом MinGW-w64 .
Cygwin используется для переноса многих популярных программ на платформу Windows. [ необходима ссылка ] Он используется для компиляции Sun Java , LibreOffice , Apache OpenOffice и программного обеспечения веб-сервера, такого как Lighttpd и Hiawatha . [25]
Библиотека Cygwin API лицензируется по лицензии GNU Lesser General Public License версии 3 (или более поздней), за исключением того, что разрешается связываться с любым бесплатным программным обеспечением с открытым исходным кодом, чья лицензия соответствует определению открытого исходного кода [26] (менее строгому, чем свободная лицензия). Определение программного обеспечения).
Набор базовых пакетов Cygwin довольно мал (около 100 МБ [27] ) и содержит немногим больше, чем оболочки bash (интерактивный пользователь) и Dash (установка), а также основные утилиты для работы с файлами и текстом, ожидаемые от командной строки Unix. Дополнительные пакеты доступны в качестве дополнительных установок из программы установки Cygwin и диспетчера пакетов («setup-x86_64.exe» — 64-битная версия). К ним относятся (из более чем 12 000 других [28] ):
Проект Cygwin /X представляет собой реализацию системы X Window , которая позволяет графическим программам Unix отображать свои пользовательские интерфейсы на рабочем столе Windows. Это можно использовать как с локальными, так и с удаленными программами. Cygwin/X поддерживает более 500 пакетов, включая основные оконные менеджеры X, среды рабочего стола и приложения, например:
В дополнение к низкоуровневым библиотекам Xlib / XCB для разработки X-приложений Cygwin поставляется с различными высокоуровневыми и кроссплатформенными средами графического интерфейса , включая GTK+ и Qt .
Проект Cygwin Ports предоставил [ когда? ] множество дополнительных пакетов, которых не было в самом дистрибутиве Cygwin. Примеры включали GNOME и K Desktop Environment 3 , а также базу данных MySQL и язык сценариев PHP . Большинство портов были приняты сопровождающими-добровольцами как пакеты Cygwin, и порты Cygwin больше не поддерживаются.