Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Cygwin ( / s ɪ ɡ ж ɪ п / SIG -win ) [2] является POSIX совместимый программирования и среда выполнения , которая работает на всех ОС Microsoft Windows . Под Cygwin исходный код, разработанный для Unix-подобных операционных систем, может быть скомпилирован и запущен изначально с минимальными изменениями. [3]

Каталог установки Cygwin имеет такую ​​же структуру каталогов, что и в корневой файловой системе Unix-подобных систем, со знакомыми каталогами, такими как / bin, / home, / etc, / usr, / var. Cygwin устанавливается с сотнями инструментов командной строки и других программ, которые обычно встречаются в Unix-подобных системах. Кроме того, многие приложения могут быть установлены из упаковочной системы. Эмулятор терминала Mintty - это интерфейс командной строки по умолчанию, обеспечивающий взаимодействие со средой. [3]

Cygwin обеспечивает встроенную интеграцию приложений на базе Windows. [4] Таким образом, можно запускать приложения Windows из среды Cygwin, а также использовать инструменты и приложения Cygwin в операционном контексте Windows.

Cygwin состоит из двух частей: библиотеки динамической компоновки (DLL) в качестве уровня совместимости API в форме стандартной библиотеки C, обеспечивающей значительную часть функциональности POSIX API, и обширного набора программных инструментов и приложений, которые предоставляют Unix -подобный внешний вид . [4]

Cygwin был разработан компанией Cygnus Solutions , [5] [6] , которая позже была приобретена компанией Red Hat (теперь часть IBM ), портировать GNU / Linux набор инструментов для Win32, включая GNU Compiler Suite . Вместо того, чтобы переписывать все инструменты для использования среды выполнения Win32 , Cygwin реализовал среду выполнения, совместимую с POSIX, в виде библиотеки DLL . [7] Это бесплатное программное обеспечение с открытым исходным кодом , выпущенное под лицензией GNU Lesser General Public License версии 3. [8] Сегодня оно поддерживается добровольцами, включая сотрудников Red Hat и многих других.

Описание [ править ]

Среда Cygwin предоставляется в двух версиях; полная 64-разрядная версия и урезанная 32-разрядная версия, от которой постепенно отказываются. Cygwin состоит из библиотеки, которая реализует API системных вызовов POSIX в терминах системных вызовов Windows, цепочки инструментов разработки GNU (включая GCC и GDB ), позволяющей разрабатывать программное обеспечение, и запуска большого количества прикладных программ, эквивалентных программам в системах Unix . Программисты перенесли на Cygwin множество программ и пакетов Unix, GNU, BSD и Linux , включая X Window System , K Desktop Environment 3 , GNOME., [9] Apache и TeX . Cygwin позволяет устанавливать inetd , syslogd , sshd , Apache и другие демоны в качестве стандартных служб Windows , позволяя системам Microsoft Windows эмулировать серверы Unix и Linux.

Программы Cygwin устанавливаются путем запуска программы Cygwin "setup" [10] , которая загружает необходимые программы и файлы пакетов функций из репозиториев в Интернете. Как уже упоминалось, существует две версии этой программы установки: одна для 32-битных версий Cygwin DLL и соответствующих приложений, а другая для 64-битных версий. Программа установки может устанавливать, обновлять и удалять программы и их пакеты с исходным кодом. Полная установка займет более 90 ГБ [11] места на жестком диске, но для используемых конфигураций может потребоваться всего 1 или 2 ГБ.

