Cygwin - Википедия - Cygwin

Cygwin
Cygwin logo.svg
Запуск Cygwin, включая Cygwin / X, под Windows XP
Запуск Cygwin, включая Cygwin / X, под Windows XP
Оригинальный автор (ы)Стив Чемберлен, Cygnus Solutions
Разработчики)Cygnus Solutions, Красная шляпа, Волонтеры проекта Cygwin
изначальный выпуск18 октября 1995 г.; 25 лет назад (1995-10-18)
Стабильный выпуск
3.1.7-1[1] / 24 августа 2020 г.; 3 месяца назад (2020-08-24)
Репозиторий Отредактируйте это в Викиданных
Написано вC /C ++
Операционная системаМайкрософт Виндоус
ТипСтандартные утилиты POSIX, Стандартная библиотека POSIX, Стандартная библиотека C, уровень совместимости
ЛицензияLGPLv3
Интернет сайтCygwin.com Отредактируйте это в Викиданных

Cygwin (/ˈsɪɡшɪп/ SIG-победить )[2] это POSIX -совместимое программирование и среда выполнения это работает изначально на Майкрософт Виндоус. Под Cygwin, исходный код предназначен для Unix-подобный операционные системы могут быть скомпилированы и запускаться изначально с минимальными изменениями.

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

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

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

Cygwin был первоначально разработан Cygnus Solutions,[3][4] который позже был приобретен Красная шляпа (теперь часть IBM ), чтобы портировать GNU / Linux набор инструментов в Win32, включая Комплект компиляторов GNU. Вместо того, чтобы переписывать все инструменты для использования Win32 время выполнения, Cygwin реализовал POSIX совместимая среда выполнения как DLL.[5] это бесплатное программное обеспечение с открытым исходным кодом, выпущенный под Стандартная общественная лицензия ограниченного применения GNU версия 3.[6] Сегодня его поддерживают волонтеры, в том числе сотрудники Red Hat и многие другие.

Описание

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

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

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

  • Версия Unix для Cygwin устанавливать Команда позволяет монтировать пути Windows как "файловые системы" в файловом пространстве Unix. Начальные точки монтирования можно настроить в / etc / fstab, который имеет формат, очень похожий на системы Unix, за исключением того, что пути Windows отображаются вместо устройств. Файловые системы могут быть смонтированы в двоичном режиме (по умолчанию) или в текстовом режиме, что позволяет автоматически преобразование между LF и CRLF окончания (влияет только на программы, открывающие файлы без явного указания текстового или двоичного режима).
  • Cygwin 1.7 представил всестороннюю поддержку POSIX локации и много кодировки символов, посредством чего UTF-8 Unicode кодировка стала по умолчанию. Имена файлов Windows и другие идентификаторы, которые кодируются как UTF-16, автоматически преобразуются в выбранную кодировку символов и обратно.
  • Windows буквы дисков сопоставить со специальным каталогом, например C: выглядит как / cygdrive / c. В / cygdrive префикс можно изменить. Сетевые пути Windows формы ХОСТ ПОДЕЛИТЬСЯ ФАЙЛ отображаются на // ХОСТ / ПОДЕЛИТЬСЯ / ФАЙЛ. Пути Windows также можно использовать непосредственно из программ Cygwin, но многие программы не поддерживают их правильно, поэтому это не рекомендуется.
  • Полнофункциональный / dev и / proc предоставлены файловые системы. / proc / registry обеспечивает прямой доступ файловой системы к реестру.
  • Cygwin поддерживает POSIX символические ссылки, представляя их в виде текстовых файлов с системой атрибут набор. Cygwin 1.5 представил их как проводник Виндоус ярлыки, но это было изменено из соображений производительности и корректности POSIX. Cygwin также распознает NTFS точки соединения и символические ссылки и обрабатывает их как символические ссылки POSIX, но не создает их, поскольку их семантика не полностью соответствует POSIX.
  • В POSIX API для обработки списки контроля доступа (ACL) поддерживается и сопоставляется с системой ACL Windows NT.[10]
  • Специальные форматы / etc / passwd и / etc / group предоставляются, которые включают указатели на эквивалент Windows SIDМесторождение Гекос ), что позволяет отображать пользователей и группы Unix и Windows.
  • В вилка Системный вызов для дублирования процесса реализован полностью, но он плохо отображается в Windows API. Например, копирование при записи не удалось использовать стратегию оптимизации.[11][12][13] В результате форк Cygwin работает довольно медленно по сравнению с Linux и другими. (Эти накладные расходы часто можно избежать, заменив использование вилка / exec техника с обращениями к порождать функции, объявленные в специфичных для Windows process.h заголовок).
  • Cygwin DLL содержит драйвер консоли, который имитирует стиль Unix. Терминал в пределах Консоль Windows. Пользовательский интерфейс Cygwin по умолчанию - это трепать оболочка, запущенная в консоли Cygwin.
  • DLL также реализует псевдотерминал (pty) устройства. Cygwin поставляется с несколькими эмуляторы терминала основанные на них, в том числе мятный, 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. Он используется для компиляции солнце Ява, LibreOffice, и даже программное обеспечение веб-сервера, такое как Lighttpd и Гайавата.[14]

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

История

Cygwin начался в 1995 году как проект Стива Чемберлена, Лебедь инженер, который заметил, что Windows NT и 95 использовали COFF как их формат объектного файла, и что GNU уже включает поддержку x86 и COFF, и библиотека C newlib. Он думал, что можно будет перенацелить GCC и произвести кросс-компилятор создание исполняемых файлов, которые могут работать в Windows. Это оказалось практичным, и вскоре был разработан прототип.

Следующим шагом была попытка бутстрап компилятор в системе Windows, требующий достаточной эмуляции Unix, чтобы позволить GNU configure сценарий оболочки запустить. А Оболочка Борна -совместимый интерпретатор команд, такой как трепать, был нужен и, в свою очередь, вилка эмуляция системного вызова и стандартный ввод / вывод. 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 в качестве коммерческого продукта.[16] представляет интерес сам по себе, хотя последующие версии не были выпущены, вместо этого полагаясь на продолжающиеся выпуски с открытым исходным кодом.

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

Функции

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

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

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

В Cygwin Порты Проект предоставил множество дополнительных пакетов, которые не были доступны в самом дистрибутиве Cygwin. Примеры включены ГНОМ и K Среда рабочего стола 3 так же хорошо как MySQL база данных и PHP язык сценариев. Большинство портов были приняты разработчиками-добровольцами как пакеты Cygwin, а порты Cygwin больше не поддерживаются.

Рекомендации

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

внешняя ссылка