Попытки согласовать концепции, которые различаются между системами Unix и Windows, включают:

  • Версия команды Unix для Cygwin mountпозволяет монтировать пути Windows как «файловые системы» в файловом пространстве Unix. Начальные точки монтирования могут быть настроены в /etc/fstabформате, очень похожем на системы Unix, за исключением того, что пути Windows отображаются вместо устройств. Файловые системы могут быть смонтированы в двоичном режиме (по умолчанию) или в текстовом режиме, что обеспечивает автоматическое преобразование между окончаниями LF и CRLF (что влияет только на программы, открывающие файлы без явного указания текстового или двоичного режима).
  • Cygwin 1.7 представил всестороннюю поддержку локалей POSIX и многих кодировок символов , в результате чего кодировка Unicode UTF-8 стала по умолчанию. Имена файлов Windows и другие идентификаторы, которые имеют кодировку UTF-16 , автоматически преобразуются в выбранную кодировку символов и обратно.
  • Буквы дисков Windows соответствуют специальному каталогу, поэтому, например, они C:отображаются как /cygdrive/c. /cygdriveПрефикс может быть изменен. Сети Windows , пути формы \\HOST\SHARE\FILEсопоставляются //HOST/SHARE/FILE. Пути Windows также можно использовать непосредственно из программ Cygwin, но многие программы не поддерживают их правильно, поэтому это не рекомендуется.
  • Предоставляются полнофункциональные /devи /procфайловые системы. /proc/registryобеспечивает прямой доступ файловой системы к реестру.
  • Cygwin поддерживает символические ссылки POSIX , представляя их в виде текстовых файлов с установленным системным атрибутом . Cygwin 1.5 представил их как ярлыки Windows Explorer , но это было изменено из соображений производительности и корректности POSIX. Cygwin также распознает точки соединения NTFS и символические ссылки и рассматривает их как символические ссылки POSIX, но не создает их, поскольку их семантика не полностью соответствует POSIX.
  • POSIX API для обработки списков управления доступом (ACL) поддерживается и карты в системе Windows NT ACL. [12]
  • Предоставляются специальные форматы /etc/passwdи /etc/group, которые включают указатели на идентификаторы безопасности, эквивалентные Windows (в поле Gecos ), что позволяет выполнять сопоставление между пользователями и группами Unix и Windows.
  • Вилка системный вызов для дублирования процесса будет полностью реализован, но это не очень хорошо карты в Windows API. Например, нельзя было использовать стратегию оптимизации копирования при записи . [13] [14] [15] В результате форк Cygwin работает довольно медленно по сравнению с Linux и другими. (Эти накладные расходы часто можно избежать, заменив использование техники fork / exec вызовами функций порождения, объявленных в специфичном для Windows заголовке process.h ).
  • Cygwin DLL содержит драйвер консоли, который имитирует терминал в стиле Unix в консоли Windows . Пользовательский интерфейс Cygwin по умолчанию - это оболочка bash, работающая в консоли Cygwin.
  • DLL также реализует устройства псевдотерминала (pty). Cygwin поставляется с рядом эмуляторов терминала , основанных на них, включая mintty , rxvt ( -unicode ) и xterm . Они более совместимы со стандартами терминалов Unix и соглашениями о пользовательском интерфейсе, чем консоль Cygwin, но менее подходят для запуска консольных программ Windows.
  • Предусмотрены различные утилиты для преобразования путей и форматов файлов между Windows и Unix, для обработки проблем с окончанием строки (CRLF / LF), для отображения библиотек DLL, с которыми связан исполняемый файл, и т. Д.
  • Помимо того, что исполняемые файлы Cygwin всегда связаны с Cygwin DLL, они являются обычными исполняемыми файлами Windows. Это означает, что программы Cygwin имеют полный доступ к Windows API и другим библиотекам Windows, что позволяет постепенно переносить программы с одной платформы на другую. Однако программисты должны быть осторожны при смешивании конфликтующих функций POSIX и Windows.

Версия gcc , поставляемая с Cygwin, имеет различные расширения для создания библиотек DLL Windows, определяющих, является ли программа программой оконного или консольного режима, добавления ресурсов и т. Д. Поддержка компиляции программ, для которых не требуется уровень совместимости POSIX, предоставляемый Cygwin. DLL раньше была включена по умолчанию gcc, но с 2014 года ее предоставляют кросс-компиляторы, предоставленные проектом MinGW-w64 .

Cygwin широко используется для переноса многих популярных программ на платформу Windows. Он используется для компиляции Sun Java , LibreOffice и даже программного обеспечения веб-сервера, такого как Lighttpd и Hiawatha . [16]

Библиотека Cygwin API находится под лицензией GNU Lesser General Public License версии 3 (или более поздней), за исключением того, что она позволяет ссылаться на любое бесплатное программное обеспечение с открытым исходным кодом , лицензия которого соответствует определению открытого исходного кода [17] (менее строгому, чем Free Определение программного обеспечения).

История [ править ]

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, чтобы подчеркнуть роль Cygnus в его создании. Когда Microsoft зарегистрировала торговую марку Win32 , 32 отказались и стали просто Cygwin.

К 1996 году к ним присоединились и другие инженеры, потому что было ясно, что Cygwin будет полезным способом предоставить встроенные инструменты Cygnus, размещенные в системах Windows (предыдущая стратегия заключалась в использовании DJGPP ). Это было особенно привлекательно, потому что можно было выполнить трехстороннюю кросс-компиляцию , например, использовать здоровенную рабочую станцию Sun Microsystems для создания, скажем, кросс-компилятора Windows-x- MIPS , что было быстрее, чем использование ПК на время. В 1999 Cygnus предложил Cygwin 1.0 как коммерческий продукт [18], представляющий самостоятельный интерес, хотя последующие версии не были выпущены, вместо этого полагаясь на продолжающиеся выпуски с открытым исходным кодом.

Джеффри Ноер был руководителем проекта с 1996 по 1999 год. [19] [20] Кристофер Фейлор был руководителем проекта с 1999 до середины 2014 года. Коринна Виншен стала со-ведущей с 2004 года [21], когда Фейлор покинула Red Hat, и возглавляет ее с середины 2014 года, когда Фейлор отказался от активного участия в проекте. [22]

Особенности [ править ]

Выбор базового пакета Cygwin довольно невелик (около 100 МБ [23] ) и содержит немного больше, чем оболочки bash (интерактивный пользователь) и dash (установка), а также основной файл и утилиты для работы с текстом, ожидаемые от командной строки Unix. Дополнительные пакеты доступны в качестве необязательной установки из диспетчера пакетов Cygwin («setup-x86.exe» - 32-разрядная версия и «setup-x86_64.exe» - 64-разрядная версия). К ним относятся (среди многих других [24] ):

  • Оболочки (то есть интерпретаторы командной строки): bash , dash , fish , pdksh , tcsh , zsh
  • Файловые и системные утилиты: coreutils , findutils , util-linux
  • Текстовые утилиты: grep , sed , diff , patch , awk
  • Терминалы: mintty , rxvt , screen
  • Редакторы: ed , emacs , joe , mined , nano , vim
  • Удаленный вход: ssh , rsh , telnet
  • Удаленная передача / синхронизация файлов: ftp , scp , rsync , unison , rtorrent
  • Сжатие / архивирование: tar , gzip , bzip2 , lzma , zip
  • Обработка текста: TeX , groff , Ghostscript
  • Языки программирования: C , C ++ , Objective-C , Fortran , Gambas , Perl , Python , Ruby , Tcl , Ada , CLISP , Scheme , OCaml , Prolog
  • Инструменты разработки: make , autotools , flex , bison , doxygen
  • Системы контроля версий: cvs , subversion , git , mercurial
  • Серверы: Apache , BIND , PostgreSQL , Pure-FTPd , OpenSSH , telnetd , exim , UW IMAP
  • Клиенты: Mutt (электронная почта), Lynx (веб), Irssi (IRC), tin (группы новостей)

Проект Cygwin / X вносит свой вклад в реализацию системы X Window, которая позволяет графическим программам Unix отображать свои пользовательские интерфейсы на рабочем столе Windows. Это можно использовать как с локальными, так и с удаленными программами. Cygwin / X поддерживает более 500 пакетов, включая основные оконные менеджеры X, среды рабочего стола и приложения, например:

  • Терминалы: rxvt-unicode , xterm
  • Редакторы: emacs-X11, gvim
  • Текстовые процессоры / программы просмотра: LyX , xpdf , xdvi
  • WWW браузеры: прозрение , Konqueror , ссылки , рысь , Мидори , qupzilla , W3M

Помимо низкоуровневых библиотек Xlib / XCB для разработки X-приложений, Cygwin также поставляется с различными высокоуровневыми и кроссплатформенными графическими интерфейсами , включая GTK + и Qt .

Проект Cygwin Ports предоставил множество дополнительных пакетов, которых не было в самом дистрибутиве Cygwin. Примеры включали GNOME и K Desktop Environment 3, а также базу данных MySQL и язык сценариев PHP . Большинство портов были приняты разработчиками-добровольцами как пакеты Cygwin, а порты Cygwin больше не поддерживаются.

Ссылки [ править ]

  1. ^ Виншен, Коринна (2020-08-24). "Cygwin 3.1.7-1" . Объявления Cygwin (список рассылки) . Проверено 24 августа 2020 .
  2. Холл, Ларри (14 сентября 2004). "Re: Как вы это произносите?" . Cygwin (список рассылки) . Проверено 10 октября 2007 .
  3. ^ а б "Cygwin" . www.cygwin.com .
  4. ^ a b "Часто задаваемые вопросы о Cygwin" . cygwin.com .
  5. ^ «Краткая история проекта Cygwin» . Cygwin . 2018-02-02 . Проверено 10 января 2020 .
  6. ^ «Cygwin32: бесплатный уровень переноса Win32 для приложений UNIX®» . USENIX . 1998-08-03 . Проверено 10 января 2020 .
  7. ^ "(Решено) Подсистема Linux против Cygwin против MobaXterm" . Форум технической поддержки от How-To Geek . 2017-01-24 . Проверено 15 марта 2019 .
  8. ^ «Библиотека Cygwin теперь доступна по лицензии GNU Lesser General Public License» . Красная шляпа .
  9. ^ "Порты Cygwin" . Дата обращения 2 мая 2015 .
  10. ^ Делори, ди-джей (2000-04-17). «Новый выпуск Cygwin Net» . Cygwin (список рассылки) . Проверено 10 января 2020 .
  11. ^ "Каков текущий полный размер установки Cygwin?" . StackOverflow . 2018-05-28 . Проверено 11 января 2020 .
  12. ^ Виншен, Коринна (2016-01-16). «Обновлено: Cygwin 2.4.0-1» . Объявления Cygwin (список рассылки) . Проверено 11 января 2020 .
  13. ^ "Cygwin FAQ: Как реализован fork ()?" . Проверено 10 октября 2010 года .
  14. ^ «Основные возможности Cygwin: создание процесса» . Проверено 24 декабря 2014 года .
  15. Блейк, Эрик (15 января 2009 г.). «Bash не запускает приложения напрямую» . Cygwin (список рассылки) . Проверено 10 октября 2010 года .
  16. ^ Leisink, Хьюго. "Веб-сервер Hiawatha" . www.hiawatha-webserver.org .
  17. ^ "Каковы условия лицензирования?" . Cygwin . Архивировано 28 июля 2012 года.
  18. ^ «Cygwin объединяет приложения Unix и Windows» . Google Книги . 1999-11-15 . Проверено 13 января 2020 .
  19. ^ Делори, ди-джей (1999-02-17). "к сведению: кто что делает" . Cygwin (список рассылки) . Проверено 13 января 2020 .
  20. ^ Ноер, Джеффри (1999-02-19). «Частичное прощание ...» Cygwin (Список рассылки) . Проверено 13 января 2020 .
  21. ^ Faylor, Кристофер (2004-03-31). «Смена места работы» . Cygwin (список рассылки) . Проверено 13 января 2020 .
  22. ^ Фейлор, Кристофер (31.07.2014). «Кристофер Фейлор - Выход из проекта» . Cygwin (список рассылки) . Дата обращения 2 мая 2015 .
  23. ^ «Установка и обновление пакетов Cygwin» . Cygwin . Проверено 11 января 2020 .
  24. ^ "Список пакетов Cygwin" . Cygwin . Проверено 11 января 2020 .

Внешние ссылки [ править ]

  • Официальный веб-сайт